One core per compute unit что это

Видеокарты – это не только показатель фпс в новейших играх, это еще и первобытная мощь параллельных вычислений, оставляющая позади самые могучие процессоры. В видеокартах таится множество простых процессоров, умеющих лихо перемалывать большие объемы данных. GPU-программирование – это та отрасль параллельных вычислений где все еще никак не устаканятся единые стандарты – что затрудняет использование простаивающих мощностей.

В этой заметке собрана информация которая поможет понять общие принципы GPU-программирования.

См. также раздел See also

  • UserVoice: предложения пользователей по улучшению SQL Server UserVoice: Have suggestions for improving SQL Server?
  • Вопросы и ответы по продуктам Майкрософт (SQL Server) Microsoft Q & A (SQL Server)
  • DBA Stack Exchange (тег sql-server): вопросы по SQL Server DBA Stack Exchange (tag sql-server): Ask SQL Server questions
  • Stack Overflow (тег sql-server): ответы на вопросы по разработке приложений SQL Stack Overflow (tag sql-server): Answers to SQL development questions
  • Reddit: общее обсуждение по SQL Server Reddit: General discussion about SQL Server
  • Условия лицензии и информация о Microsoft SQL Server Microsoft SQL Server License Terms and Information
  • Варианты поддержки для бизнес-пользователей Support options for business users
  • Обратиться в Майкрософт Contact Microsoft
  • Дополнительная справка и отзывы по SQL Server Additional SQL Server help and feedback

Программирование для GPU

Выполнение программы на GPU

Программы пишутся на расширении языка Си от NVidia/OpenCL и компилируются с помощью специальных компиляторов входящих в SDK. У каждого производителя разумеется свой. Есть два варианта сборки – под целевую платформу – когда явно указывается на каком железе будет исполнятся код или в некоторый промежуточный код, который при запуске на целевом железе будет преобразован драйвером в набор конкретных инструкций для используемой архитектуры (с поправкой на вычислительные возможности железа).

Ядро - kernel

Выполняемая на GPU программа называется ядром – kernel – что для CUDA что для OpenCL это и будет тот набор инструкций которые применяются ко всем данным. Функция одна, а данные на которых она выполняется – разные – принцип SIMD.

Важно понимать что память хоста (оперативная) и видеокарты – это две разные вещи и перед выполнением ядра на видеокарте, данные необходимо загрузить из оперативной памяти хоста в память видеокарты. Для того чтобы получить результат – необходимо выполнить обратный процесс. Здесь есть ограничения по скорости PCI-шины – потому чем реже данные будут гулять между видеокартой и хостом – тем лучше.

Драйвер CUDA/OpenCL разбивает входные данные на множество частей (потоки выполнения объединенные в блоки) и назначает для выполнения на каждый потоковый процессор. Программист может и должен указывать драйверу как максимально эффективно задействовать существующие вычислительные ресурсы, задавая размеры блоков и число потоков в них. Разумеется, максимально допустимые значения варьируются от устройства к устройству. Хорошая практика – перед выполнением запросить параметры железа, на котором будет выполняться ядро и на их основании вычислить оптимальные размеры блоков.

Схематично, распределение задач на GPU происходит так:

Выполнение программы на GPU

Выполнение программы на GPU

work-item (OpenCL) или thread (CUDA) – ядро и набор данных, выполняется на Stream Processor (Processing Element в случае ATI устройств).
work group (OpenCL) или thread block (CUDA) выполняется на Multi Processor (SIMD Engine)
Grid (набор блоков такое понятие есть только у НВидиа) = выполняется на целом устройстве – GPU. Для выполнения на GPU все потоки объединяются в варпы (warp – CUDA) или вейффронты (wavefront – OpenCL) – пул потоков, назначенных на выполнение на одном отдельном мультипроцессоре. То есть если число блоков или рабочих групп оказалось больше чем число мултипроцессоров – фактически, в каждый момент времени выполняется группа (или группы) объединенные в варп – все остальные ожидают своей очереди.

Одно ядро может выполняться на нескольких GPU устройствах (как для CUDA так и для OpenCL, как для карточек ATI так и для NVidia).
Одно GPU-устройство может одновременно выполнять несколько ядер (как для CUDA так и для OpenCL, для NVidia – начиная с архитектуры 20 и выше). Ссылки по данным вопросам см. в конце статьи.

Модель памяти OpenCL (в скобках – терминология CUDA)

Модель памяти GPU

Здесь главное запомнить про время доступа к каждому виду памяти. Самый медленный это глобальная память – у современных видекарт ее аж до 6 Гб. Далее по скорости идет разделяемая память (shared – CUDA, local – OpenCL) – общая для всех потоков в блоке (thread block – CUDA, work-group – OpenCL) – однако ее всегда мало – 32-48 Кб для мультипроцессора. Самой быстрой является локальная память за счет использования регистров и кеширования, но надо понимать что все что не уместилось в кеши\регистры – будет хранится в глобальной памяти со всеми вытекающими.

Тестовый стенд

  • Материнская плата — ASUS ROG Strix Z590-F Gaming Wi-Fi (Bios 0708)
  • Процессоры — Intel Core i9-11900k и Intel Core i5-11600k
  • Оперативная память — G.Skill Trident Z Royal DDR4-4266 2*8Gb
  • Кулер — A-Data XPG Levante 360
  • Термоинтерфейс — Arctic MX-2
  • Видеокарта — Sapphire AMD Radeon RX 6800 XT 16Gb
  • Накопитель — M.2 SSD Samsung 970 Pro 512 Гб
  • Блок питания — Corsair RM850x мощностью 850 Вт
  • Монитор — ASUS PB298Q, 29″, 2560×1080, IPS
  • Система — Windows 10 Pro 64-bit 20H2

Для раскрытия оверклокерского потенциала процессоров использовалась материнская плата ASUS ROG Strix Z590-F Gaming Wi-Fi и высокочастотный комплект оперативной памяти G.Skill Trident Z Royal DDR4-4266 2*8Gb с чипами Samsung B-die. Место графического адаптера заняла видеокарта Sapphire AMD Radeon RX 6800 XT в референсном исполнении.

Тестовая система была собрана в виде открытого стенда. Для того, чтобы не испытывать проблем с перегревом процессоров во время экстремального разгона, была задействована система жидкостного охлаждения A-Data XPG Levante 360 c помпой Asetek 7-го поколения.

GPUs supported

Supported CUDA level of GPU and card. See also at Nvidia:

  • CUDA SDK 1.0 support for compute capability 1.0 – 1.1 (Tesla) [29]
  • CUDA SDK 1.1 support for compute capability 1.0 – 1.1+x (Tesla)
  • CUDA SDK 2.0 support for compute capability 1.0 – 1.1+x (Tesla)
  • CUDA SDK 2.1 – 2.3.1 support for compute capability 1.0 – 1.3 (Tesla) [30][31][32][33]
  • CUDA SDK 3.0 – 3.1 support for compute capability 1.0 – 2.0 (Tesla, Fermi) [34][35]
  • CUDA SDK 3.2 support for compute capability 1.0 – 2.1 (Tesla, Fermi) [36]
  • CUDA SDK 4.0 – 4.2 support for compute capability 1.0 – 2.1+x (Tesla, Fermi, more?).
  • CUDA SDK 5.0 – 5.5 support for compute capability 1.0 – 3.5 (Tesla, Fermi, Kepler).
  • CUDA SDK 6.0 support for compute capability 1.0 – 3.5 (Tesla, Fermi, Kepler).
  • CUDA SDK 6.5 support for compute capability 1.1 – 5.x (Tesla, Fermi, Kepler, Maxwell). Last version with support for compute capability 1.x (Tesla).
  • CUDA SDK 7.0 – 7.5 support for compute capability 2.0 – 5.x (Fermi, Kepler, Maxwell).
  • CUDA SDK 8.0 support for compute capability 2.0 – 6.x (Fermi, Kepler, Maxwell, Pascal). Last version with support for compute capability 2.x (Fermi) (Pascal GTX 1070Ti Not Supported).
  • CUDA SDK 9.0 – 9.2 support for compute capability 3.0 – 7.2 (Kepler, Maxwell, Pascal, Volta) (Pascal GTX 1070Ti Not Supported. CUDA SDK 9.0 and support CUDA SDK 9.2).
  • CUDA SDK 10.0 – 10.2 support for compute capability 3.0 – 7.5 (Kepler, Maxwell, Pascal, Volta, Turing). Last version with support for compute capability 3.x (Kepler). 10.2 is the last official release for macOS, as support will not be available for macOS in newer releases.
  • CUDA SDK 11.0 support for compute capability 3.5 – 8.0 (Kepler (in part), Maxwell, Pascal, Volta, Turing, Ampere (in part)). [37] New data types: Bfloat16 and TF32 on third-generations Tensor Cores. [38]
  • CUDA SDK 11.1 – 11.4 support for compute capability 3.5 – 8.6 (Kepler (in part), Maxwell, Pascal, Volta, Turing, Ampere). [39]

Core leveling mode что это в биосе

В данном материале приведены рекомендации по разгону на материнских платах ASUS линейки ROG Maximus VI (Intel Z87, Haswell).

Автор перевода и GreenTech Reviews не несут ответственности за вышедшие из строя комплектующие в результате установки неверных параметров. Данный материал несёт ознакомительный характер.

Оперативная память
При использовании двух модулей памяти устанавливайте их в красные слоты (расположены ближе к процессору).

iGPU (встроенное графическое ядро)
Встроенное графическое ядро при работе выделяет тепло. Логично, что при его отключении вы можете добиться лучших результатов разгона. Используйте PCI-Express видеокарту и в BIOS отключите (Disabled) уфнкцию iGPU Multi-Monitor Support для отключения графического ядра.

Охлаждение процессора
Используйте только самые лучшие системы охлаждения, т.к. процессоры в исполнении LGA1150 несколько горячее, чем могли бы быть и при больших нагрузках возможно срабатывание защиты (Thermal Throttling). При разгоне строго рекомендуется использовать такие системы охлаждения, которые обдували бы радиаторы на подсистеме питания. Или же обеспечить их обдув другими вентиляторами.
Процессоры Haswell очень чувствительны к температуре. Чем лучше вы их охлаждаете, тем сильнее можете разогнать. Экспериментально доказано, что при отрицательных температурах результаты разгона впечатляют даже при разумных значениях напряжений. Если вы планируете собрать систему, например, с фреоновой системой охлаждения, то обязательно позаботьтесь о изоляции электронных компонентов от конденсата. Температуру процессора можете смотреть в утилите CoreTemp.
Теперь можно переходить к рекомендациям по настройке системы в BIOS.

UEFI BIOS

На Maximus VI Extreme предустановлено 5 профилей настроек разгона. Они могут стать основой для разгона вашего экземпляра процессора — надо будет только немного скорректировать параметры.

Установите параметр Ai Overclock Tuner в значение Manual, чтобы получить доступ к управлению BCLK. Можете установить режим X.M.P. для установки всех основных параметров оперативной памяти в соответствием с характеристиками, заявленными производителем. Данный режим также может быть выбран в качестве базового, затем его настройки могут быть скорректированы.

CPU Strap устанавливает разные значения страпов для процессора. Это позволит разогнать BCLK до максимально возможных для вашего процессора значений.
Связь между частотами BCLK, PCIE и DMI такая: PEG Frequency = DMI Controller Frequency = 100 x (BCLK / CPU Strap).
Помните, что для разных процессоров работоспособные страпы могут отличаться.

Опция Source Clock Tuner будет недоступна, если значение CPU Strap не установлена в фиксированное значение.

Параметр PLL Selection может быть установлен в режим Self Biased Mode (SB-PLL), что скажется на лучшем разгоне BCLK (базовой частоты), но может ухудшиться работа PCI-E 3.0 из-за возрастания фазового дрожания цифрового сигнала (джиттера) PCI-E. Пользователь может установить режим Inductance/Capacitance Mode (SB-LC), чтобы минимизировать джиттер PCI-E для лучшей совместимости с PCI-E 3.0 устройствами.

Параметр Filter PLL может быть установлен в режим High BCLK Mode для достижения высоких значений BCLK, но это грозит увеличением джиттера. Такой режим работы обычно требуется, чтобы установить BCLK свыше 170 МГц. Если вам не нужны такие значения, то смело ставьте режим Low BCLK Mode.

ASUS MultiCore Enhancement надо включить (Enabled), чтобы система автоматически поднимала частоту процессора до максимального значения в соответствии с вашими настройками, когда они превышают стандартные значения.
Internal PLL Overvoltage надо включить (Enabled) для наибольшего разгона по множителю. Но также помните, что работа S3/S4 может приводить к невозможности работы некоторых модулей оперативной памяти.
Параметр CPU bus speed: DRAM speed ratio может быть установлен 100:100 или 100:133. Выбор одного из эти соотношений может быть полезным для установки точной частоты оперативной памяти. При соотношении частот DMI/PEG 1:1, при увеличении частоты DMI/PEG на 1%, частота памяти увеличится также на 1%.

Включение Xtreme Tweaking может добиться увеличения производительности в старых бенчмарках.

CPU Graphics Max. Ratio рекомендуется ставить на минимально возможное значение (25), чтобы встроенное графическое ядро не потребляло много энергии и не выделяло много тепла.

EPU Power Saving Mode рекомендуется выключить (Disabled), чтобы система не сбрасывала частоты и напряжения в режиме простоя.

Fully Manual Mode — эксклюзивный режим от ASUS, благодаря которому можно вручную настроить шесть ключевых напряжений на процессор. В этом режиме процессор не снизит ни одно из шести напряжений во время простоя, даже если включены EIST или C-States. Если вам нужно энергосбережение, то надо выключить эту опцию.

Три наиболее важных напряжения CPU Core Voltage, CPU Graphics Voltage, CPU Cache Voltage можно установить в режим ручной настройки (Manual), чтобы стали доступны опции CPU Core Voltage Override, CPU Graphics Voltage Override и CPU Cache Voltage Override. В этом режиме работы внутренний регулятор напряжений подаёт точное напряжение на CPU Vcore, CPU Graphics и CPU Cache. Этот режим начнёт работать как только значения Voltage Override превысят значения Auto. В этом режиме напряжения во время простоя не снизятся, даже если включены EIST или C-States.

Параметр Offset Mode открывает режим Offset Mode Sign для изменения напряжений CPU Core Voltage Offset, CPU Graphics Voltage Offset и CPU Cache Voltage Offset. Чтобы установить уровень смещения напряжения, изменяйте эти параметры. Режим Auto представляет собой настройку от профессиональных инженеров ASUS. Если изменить напряжение на минимальный шаг +-0.001 В, то вы получите напряжение по умолчанию.

В режиме Adaptive Mode будет доступен режим Offset Mode и дополнительный режим Additional Turbo Mode Voltage для CPU Vcore, CPU Graphics и CPU Cache. Адаптивный режим можно считать расширением оффсетного режима. Дополнительно заданное напряжение будет активно во время работы Turbo Boost. Режим Auto представляет собой настройку от профессиональных инженеров ASUS. Если изменить напряжение на минимальный шаг +-0.001 В, то вы получите напряжение по умолчанию.

Отключение функции SVID Support прекращает взаимодействие процессора с внешним регулятором напряжения. При разгоне рекомендуется значение Disabled.
Разделение напряжений на Initial CPU Input Voltage и Eventual CPU Input Voltage позволятее более точно задать напряжения до и после прохождения POST. Это позвляет «неудачным» процессорам пройти POST с более высоким напряжением и снизить его для дальнейшей работы.

CPU Spread Spectrum надо выключать (Disabled) при разгоне процессора.

BCLK Recovery надо включить (Enabled) при разгоне процессора, чтобы система могла загрузиться в BIOS в безопасном режиме при некорректно выставленных настройках частоты.

CPU Load-Line Calibration можно установить на максимальный уровень (8) для того, чтобы напряжение не проседало при нагрузке на процессор в разгоне. Уровень можно снизить для снижения энергопотребления и тепловыделения, если система остаётся стабильной.

Параметр CPU Voltage Frequency может быть установлен в режим «Manual», чтобы выбрать фиксированную частоту. Чем выше частота, тем стабильнее входное напряжение (CPU Input Voltage). Увеличение этой частоты может дать увеличение разгона BCLK, но всё зависит от экземпляра процессора (некоторым может требоваться меньшая частота для больших значений BCLK). Настоятельно рекомендуется включить Enable VRM Spread Spectrum или Enable Active Frequency Mode, если вы не намерены устанавливать фиксированное значение частоты процессора.

VCCIN MOS Volt Control можно увеличить для повышения стабильности, но и нагрев будет усиливаться. Если выставить значение Active VGD, то VCCIN MOS Volt Control будет динамически подстраиваться в зависимости от загрузки процессора.

CPU Power Phase Control надо установить в значение Extreme, чтобы были активны все фазы. Иначе во время простоя некоторые фазы неактивны. Это может позволить увеличить разгон по частоте.

CPU Power Duty Control надо установить в значение Extreme. В таком режиме предпочтение отдаётся подаче напряжения на iVR, а не балансу с температурой. В таком режиме можно получить чуть больший разгон.

CPU Current Capability устанавливаем 140%, чтобы сдвинуть порог срабатывания защиты от перегрузки по току. Это позволит увеличить разгон.

Читайте также:  Запуск блока питания без материнской платы

Значение CPU Power Thermal Control можно увеличить, если у вас проблемы с перегревом питания. Но настоятельно рекомендуется не изменять данный параметр. Если у вас проблемы из-за перегрева, то лучше поставить дополнительное охлаждение на радиатор подсистемы питания.

CPU Input Boot Voltage — начальное напряжение от подсистемы питания (Extreme Engine DIGI+ III) на интегрированный контроллер напряжений (FIVR — Fully Integrated Voltage Regulator), которое используется до того, как загружается BIOS. Это напряжение активно до того, как применяется напряжение Initial CPU Input Voltage, заданное из Extreme Tweaker. Тщательный подбор данного напряжения может помочь в достижении максимальной частоты процессора.

CPU Current Capability в значении 130% сдвигает порог срабатывания защиты от перегрузки по току для DRAM VRM. Способствует увеличению разгона оперативной памяти.

DRAM Voltage Frequency в Manual позволяет вручную настроить частоту VRM. Чем выше частота, тем стабильнее напряжение vDDR, что позволит добиться большего разгона памяти (не забываем, что для каждой планки разгон разный).

DRAM Power Phase Control в значении Extreme не допускает отключения фаз питания памяти. Это может позволить увеличить разгон памяти или увеличить стабильность работы, если модули памяти установлены во всех слотах.

Long Duration Packet Power Limit определяет максимальное значение для срабатывания троттлинга когда потребляемая мощность превышает определенный уровень. Можно сказать, что это первый уровень защиты процессора от повреждения. По умолчанию, это значение TDP от Intel. Если оставить в режиме «Auto», то будет установлено значение, рекомендуемое экспертами ASUS (OC Expert Team).

Package Power Time Window — значение в секундах, которое указывает сколько процессору дозволено работать с превышением TDP (то значение, которое мы задали в Long Duration Package Power Limit). Максимально возможное значение — 127.

Short Duration Package Power Limit указывает максимально возможное потребление энергии при очень кратковременных нагрузках, чтобы избежать нестабильности системы. Это можно считать вторым уровнем защиты процессора. Intel считает нормальным значение 1.25 от Long Duration Package Power Limit. Хотя по спецификации Intel для срабатывания Short Duration Package Power Limit кратковременные нагрузки могут быть не более 10 мс, материнские платы ASUS могут выдерживать гораздо большее время.

CPU Integrated VR Current Limit определяет максимальный ток от CPU Integrated Voltage Regulator при экстремально высоких нагрузках. Максимальное значение 1023.875 по сути отключает снятие лимита для iVR, который отключает троттлинг из-за превышения стандартных параметров тока при разгоне.

Frequency Tuning Mode определяет скорость работы процессора с iVR. Значение +6% обеспечит более стабильную подачу всех шести основных напряжений. Снижение этого параметра может снизить температуру на несколько градусов.

Thermal Feedback определяет будет ли процессор троттлить при перегреве внешней подсистемы питания. Эта настройка определяет будет ли работать защита от перегрева подсистемы питания. Если отключаете эту защиту, то настоятельно рекомендуется контроллировать температуру радиатора.

CPU Integrated VR Fault Management рекомендуется выключить, если повышаете напряжение вручную. Отключение может быть полезно при разгоне.

CPU Integrated VR Efficiency Management рекомендуется установить в режим High Performance, чтобы увеличить разгонный потенциал. Режим Balanced принесёт небольшую экономию энергии.

Power Decay Mode отвечает за энергосбережение в простое. При разгоне рекомендуется выключать (Disabled).

Idle Power-in Response при разгоне рекомендуется устанавливать в режим Regular. Режим Fast устанавливается для снижения энергопотребления.

Idle Power-out Response при разгоне рекомендуется устанавливать в режим Fast, что позволяет подавать на процессор чуть более высокое напряжение с наименьшими задержками.

Параметр Power Current Slope при значении LEVEL-4 сдвигает время троттлинга чуть дальше.

Power Current Offset определяет смещение параметра Power Current Slope. Значение -100% сдвигает время троттлинга процессора.

Power Fast Ramp Response определяет насколько быстро должен реагировать iVR на запрос напряжение процессором. Чем выше значение, тем быстрее будет реакция. Можно установить значение 1.5 для улучшения разгона.

Power Saving Level 1 Threshold определяет минимальный уровень энергопотребления, когда процессор должен запустить троттлинг. Установите для отключения этой функции.

Power Saving Level 2 Threshold — аналогично пункту выше.

Power Saving Level 3 Threshold — аналогично пункту выше.

VCCIN Shadow Voltage — напряжение, которое подаётся от внешней подсистемы питания на внутренний контроллер питания во время прохождения POST. Это напряжение активно между CPU Input Voltage и Eventual CPU Input voltage. В режиме Auto напряжение будет задано автоматически, не выше и не ниже безопасных порогов.

Termination Anti-Aliasing рекомендуется включить (Enabled) для улучшения разгона.

PLL Termination Voltage (Initial / Reset / Eventual) рекомендуется менять при экстремальном разгоне при отрицательных температурах. Номинальное значение 1.2 В. Безопасные напряжения — до 1.25 В и выше 1.6 В. Не устанавливайте напряжение между 1.25 В и напряжением iVR, чтобы избежать быстрой деградации процессора.
При разгоне BCLK свыше 160 Мгц не забывайте настроить напряжения PLL Termination Reset Voltage и Eventual PLL Termination Voltage на одинаковый уровень с Eventual CPU Input Voltage или выше. Например, если Eventual CPU Input Voltage равно 1.9 В, то PLL Termination Reset Voltage и Eventual PLL Termination Voltage должны быть 1.9 В или выше для достижения оптимального эффекта.
Если вы не планируете разгонять BCLK свыше 160 МГц, то PLL Termination Voltage надо снизить до 1.1 или 1.0 В. Проще говоря, установите это значение до 1.25 В или на равне с CPU Input Voltage для достижения оптимального результата.

X-Talk Cancellation Voltage можно увеличить, если система работает нестабильно (например, BSOD 0124). Но эффект будет противоположным, если Max. Vcore Voltage работает под режимом LN2 — в этом случае уменьшение напряжение увеличит стабильность. По умолчанию — 1.00 В.

Cancellation Drive Strength управляет режимом работы X-Talk Cancellation Voltage.

PCH ICC Voltage — напряжение на интегрированный генератор тактов. По умолчанию — 1.2 В.
Для высокой частоты DMI (>=115 МГц) — пробуйте 1.2500 В или ниже.
Для низкой частоты DMI ( = 120 МГц).

DMI De-emphasis Control можно изменить вручную для лучшего разгона DMI. Но значение +6 является оптимальным.

Параметр SATA Drive Strength может быть настроен вручную для улучшения стабильности работы SATA. По умолчанию — 0. Можно пробовать менять в обе стороны.

CPU PCIE Controller в режиме Disabled отключает встроенный в процессор PCIEx16 контроллер для увеличения производительности в 2D бенчмарках. В таком случае рабочим остаётся только слот PCIE_x4_1.

GEN3 Preset в режиме Auto является оптимальным значением. Но можете попробовать все три предустановленных профиля и выбрать самый производительный. Особенно это полезно при тестировании конфигураций SLI или CrossFireX.

PLX 0.9V Core Voltage / PLX 1.8V AUX Voltage — управление напряжением на PLX PEX8747 (мост PCIE 3.0).

PCIE Clock Amplitude можете настроить вручную, подобрав наилучший режим при высокой частоте PCIe (из-за высокой частоты BCLK). Чаще всего, выше — лучше.

Internal Graphics (встроенное графиеское ядро) желательно отключить для улучшения разгона.

Рекомендуется отключить все неиспользуемые устройства и контроллеры для увеличения стабильности системы в разгона и вообще для достижения наилучших результатов.

Некоторые параметры рекомендуется оставлять в режиме Auto, доверившись профессионалам из команды ASUS.

Данная статья является вольным переводом официальной статьи ASUS ROG.
Если вы нашли какую-либо неточность, то сообщите об этом в официальном сообществе ASUS Republic of Gamers (ROG) Россия или GreenTech Reviews.

IOMMU [Disabled]

Set this item to [Enabled] to show IOMMU Mode. Configuration options: [Enabled] [Disabled]

Bank Interleaving [Enabled]

Enables or disables the bank memory interleaving. Configuration options: [Enabled] [Disabled]

Channel Interleaving [Enabled]

Enables or disables the channel memory interleaving. Configuration options: [Enabled] [Disabled]

Core Leveling Mode [Automatic mode]

Allows you to change the number of working Compute Unit on the system. Configuration options: [Automatic mode] [One core per processor] [One Compute Unit] [One core per Compute Unit]

3.5.2 SATA Configuration

While entering Setup, the BIOS automatically detects the presence of SATA devices. The SATA Port items show Not Present if no SATA device is installed to the corresponding SATA port.

OnChip SATA Channel [Enabled]

Enables or disables onboard channel SATA port. Configuration options: [Disabled] [Enabled]

OnChip SATA Type [AHCI]

Allows you to set the SATA configuration.

Set to [IDE] when you want to use the Serial ATA hard disk drives as

Parallel ATA physical storage devices.

Set to [RAID] when you want to create a RAID configuration from the SATA

hard disk drives.

Set to [AHCI] when you want the SATA hard disk drives to use the AHCI

(Advanced Host Controller Interface). The AHCI allows the onboard storage

driver to enable advanced Serial ATA features that increases storage

performance on random workloads by allowing the drive to internally

optimize the order of commands.

SATA Port 5, 6; ESATA 7,8 [AHCI]

This item only appears when OnChip SATA Type is set to [AHCI]. If SATA ports 5 and 6 are configured as [AHCI], the ports can only be used under OS with driver installed. Set to [IDE] instead of [AHCI] to access devices on SATA ports 5 and 6 before entering OS. Configuration options: [AHCI] [IDE]

В данной статье приводится ряд параметров BIOS для "мягкого" повышения производительности и разгона. Принято параметры настроек искать в разделе Frequency/Voltage Control, но в зависимости от производителя материнской платы, параметры для разгона могут отличаться, и находится в разных разделах. Так, например,

для плат ASUS — это раздел JumperFree Configuration,
для плат Gigabyte — МВ Intelligent Tweaker,
для плат MSI — Cell Menu,
для плат ABIT — SoftMenu Setup или Guru Utility

В любом случае необходимо ознакомится и инструкцией, которая идет в комплекте с материнской платой, и где описаны все параметры для данной платы.

Предупреждение: Неправильное изменение рабочих частот и напряжений может привести не только к неработоспособности системы, но и выходу отдельных компонентов платы.

Некоторые производители плат применяют технологию, когда в BIOS есть параметры для общего разгона, а не отдельных компонентов.

CPU Intelligent Accelerator 2 (C.I.A. 2 — технология динамического разгона) Доступные значения:

  • Disabled — технология динамического разгона не используется
  • Cruise, Sports, Racing, Turbo, Full Thrust — задает уровень ускорения процессора от 5 %(Cruise)до 19%(Full Thrust)

Тор Performance — настраивает систему на максимальную производительность Этот раздел есть только в некоторых платах от Gigabyte и он скрытый. Для его запуска нажмите CtrL+F1. Доступные значения:

  • Еnabled — включен, будут повышены рабочие частоты системы и уменьшены тайминги оперативной памяти
  • Disabled — Тор Performance отключен

Замечание: в свое время я пытался задействовать этот режим, но иногда система вылетала в синий экран. Пришлось отказаться, возможно стояли не качественные компоненты, поэтому применять этот параметр надо осторожно.

Robust Graphics Booster — ускоряет работу видеосистемы, увеличивая тактовые частоты видеоадаптера в платах от Gigabyte. Доступные значения:

  • Auto — видеосистема работает на тактовых частотах по умолчанию
  • Fast, Turbo — видеосистема работает на повышенных частотах

Dynamic Overclocking (D.O.T. — технология динамического разгона для плат от MSI) Доступные значения:

  • Private, Sergeant, Captain, Colonel, General, Commander — выбор одного из значений позволит задать уровень ускорения процессора от 1% — для Private, до 15% — для Commander
  • Disabled — отключен

AI Overclocking, АI Tuning — параметр разгона для плат от ASUS. Доступные значения:

  • Маnuаl — все параметры разгона изменяются вручную
  • Auto — устанавливаются оптимальные параметры
  • Stаndard — загружаются стандартные параметры
  • Non-Delay Оvегсlосking System — технология динамического разгона

Overclock Options — определяет уровень разгона системы. Доступные значения:

  • Overc1ock З %, Оvеrс1осk 5%, Overc1ock 8%, Overc1ock 10% — задает величину разгона системы в процентах от штатной частоты.
  • Disabled — разгон не используется

Memory Performance Enhance, Performance Enhance, Performance Mode — повышает производительность оперативной памяти. Доступные значения:

  • Fast, Turbo и Extreme — выбор уровня разгона. (Для разгона памяти, желательно ставить качественные комплектующие)
  • Standard — разгон не используется

Auto DisabIe DIMM/PCI Frequency, Auto Detect DIMM/PCI Clk — используется для снижения электромагнитных помех от компонентов системной платы. Доступные значения:

  • Disabled — режим снижения электромагнитного излучения отключен. Рекомендуется при разгоне.
  • Enabled — ВIOS будет автоматически отключать неиспользуемые слоты РСI и оперативной памяти для снижения уровня электромагнитных излучений

Остальные параметры для ручного разгона требуют более осторожного применения, так как могут вывести из строя компоненты системной платы. Еще раз предупреждаю, что не используйте разгон, если в этом нет большой необходимости. Воспользуйтесь советами по оптимизации системы более безопасными способами.

Методика разблокирования

Для разблокирования ядер пользователю необходимо обратиться к средствам BIOS. В случае поддержки материнской платой технологии ACC в большинстве случаев достаточно найти в BIOS параметр Advanced Clock Calibration и установить в нем значение Auto.

В случае материнских плат отдельных производителей могут потребоваться также и некоторые дополнительные действия. На материнских платах ASUS необходимо помимо ACC включить опцию Unleashed mode, на платах MSI – опцию Unlock CPU Core, на платах NVIDIA – опцию Core Calibration. На платах Gigabyte необходимо найти опцию EC Firmware Selection и установить в нем значение Hybrid.

На тех чипсетах, которые не поддерживают технологию ACC, методика разблокировки зависит от конкретного производителя. Перечислим кратко опции, которые необходимо использовать в случае каждого конкретного производителя:

  • ASUS — ASUS Core Unlocker
  • Gigabyte — CPU Unlock
  • Biostar — BIO-unlocKING
  • ASRock — ASRock UCC
  • MSI — Unlock CPU Core

Моя первая виртуальная машина: как не накосячить

Итак, вот перед вами свеженькая организация в vCloud Director, и вам только предстоит создать свою первую виртуальную машину. Сегодня расскажу, какие настройки выбирать при создании виртуальной машины, чтобы она работала и не просила есть. Поехали!


Источник: drive2.ru

Операционная система. Выбирайте современные дистрибутивы. Если берете Windows 2008 R2 и более старую или Linux до ядра 4.19.x, ждите проблем. Каких? Ну, например, вендор уже перестал поддерживать актуальное состояние Windows 2008 R2 аж в 2013 году (EOL). Это означает, что он больше не разрабатывает драйвера под вышедшее с тех пор железо, не модифицирует ОС под новое что угодно. С древними операционками вы точно не сможете использовать все возможности, которые предоставляет современный гипервизор. А уже в эти новогодние праздники остро встанет проблема с безопасностью, так как 14 января 2020 года заканчивается расширенная поддержка Windows Server 2008 R2 и перестанут выходить Security Update.

Cores per socket. Оставляйте 1 ядро на сокет, ставьте столько сокетов, сколько вам нужно виртуальных процессоров. Да, логично наоборот, но правильно так. Если у вас нет специализированных лицензионных требований. Например, вы платите за сокет, а больше сокетов означает больше лицензий. Не ставьте 2/2, чтобы получить 4. Сделайте 4/1. Такую машину гипервизор будет обслуживать оптимальным образом. Scheduler гипервизора будет меньше пенализировать такие ВМ.
Объясню на пальцах. Представьте, что проводник рассаживает пассажиров по вагону, вагон – как в Сапсане. В роли проводника scheduler, пассажиры – это ВМ. Пассажиров, которые едут в одиночку (однопроцессорные ВМ), ему распределить проще всего: их можно посадить на любое место. Семью из 4 человек (4-процессорные ВМ) уже сложнее. Им нужно найти 4 места в одном вагоне. А теперь представим, что все в семье хотят ехать только лицом друг другу, а таких групп мест – 4 вокруг стола – в вагоне только 2. С большой вероятностью такой семье придется пройти в следующий вагон (на следующий тик планирования). Это как раз та ситуация, как если бы вы выбрали 2 сокета по 2 ядра, чтобы получить 4. Скорее всего, придется подождать, чтобы нашлись подходящие места. Так же и с ВМ: ей придется ждать дольше, чем менее “прихотливым” ВМ с 1 сокетом и кучкой процессоров.

Читайте также:  Текстовые редакторы для Андроид

Хотя эта история актуальнее для старых версий ESXi. Начиная с 6.5 (но не ранее!) механизм vNUMA отвязан от количества виртуальных сокетов, и старая рекомендация “не плодить сокеты” не так категорична. Но все еще зависит от приложения внутри гостевой ОС.

Hot Add для CPU и Memory. Это опция добавления памяти CPU для работающей виртуальной машины. Казалось бы, прекрасная функция: не нужно гасить машину, чтобы докинуть ей ресурсов. Так вот, не все так просто, и не зря они по дефолту отключены. Лучше и не включать, если вы не знаете, что такое NUMA-топология. Допустим, под капотом облака у нас двухсокетный сервер. На каждом сокете 4 ядра. Работает это именно как 4+4, а не 8 ядер. Такая же тема с памятью: если на каждом сокете 128 ГБ, это не дает в сумме 256 ГБ. Каждый процессорный сокет имеет прямой доступ только к определенным слотам памяти. Каждый сокет вместе с причитающейся ему процессором и памятью – это физическая NUMA-нода.

Если виртуальная машина влезает в размер физической NUMA-ноды, то она исполняется внутри этой ноды. Если виртуалка не умещается в NUMA-ноду, например по памяти, то она будет использовать память из соседней NUMA-ноды. Путь к удаленной памяти будет извилист – через межпроцессорную шину. Работать это будет не так быстро, как если бы виртуалка использовала ресурсы одной ноды.

Когда вы включаете добавления виртуальных процессоров и памяти на горячую, все это идет только в нулевую NUMA-ноду. Например, добавилось еще 4 процессора, и на NUMA-ноде 0 стало 6, а на NUMA-ноде 1 – 2 процессора. Машину немного перекосило, и работает она также косо. Это связано с тем, что при включении vCPU Hot-Plug перестает работать vNUMA, через которую vSphere старается оптимизировать топологию NUMA для ВМ. Поэтому, принимая решение о включении CPU Hot-Add, учитывайте физическую топологию NUMA для обеспечения производительности ВМ. Это очень критично, если по каким-либо причинам в ВМ имеется несколько виртуальных сокетов. В этом случае несоответствие физической топологии вызовет сильное падение производительности: CPU Scheduler сойдет с ума, пытаясь предоставить процессорное время такой ВМ, что вызовет рост CPU Ready и Co-Stop.


Все добавленные виртуальные процессоры (5-8) и память попали на NUMA-ноду 0.

Отдельная история в том, что будет происходить внутри ОС и приложения после таких “добавок”. Поэтому если уж решили пользоваться этой опцией, то проверьте, поддерживает ли ваша ОС такое. Non-NUMA-Aware приложения могут сильно просесть по производительности при расположении на нескольких NUMA-нодах.

Если вы все-таки добавили процессоры или память на горячую, сразу планируйте перезагрузку ВМ (не только ОС) на ближайший запланированный даунтайм.


Галочки не ставим.

Дисковый контроллер (Bus type). Для дисков выбирайте дисковый контроллер Paravirtual. Этот тип контроллера требует установки драйверов в ОС VMware Tools. Paravirtual – это специальное виртуальное устройство, которое создавалось для работы в виртуализации и не эмулирует работу какого-то другого аппаратного устройства. Любая эмуляция аппаратного устройства всегда работает медленнее.

Если вы не хотите использовать Paravirtual (но почему?), выбирайте LSI Logic SAS. Если ОС не поддерживает и его — LSI Logic Parallel. Никогда не используйте SATA и IDE. ВМ будет медленно работать, в итоге вы не получите производительности, за которой идут в облако.

При инсталляции ОС даже свежая версия Windows может не найти драйвер для Paravirtual адаптера. В этом случае примонтируйте к ВМ два ISO файла — ваш загрузочный образ Windows и диск с VMware tools. На последнем есть необходимый драйвер.

Сетевой адаптер. Правильный выбор – VMXNet3. VMXNet3, как и дисковый адаптер Paravirtual, это паравиртуальное устройство. Оно также требует драйверов, которые входят в VMware Tools.

Если вдруг VMXNet3 не подходит (проявляется какая-то несовместимость), то на крайний случай используйте E1000E. Но не ожидайте от адаптера E1000E производительности больше, чем 1 Гбит.

В общем, E1000E без прямых указаний вендоров не используйте. Казалось бы, оно новее, но сделано для обеспечения еще большей совместимости c legacy.


Вот не надо E1000E.

VMware Tools. Следите, чтобы они были установлены в ОС, запущены и актуальны. В VMware Tools входят драйвера устройств и разные другие компоненты, которые позволяют общаться ОС виртуальной машины с гипервизором, и наоборот. Через них происходит синхронизация времени ОС с хостом виртуализации (отключаемо), ходят heartbeat’ы, которые показывают гипервизору, что виртуалка жива, и прочее. Для работы ОС на виртуальной машине нужны как минимум драйверы сетевой карточки, дискового адаптера. Свежие версии всего вот этого входят в VMware Tools.

По умолчанию актуальные версии Windows и Linux имеют драйвера для работы с виртуальными устройствами VMware, но если у вас будут VMware Tools, то эти драйвера будут всегда свежими. Для Linux рекомендуется использовать open-vm-tools. Это не просто лучшая интеграция с ОС, но и обновление драйверов вместе с системой.

Отдельные диски для данных. Используйте разные виртуальные диски под данные и операционную систему. Да и на физических серверах стоит так делать. Вы сможете отдельно бекапить эти диски (с разным расписанием, например), сможете переключить диск с данными или его клон на другую ВМ и прочее.

Кроме того, новый виртуальный диск также получит дополнительную квоту на дисковую производительность.

Кастомизация. При первом включении ВМ нужно кастомизировать, чтобы все настройки из облака (например выданный облаком IP-адрес) применились к ОС. После уберите эту галку от греха подальше, чтобы нечаянно не сбросить настройки ОС: SID, пароль администратора и т. п.

Конечно, все вышесказанное – упрощенная картина, слова “капитана О” и, вообще, “все же это знают”. Но, как показывает практика, более 70% ВМ в облаке содержат одну или сразу несколько описанных ошибок.

Что вынуждает ядро входить в определенное С-состояние?

  • В состояние С0 ядро входит при загрузке, когда происходит прерывание, или после записи по адресу памяти, который отслеживается инструкцией MWAIT.
  • Состояния C1/C1E достижимы с помощью инструкций HLT и MWAIT.
  • Войти в состояние С3 можно с помощью инструкции MWAIT. Затем кэши L1 и L2 сбрасываются в кэш верхнего уровня (LLC), и все тактовые генераторы процессора останавливаются. Тем не менее, ядро сохраняет свое состояние, так как не обесточено.
  • Вход в состояние С6 возможен через инструкцию MWAIT. Ядро сохраняет состояние на выделенную SRAM и напряжение на ядре снижается до нуля. В этом состоянии ядро обесточено. При выходе из C6 состояние ядра восстанавливается из SRAM.
  • Для C7 и C8 аналогично C6.

Как отмечалось ранее, переходы между глубокими С-состояниями имеют высокие задержки и высокие энергетические затраты. Таким образом, такие переходы должны выполняться с осторожностью, особенно на устройствах, работающих от аккумуляторов.

Микрокомпьютеры семейства Intel Compute Card: подробное изучение нового направления на примере двух карт и настольного дока

Увеличение степени интеграции компьютерных платформ, вкупе с освоением все более тонких технологических процессов производства чипов, позволяют производителям выпускать все более и более компактные компьютерные системы. Особенно заметно это в сегменте мобильных решений, но сегодня мы будем говорить о стационарных компьютерах. Ведь и последние давно уже не ограничиваются настольными системами, занимающими весь этот самый стол.

В частности, данным направлением активно занимается компания Intel, первым шагом которой на этом пути были компьютеры семейства NUC (что расшифровывается как Next Unit of Computer), появившиеся на рынке уже пять лет назад. Сегодняшние модели NUC далеко ушли от своих прародителей, предлагая пользователям заметно более высокую мощность (как процессорную, так и графическую), развитые периферийные возможности и все остальное, но все в том же компактном корпусе. Собственно, NUC является ближайшим родственником обычного десктопа — просто маленьким. Поэтому количественные характеристики у него уменьшены, но качественные — остаются на месте, включая возможность гибкого конфигурирования системы хранения данных (поддерживается до двух накопителей — причем включая винчестеры) и емкости оперативной памяти, для подключения периферии есть уже пять портов USB, да и мониторов к такой системе может быть подключено до трех штук. Словом, это компактный настольный компьютер, пригодный для решения широкого круга задач.

Три года назад появились первые компьютеры семейства Intel Compute Stick, рассчитанные на подключение непосредственно к монитору или телевизору, поэтому выполненные в характерном форм-факторе HDMI-донгла. Уменьшение размеров требует и снижения производительности, поскольку мощный процессор в компактном корпусе сложно охлаждать. Но хуже другое: в данном случае пришлось идти уже и на качественные ограничения. В частности, в Compute Stick пользователь ограничен встроенным флэш-накопителем (к которому можно добавить разве что карту памяти), только беспроводной сетью, одним устройством отображения и т. д. Разумеется, один-два порта USB позволяют решить многие проблемы с подключением периферии, но при этом теряется смысл компактности самого устройства, да и ворох кабелей (а возможно, и хабов) начинает выглядеть слишком неэстетично. Таким образом, Compute Stick уже не является универсальной системой — он хорош там, где нужна максимальная компактность и не требуются возможности расширения.

В то же время мощность современных процессоров семейства Atom, не говоря уже о Core m, также применяемых в Compute Stick в комплекте с 4 ГБ памяти и накопителем на 64 ГБ или более, тоже в принципе достаточна для решения широкого спектра повседневных задач — будь то дополнительный домашний компьютер или рабочее место в офисе. Но такому комплекту не всегда хватает периферийных возможностей. Именно над решением этой проблемы работали инженеры компании, что и привело к появлению в прошлом году Intel Compute Card.

Отметим, что, в отличие от упомянутых решений, Compute Card не является как таковым законченным компьютером, а представляет собой своеобразный модуль, который для практического использования должен быть установлен в док-станцию. Причем док-станция не обязательно нужна отдельная — это может быть соответствующий разъем непосредственно в телевизоре, мониторе или планшете, так что на практике Compute Card может оказаться даже компактнее Compute Stick: наружу ничего торчать не будет. А по сравнению со встраиванием тех же компонентов непосредственно в телевизор, моноблок и т. п. мы получаем более гибкое конфигурирование системы (поскольку доступны карты с разной начинкой), возможность ее модернизации (поскольку со временем будут выпускаться новые модели), а также облегчение ремонта. В частности, не нужно будет везти в сервис весь моноблок, когда достаточно поменять либо сам «монитор», либо карту. Также это может выйти дешевле, что тоже обычно считается плюсом модульных систем перед законченными решениями all-in-one.

Во всяком случае, так всё выглядит по задумке Intel и в перспективе. Тем не менее, готовые продукты на базе Compute Card тоже уже существуют, их можно покупать и использовать, так что сегодня мы займемся их подробным изучением.

Дизайн и коммутация с внешним миром

Сама карта очень компактна: ее размеры составляют лишь 95×55×5 мм, она легко помещается в любой карман. Перемещаться с ней между местами с подготовленной инфраструктурой удобнее, чем возить с собой ноутбук — вот еще одно достоинство концепции. При этом внутри скрывается полноценный компьютер, более мощный, чем решения семейства Stick. Разумеется, периферийные устройства должны быть внешними, и для их подключения используется всего пара разъемов на одном из торцов.

USB Type-C в специальном исполнении считается основным, необходимым и достаточным — через него на карту подается питание. Остальные контакты используются либо для вывода изображения 4К и реализации порта USB 2.0, либо для реализации двух портов USB (2.0 и 3.0), но в паре с выводом видеосигнала только Full HD. Это абсолютный минимум, который может оказаться недостаточным, так что во многих случаях будет задействована и соседняя группа контактов — разъем Extension, добавляющий еще одно устройство отображения информации, пару портов USB и две линии PCIe 3.0. Особенно важны последние, поскольку в итоге док (куда устанавливается карта) может быть многофункциональным. Например, одну линию PCIe можно «отдать» под адаптер проводной гигабитной сети, а вторую — для SATA-контроллера на 2-4 диска. Тогда в соответствующем корпусе получится нечто типа NAS, но с заменяемой (и модернизируемой) платформой. Кроме того, линии PCIe, конечно, можно делить при помощи специальных концентраторов.

Но все это относится к докам, которые при такой концепции могут быть разнообразными (и даже весьма причудливыми). Основная же базовая начинка скрывается внутри карты и тоже может быть разной.

Аппаратная конфигурация

На данный момент представлены четыре модели карт, различающиеся в первую очередь процессором. Две младшие построены на базе четырехъядерных Celeron N3450 и Pentium N4200, старшие — уже на Core m3-7Y30 или даже Core i5-7Y57 с поддержкой технологий vPro и AMT. Собственно, главное требование к процессорам — укладываться в 6 Вт изначально или при помощи настройки TDP. (Практическое исследование показало, что Core m3-7Y30 в Compute Card работает немного быстрее, чем в режиме «по умолчанию», поскольку там ему вместо базового теплопакета в 4,5 Вт выдан как раз «шестиваттный».) Соответственно, по мере появления новых моделей можно выпускать и новые карты — совместимые с имеющейся инфраструктурой.

Оперативной памяти тоже может быть разное количество, но во всех текущих моделях установлено 4 ГБ LPDDR3L-1866, работающей в двухканальном режиме. Емкость с точки зрения сегодняшнего дня невысокая, но в ряде случаев все же достаточная. При наличии интереса покупателей к большим объемам удовлетворить его проблем не составит.

Системный накопитель зависит от типа процессора. «Атомное» семейство ограничивается модулем eMMC 5.0 HS400 на 64 ГБ (нам в руки попал SanDisk DF4064, но возможны разные варианты), в старших же установлен «настоящий» SSD Intel 600p 128 ГБ. Впрочем, как мы давно знаем, эта модель к высокопроизводительным не относится — даже если говорить о модификациях большей емкости, а 128 ГБ в таком исполнении тем более будут еще более медленными. Но это все-таки SSD, который как минимум должен отличаться от eMMC, не говоря уже о винчестерах. А в дальнейшем — возможны изменения. Например, при наличии спроса Intel может устанавливать более удачный 760p, причем большей емкости. Да и eMMC-модули не ограничены уже емкостью 64 ГБ. Просто в условиях подросших цен на флэш-память пришлось пойти на некоторые ограничения, но они не вечны.

Во всех моделях уже установлен беспроводной сетевой адаптер Intel Wireless-AC 7265 с поддержкой двухдиапазонного Wi-Fi 802.11ac 2×2 (до 866 Мбит/с) и Bluetooth 4.2. По сути, это основной сетевой интерфейс, не зависящий от конкретного дока и работающий всегда. А вот проводные интерфейсы и конкретные разъемы уже не слишком зависят от карт, но целиком и полностью определяются доком.

Intel Compute Card Dock DK132EPJ

По задумке компании, инфраструктура для Compute Card — вотчина партнеров, работа с которыми началась еще до выпуска самих устройств. Некоторые из партнеров уже показали интересные устройства на Computex 2017, причем разные — от телевизоров до моноблоков и планшетов. Но во избежание возможных «проблем со смежниками» Intel выпустила и свой док. Это просто док — превращающий карту в настольный компьютер.

Док-станция DK132EPJ имеет размеры 160×147×20,5 мм, что меньше, чем у многих «монолитных» мини-ПК. Поэтому и VESA-крепление в комплекте исключительно востребованно: при такой-то толщине за телевизором устройство спрячется совершенно незаметно — в отличие от торчащего Compute Stick, например. Функциональные же возможности вполне сопоставимы с последними. Например, есть три USB-порта — один спереди и два сзади.

В самых первых NUC было столько же, однако теперь все порты соответствуют спецификации USB 3.0. Спереди же вставляется и сам модуль, причем возможность его извлечения из дока можно заблокировать. Но даже если этого не сделать, то при нажатии кнопки извлечения работа сначала будет корректно завершена, а потом уже компьютер «выедет» в руки пользователя.

Читайте также:  Заполнена внутренняя память на андроиде что делать

Кроме пары USB-портов и разъема для подключения блока питания (стандартного ноутбучного на 19 В, то есть БП легко будет заменить), на задней стенке дока расположена также пара видеовыходов: Mini-DisplayPort 1.2 и HDMI. Отметим, что первый не так уж часто встречается в мини-ПК, да и в полноформатных компьютерах иногда отсутствует.

Наличие PCIe среди интерфейсов Compute Card позволило непосредственно в док встроить поддержку гигабитной проводной сети. Отметим: контроллер i211-AT находится именно в доке, хотя использует высокоскоростной интерфейс подключения, так что, в отличие от некоторых бюджетных мини-ПК на «атомных» платформах с подключением USB—Ethernet, «тормозить» не будет. Единственное ограничение — даже при покупке карты на Core i5 «по проводу» из соображений безопасности не будет работать AMT.

Как уже было сказано выше, можно выпускать и более функциональные модели доков — например, добавив SATA-контроллер и пару отсеков для винчестеров. То есть, фактически, модульность системы близка к традиционным десктопам — просто основной «кубик», на базе которого она строится, стал несколько сложнее, чем вставляемый в сокет процессор. Теперь он включает в себя уже необходимый для любого компьютера набор из процессора, графики, памяти, накопителя и т. п. И поменять его тоже можно, но только в сборе. Также, наверное, необходимо повторить, что производительность данного решения будет ограниченной.

Пара слов о производительности

Этот вопрос мы исследовали в отдельном материале — на примере двух моделей Compute Card. Интересующимся советуем ознакомиться с ним, а краткий вердикт таков: быстродействие карты на Core m3-7Y30 немного превосходит уровень, обеспечиваемый Celeron G3900 (в комплекте с большим количеством ОЗУ и SSD, разумеется), что можно считать базовым на сегодняшний день, пригодным для решения широкого спектра повседневных задач. Процессоры «атомной» линейки заметно медленнее — тот же Pentium N4200 отстает в полтора-два раза. Однако в ряде случаев и этого хватит — во всяком случае, до сих пор в ходу и более медленные компьютеры. Тем более это важно, поскольку Compute Card отлично подходит для создания разнообразной «умной» техники, а не простого настольного ПК — таковых на рынке и без того изобилие, причем самых разных. Для «десктопов» же ключевым преимуществом Compute Card видится «съемность» таких карт, надо лишь суметь правильно ею распорядиться.

Итого

Несмотря на компактность самой Compute Card, системы на ее базе сохраняют модульный подход, что позволяет их гибко конфигурировать, легко ремонтировать и пользоваться другими преимуществами. Просто отделяемым в них сделан базовый модуль целиком, а не процессор или память по отдельности. Это, безусловно, ограничивает гибкость, да и производительность решения, зато позволяет научить его таким кунштюкам, которые традиционным «большим» системам недоступны. А гибкость все-таки остается выше, чем у компьютеров «все в одном»: понятно, что заменить в моноблоке, к примеру, только карту (при необходимости ремонта или небольшой модернизации) — проще и дешевле, чем весь моноблок или нестандартную системную плату.

В целом Compute Card — это не большой десктоп и даже не NUC. А также не планшет, не моноблок, не ноутбук. Но на его основе можно легко сделать планшет, моноблок, ноутбук, мини-ПК. Причем при необходимости модуль можно переставлять из одного компьютера в другой вместе с программами и данными, так что не будут нужны синхронизация, несколько лицензий и т. д. По нашему мнению, идея и реализация интересные. Насколько они окажутся нужны, решит рынок, на котором теперь появился новый тип персональных компьютеров.

В заключение предлагаем посмотреть наш видеообзор микрокомпьютера Intel Compute Card:

Микрокомпьютеры предоставлены на тестирование компанией OLDI Computers

Паттерны параллельного программирования для GPU

1. Map

Map – GPU parallel pattern

Тут все просто – берем входной массив данных и к каждому элементу применяем некий оператор – ядро – никак не затрагивающий остальные элементы – т.е. читаем и пишем в определенные ячейки памяти.

Отношение – как один к одному (one-to-one).

пример – перемножение матриц, оператор инкремента или декремента примененный к каждому элементу матрицы и т.п.

2. Scatter

Scatter – GPU parallel pattern

Для каждого элемента входного массива мы вычисляем позицию в выходном массиве, на которое он окажет влияние (путем применения соответствующего оператора).

Отношение – как один ко многим (one-to-many).

3. Transpose

Transpose – GPU parallel pattern

Данный паттерн можно рассматривать как частный случай паттерна scatter.
Используется для оптимизации вычислений – перераспределяя элементы в памяти можно достичь значительного повышения производительности.

4. Gather

Gather – GPU parallel pattern

Является обратным к паттерну Scatter – для каждого элемента в выходном массиве мы вычисляем индексы элементов из входного массива, которые окажут на него влияние:

Отношение – несколько к одному (many-to-one).

5. Stencil

Stencil – GPU parallel pattern

Данный паттерн можно рассматривать как частный случай паттерна gather. Здесь для получения значения в каждой ячейке выходного массива используется определенный шаблон для вычисления всех элементов входного массива, которые повлияют на финальное значение. Всевозможные фильтры построены именно по этому принципу.

Отношение несколько к одному (several-to-one)

Пример: фильтр Гауссиана.

6. Reduce

Reduce – GPU parallel pattern

Отношение все к одному (All-to-one)

Пример – вычисление суммы или максимума в массиве.

7. Scan/ Sort

При вычислении значения в каждой ячейке выходного массива необходимо учитывать значения каждого элемента входного. Существует две основные реализации – Hillis and Steele и Blelloch.

out[i] = F[i] = operator(F[i-1],in[i])

Отношение все ко всем (all-to-all).

Примеры – сортировка данных.

Virtual Machine vCPU and vNUMA Rightsizing – Guidelines

Using virtualization, we have all enjoyed the flexibility to quickly create virtual machines with various virtual CPU (vCPU) configurations for a diverse set of workloads. But as we virtualize larger and more demanding workloads, like databases, on top of the latest generations of processors with up to 24 cores, special care must be taken in vCPU and vNUMA configuration to ensure performance is optimized.

Much has been said and written about how to optimally configure the vCPU presentation within a virtual machine – Sockets x Cores per Socket.

numcorespersocket

Note: When you create a new virtual machine, the number of vCPUs assigned is divided by the Cores per Socket value (default = 1 unless you change the dropdown) to give you the calculated number of Sockets. If you are using PowerCLI, these properties are known as NumCPUs and NumCoresPerSocket. In the example screenshot above, 20 vCPUs (NumCPUs) divided by 10 Cores per Socket (NumCoresPerSocket) results in 2 Sockets. Let’s refer to this virtual configuration as 2 Sockets x 10 Cores per Socket.

History

This setting was originally introduced in vSphere 4.1 to overcome operating system license limitations. As of vSphere 5, those configuration items now set the virtual NUMA (vNUMA) topology that is exposed to the guest operating system.

NUMA is becoming increasingly more important to ensure workloads, like databases, allocate and consume memory within the same physical NUMA node that the vCPUs are scheduled. When a virtual machine is sized larger than a single physical NUMA node, a vNUMA topology is created and presented to the guest operating system. This virtual construct allows a workload within the virtual machine to benefit from physical NUMA, while continuing to support functions like vMotion.

While the vSphere platform is extremely configurable, that flexibility can sometimes be our worst enemy because it allows for many sub-optimal configurations.

Back in 2013, I posted an article about how Cores per Socket could affect performance based on how vNUMA was configured as a result. In that article, I suggested different options to ensure the vNUMA presentation for a virtual machine was correct and optimal. The easiest way to achieve this was to leave Cores per Socket at the default of 1 which presents the vCPU count as Sockets without configuring any virtual cores. Using this configuration, ESXi would automatically generate and present the optimal vNUMA topology to the virtual machine.

However, this suggestion has a few shortcomings. Since the vCPUs are presented as Sockets alone, licensing models for Microsoft operating systems and applications were potentially limited by the number of sockets. This is less of an issue today with operating system core-based licensing, which Microsoft transitioned to starting with Windows Server 2016, but is still a consideration for earlier releases.

Example: Since both Windows Server 2012 and 2016 only support up to 64 sockets, creating a “monster” Windows virtual machine with more than 64 vCPUs requires us to increase the Cores per Socket so the guest can consume all the assigned processors.

Example: A virtual machine with 8 Sockets x 1 Core per Socket, hosting a single Microsoft SQL Server 2016 Standard Edition license would only be able to consume 4 of the 8 vCPUs since that edition’s license limits to “lesser of 4 sockets or 24 cores.” If the virtual machine is configured with 1 Socket x 8 Cores per Socket, all 8 vCPUs could be leveraged.

Additionally, some applications, like Microsoft SQL Server 2016, behave differently based on the Cores per Socket topology presented to them.

Example: A virtual machine hosting a Microsoft SQL Server 2016 Enterprise Edition license created with 8 Sockets x 2 Cores per Socket may behave differently than a virtual machine created with 2 Sockets x 8 Cores per Socket, even though they’re both 16 vCPUs. This is due to the soft-NUMA feature within SQL Server which gets automatically configured based on the number of cores the operating system can use (reference: https://msdn.microsoft.com/en-us/library/ms345357.aspx).

vNUMA Behavior Changes in vSphere 6.5

In an effort to automate and simplify configurations for optimal performance, vSphere 6.5 introduced a few changes in vNUMA behavior. Thanks to Frank Denneman for thoroughly documenting them here:

Essentially, the vNUMA presentation under vSphere 6.5 is no longer controlled by the Cores per Socket value. vSphere will now always present the optimal vNUMA topology unless you use advanced settings.

vNUMA Considers Compute Only

When a vNUMA topology is calculated, it only considers the compute dimension. It does not take into account the amount of memory configured to the virtual machine or the amount of memory available within each pNUMA node when a topology is calculated. So, this needs to be accounted for manually.

Example: An ESXi host has 2 pSockets, each with 10 Cores per Socket, and has 128GB RAM per pNUMA node, totalling 256GB per host.

If you create a virtual machine with 128GB of RAM and 1 Socket x 10 Cores per Socket, vSphere will create a single vNUMA node. The virtual machine will fit into a single pNUMA node.

If you create a virtual machine with 192GB RAM and 1 Socket x 10 Cores per Socket, vSphere will still only create a single vNUMA node even though the requirements of the virtual machine will cross 2 pNUMA nodes resulting in remote memory access. This is because only the compute dimension in considered.

The optimal configuration for this virtual machine would be 2 Sockets x 5 Cores per Socket, for which vSphere will create 2 vNUMA nodes and distribute 96GB of RAM to each of them.

So how do we make this easier?

Based on the value a compute configuration can provide, these are some simple rules that can be followed to ensure the optimal configuration is implemented.

I propose the following guidelines:

  1. While there are many advanced vNUMA settings, only in rare cases do they need to be changed from the defaults.
  2. Always configure the virtual machine vCPU count to be reflected as Cores per Socket, until you exceed the physical core count of a single physical NUMA node OR until you exceed the total memory available on a single physical NUMA node.
  3. When you need to configure more vCPUs than there are physical cores in the NUMA node, OR if you assign more memory than a NUMA node contains, evenly divide the vCPU count across the minimum number of NUMA nodes.
  4. Don’t assign an odd number of vCPUs when the size of your virtual machine, measured by vCPU count or configured memory, exceeds a physical NUMA node.
  5. Don’t enable vCPU Hot Add unless you’re okay with vNUMA being disabled.
  6. Don’t create a VM larger than the total number of physical cores of your host.

Example: This table outlines how a virtual machine should be configured on a dual-socket 10-core physical host to ensure an optimal vNUMA topology and performance regardless of vSphere version where the assigned memory is less than or equal to a pNUMA node.

Example: This table outlines how a virtual machine should be configured on a dual socket 10 core physical host to ensure an optimal vNUMA topology and performance regardless of vSphere version where the assigned memory is greater than that of a pNUMA node.

To sum it up, these are some of the benefits provided using these guidelines:

  • The resulting vNUMA topology will be correct and optimal regardless of the version of vSphere you are using.
  • Reduction in remote memory access since a virtual machine will be contained within the fewest number of physical NUMA nodes.
  • Proper alignment with most operating system and application licenses models.
  • Provides the in-guest application the opportunity for optimal self-configuration.

There are always exceptions to these guidelines, so let’s explore yours in the comments section below.

Mark Achtemichuk

Mark Achtemichuk currently works as a Staff 2 Engineer within VMware’s Engineering Services (VES) Performance team, focusing on education, benchmarking, collaterals and performance architectures. @vmMarkA is recognized as an industry expert…

Архитектура NUMA и виртуальные vCPU

Есть еще несколько аспектов назначения vCPU и ядер виртуальным машинам, которые нужно понимать.

При назначении ядер на сокете учитывайте наличие NUMA архитектуры (используется в большинстве современных CPU). Не рекомендуется назначать вашей ВМ количество ядер на сокет (и общее количество vCPU) больше, чем доступно ядер на вашем физическом сокете/процессоре (ноде NUMA). При размещении на одной физической ноде NUMA, виртуальная машина сможет использовать быструю локальную RAM, доступную на конкретной ноде NUMA. Иначе для выполнения операции процессам придется ждать ответа от другой ноды NUMA (что несколько более долго).

Если вы назначаете для ВМ два отдельных виртуальных сокета, то гипервизор может их запускать на разных нодах NUMA. Что не лучшим образом скажется на производительности ВМ.

Если количество требуемых vCPU превышает количество ядер на 1 физическом сокете (ноде NUMA), нужно создать несколько виртуальных сокетов (процессоров) с необходимым количество ядер. Также не желательно использовать нечетное количество процессоров (лучше добавить 1 vCPU)

Это позволит сохранить производительность виртуальной машины.

vCPU и процессорная архитектура NUMA

Например, для 2 процессорного хоста с 10 ядрами (суммарно доступно 40 vCPU с учетом HyperThreading), при настройке vCPU для ВМ оптимально использовать такие конфигурации:

Требуемое количество vCPU Количество виртуальных сокетов в настройках ВМ Количество ядер на виртуальном процессоре в настройках ВМ
1 1 1
……
10 1 10
11 Не оптимально
12 2 6
……
20 2 10

Например, ВМ с Microsoft SQL Server 2016 Enterprise Edition 16 vCPU в конфигурации 8 сокетов по 2 ядра будет работать хуже, чем в конфигурации 2 сокета по 8 ядер.

Также не забывайте, что некоторые приложения лицензируются по физическим сокетам (так было в старых версиях SQL Server). Иногда вам просто выгоднее лицензировать один многоядерный процессор, чем несколько процессоров с меньшим количеством ядер.

Предыдущая статьяПредыдущая статья Следующая статья Следующая статья

Ссылка на основную публикацию