Управление ядрами процессора linux

Bog BOS: Процессоры в Linux: информация и управление

В статье описываются используемые в Linux методы получения информации об используемом процессоре и его состоянии (температура, частота, задушенность), управление частотой процессора, загрузка микрокода, модули msr и cpuid, привязка процесса и обработчика прерывания к конкретному процессору (ядру), особенности работы NUMA.

Начальную информацию о процессоре можно получить с помощью команды dmesg:

Далее необходимо заглянуть в /proc/cpuinfo:

Более подробную (400 строк) информацию можно получить с помощью команды x86info (ключи: -a -v).

Команда cpuid возвращает 4 полубайта (одному cpuid может соответствовать множество процессоров, имеющих различные sSpec# и Order Code):

  • type (всегда 0?)
  • family (15 — NetBirst, 6 — Core)
  • model
  • stepping

А также через DMI интерфейс: «dmidecode -t 4» (собственно процессор) и «dmidecode -t 7» (кеш).

Параметры кешей (cat /sys/devices/system/cpu/cpuX/cache/indexY/параметр):

  • type — Data, Instruction, Unified
  • level — L1, L2, L3
  • size
  • ways_of_associativity
  • shared_cpu_map — битовая карта ЦП, которые разделяют данный кеш
  • coherency_line_size — ?
  • number_of_sets — ?
  • physical_line_partition — ?

Топология (cat /sys/devices/system/cpu/cpuX/topology/параметр):

  • physical_package_id — номер чипа
  • core_id — номер ядра в чипе
  • core_siblings — битовая карта соседних по чипу ЦП
  • thread_siblings — битовая карта соседних по SMT (HT) ЦП

Модуль acpi-cpufreq конфликтует со встроенной в ядро обработкой Intel P-state и не загружается, так что /proc/acpi в CentOS 7 пуст.

Информация о возможностях по управлению питанием и throttling от ACPI:

И «lshal -t -l» (устарело).

Предельно допустимая температура процессора (материнской платы, системы):

Утилита lscpu выдаёт информацию об архитектуре, битности, порядке байт, количестве ядер, количестве потоков на ядро, сокетов, узлов NUMA, модель и ревизия (официальная частота), текущая частота, виртуализация, размеры кешей, распределение ЦП по узлам NUMA; ключ «-e» вызывает выдачу в виде таблицы

Модуль acpi-cpufreq конфликтует со встроенной в ядро обработкой Intel P-state и не загружается,

Получение информации о текущей температуре процессора (материнской платы):

Получение информации о питании процессора (текущее состояние, список возможных состояний, граф переходов и число переходов по каждой ветви; C1 — состояние после команды HLT; C1E — улучшенный вариант, сбрасывает множитель частоты процессора до минимально возможного значения (2.8GHz для P4 660)):

Управление частотой процессора позволяет регулировать энергопотребление компьютера. Подсистема управления частотой процессора в ядре Linux позволяет подключать управляющие модули для различных архитектур и извещать подсистемы ядра, которые зависят от частоты процессора, при изменении частоты или политики управления частотой. Некоторые системы могут изменять частоту самостоятельно без вмешательства программы. Для таких систем устанавливается политика изменения частоты, а также верхний и нижний пределы частоты. Для других систем требуется вмешательство программы при каждом изменении частоты. Для них устанавливается специальный управляющий модуль — регулятор (гувернёр, governor) и параметры для него.

Все параметры системы управления частотой находятся в каталоге /sys/devices/system/cpu/cpu0/cpufreq:

  • affected_cpus
  • cpuinfo_cur_freq (текущая частота процессора, в КГц)
  • cpuinfo_max_freq (максимально возможная частота процессора, в КГц)
  • cpuinfo_min_freq (минимально возможная частота процессора, в КГц)
  • scaling_available_frequencies (перечень допустимых частот процессора, в КГц)
  • scaling_available_governors (перечень допустимых регуляторов)
  • scaling_cur_freq ()
  • scaling_driver (используемый архитектурнозависимый модуль управления частотой)
  • scaling_governor (используемый регулятор; для смены регулятора записать сюда его имя)
  • scaling_max_freq (максимальная частота процессора, которую будет устанавливать регулятор или обработчик политики)
  • scaling_min_freq (минимальная частота процессора, которую будет устанавливать регулятор или обработчик политики)
  • scaling_setspeed (для установки частоты записать сюда значение, в КГц)

Модули управления частотой для различных архитектур (вставить загрузку нужного в /etc/rc.d/rc.local; неподходящий модуль откажется загружаться):

  • acpi-cpufreq (изменение состояния процессора средствами ACPI (P-States Driver); его работа мне не понравилась и я вставил в rc.local его выгрузку, но может быть вам достались более правильные таблицы ACPI)
  • p4-clockmod (у меня Celeron M, при загрузке модуля выдаётся сообщение об обнаружении Pentium M и совет использовать модуль speedstep-centrino, но это неправильный совет, т.к. во-первых, он встроен в ядро, во-вторых, не работает с моей моделью Celeron M); отсутствует для архитектуры x86-64
  • speedstep-centrino (Pentium M, встроен в ядро)
  • speedstep-ich (Pentium III-M, P4-M, ICH2/ICH3/ICH4)
  • speedstep-smi (Pentium III-M, 440 BX/ZX/MX)
  • powernow-k6
  • powernow-k7
  • powernow-k8
  • cpufreq-nforce2 (позволяет менять FSB независимо от частоты PCI/AGP)
  • intel_pstate (встроен в ядро CentOS 7) Intel P-State, не поддерживает cpufreq-stats и boost
  • pcc-cpufreq (Processor Clocking Control, HP) — управление потребляемой мощностью (power capping)?

Регуляторы (вставить загрузку нужных в /etc/rc.d/rc.local, если не встроены в ядро):

  • userspace (модуль cpufreq_userspace, частота устанавливается прикладной программой или просто командой echo)
  • powersave (модуль cpufreq_powersave, устанавливает наименьшую разрешённую частоту)
  • performance (модуль cpufreq_performance, устанавливает наибольшую разрешённую частоту)
  • ondemand (модуль cpufreq_ondemand, частота процессора устанавливается в зависимости от нагрузки), управляющие параметры в подкаталоге ondemand:
    • ignore_nice_load (0; игнорировать нагрузку, создаваемую низкоприоритетными процессами)
    • sampling_rate (1000000 микросекунд; позволяет установить частоту опроса нагрузки)
    • sampling_rate_max (500000000; максимально возможное значение sampling_rate)
    • sampling_rate_min (500000; минимально возможное значение sampling_rate)
    • up_threshold (80%; при какой нагрузке в интервале между опросами увеличивать частоту процессора)
    • sampling_down_factor (1; сколько интервалов пониженной нагрузки выжидать перед понижением частоты процессора)
  • conservative (модуль cpufreq_conservative, частота процессора устанавливается в зависимости от нагрузки, но более плавно, чем ondemand), управляющие параметры в подкаталоге conservative те же, что и для ondemand со следующими дополнениями:
    • freq_step (5% от максимально возможной частоты процессора; шаг изменения частоты процессора; значение 100 даёт поведение эквивалентное поведению регулятора ondemand)
    • down_threshold (20%; при какой нагрузке в интервале между опросами уменьшать частоту процессора)
Читайте также:  Отправлять весь трафик через vpn mac os

Модуль cpufreq-stats (вставить загрузку в /etc/rc.d/rc.local) собирает и выдаёт статистику изменения частоты и напряжения процессора в подкаталоге stats:

  • time_in_state (для каждой возможной частоты процессора выводится общее время, когда процессор работал на этой частоте, единица — 10 мс)
  • total_trans (количество изменений частоты процессора)
  • trans_table (матрица числа переходов от одной частоты процессора к другой; требуется CONFIG_CPU_FREQ_STAT_DETAILS при генерации ядра)

Устанавливать регуляторы и частоты можно записывая желаемые значения в /sys/devices/system/cpu/cpu0/cpufreq/ (требуются прва суперпользователя) или используя аплет cpufreq-selector из пакета gnome-applets (позволяет устанавливать тип регулятора и частоту для регулятора userspace; права доступа устанавливаются обычным механизмом consolehelper и PAM).

Пакет cpufreq-utils (потянул sysfsutils) содержит утилиты centrino-decode (декодирует информацию о напряжении питания процессора и соотношении частот процессора и системной шины, требуется модуль msr), dump_psb (информация о возможных частотах процессора из PSB (AMD?)), cpufreq-info (та же самая информация, которая доступна через /sys/devices/system/cpu/cpu0/cpufreq, но с ключом «-m» она выдаётся в человеколюбивом формате) и cpufreq-set (позволяет устанавливать регулятор и частоту не набирая длинных имён файлов в /sys). Ключи cpufreq-set (по умолчанию, частота в килогерцах, но можно указывать суффикс без пробела: kHz, Hz, MHz, GHz):

  • —cpu номер-процессора
  • —min минимальная-частота-для-регулятора
  • —max максимальная-частота-для-регулятора
  • —governor регулятор
  • —freq частота (только для регулятора userspace)

cpuspeed — демон (скрипт запуска — /etc/rc.d/init.d/cpuspeed; файл настройки — /etc/cpuspeed.conf, /etc/sysconfig/cpuspeed), изменяющий частоту процессора в зависимости от нагрузки, температуры и источника питания. Под нагрузкой понимается доля времени, проводимое процессором в состоянии idle. Сигналы:

  • USR1 — установить максимальную скорость
  • USR2 — установить минимальную скорость

gkrellm имеет встраиваемый модуль gkrellm-freq, позволяющий узнать текущее значение текущее значение частоты процессора.

Модуль intel_pstate (Intel P-state для SandyBridge+ Intel, встроен в ядро в CentOS7) имеет ручки управления:

  • /sys/devices/system/cpu/intel_pstate/max_perf_pct
  • /sys/devices/system/cpu/intel_pstate/min_perf_pct
  • /sys/devices/system/cpu/intel_pstate/no_turbo
  • /sys/devices/system/cpu/cpuX/cpufreq/scaling_governor (из /sys/devices/system/cpu/cpuX/cpufreq/scaling_available_governors — performance и powersave)

Утилита «cpupower frequency-info» выдаёт информацию о ЦП, драйвере управления частотой, частоты, гувернёрам, турбо-режимам. «cpupower monitor -m Mperf» — текущая частота каждого ядра.

Утилита x86_energy_perf_policy позволяет задать предпочтительный режим работы ЦП (performance, normal, powersave, смещение от 0 (performance) до 15 (powersave)).

Запрет понижать частоту процессора достигается использованием параметров ядра processor.max_cstate=1, intel_idle.max_cstate=0 [и idle=poll] (увеличивается потребление электричества).

TM1 (Thermal Monitoring 1) — понижение нагрева процессора вставлением пустых циклов. Вызывает проблемы у других частей компьютера.

TM2 — понижение напряжения и частоты.

Получение информации о текущем состоянии

Особенностью процессоров Intel семейства Nehalem (например, Xeon 5560) является возможность автоматического увеличения реальной частоты работы ядра сверх номинального при соблюдения температурного режима работы (на 1 или 2 или 3 ступени частоты в зависимости от модели и текущей загрузки; по слухам для Xeon 5560 — 3-3-2-2; на тесте «openssl speed» у меня получилось одинаковое ускорение около 10% при любом количестве потоков). Наличие возможности определяется ключом ida в /proc/cpuinfo. Действие Turbo Boost не проявляется при визуализации текущей частоты (/sys/devices/system/cpu/cpuX/cpufreq). Необходимо соблюдение следующих условий:

  • ЦП с поддержкой Turbo Boost
  • включение Turbo Boost в BIOS
  • включение EIST (Enable Enhanced Intel SpeedStep Technology) в BIOS
  • адекватное охлаждение
  • достаточно новое ядро (RHEL 4.7, RHEL 5.3)
  • modprobe acpi-cpufreq
  • echo performance > /sys/devices/system/cpu/cpuX/cpufreq/scaling_governor
  • потребляемый ток и мощность при текущей загрузке не превышают определённых изготовителем

acpi-cpufreq для обозначения турборежима использует фиктивную частоту (3501000 вместо 3500000)

Универсальная ручка управления включением режимов Turbo Boost и Turbo-Core — /sys/devices/system/cpu/cpufreq/boost (/sys/devices/system/cpu/intel_pstate/no_turbo?). Не поддерживается модулем intel_pstate.

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

Утилита microcode_ctl загружает микрокод (исправленная прошивка) для процессоров Intel (требуется поддержка модуля ядра microcode, при загрузке создаётся символьное устройство /dev/cpu/microcode, 10:184). Собственно микрокод лежит в файле /etc/firmware/microcode.dat. Имеет ли смысл его обновлять при каждой загрузке?

При загрузке модуля msr создаётся символьное устройство (/dev/cpu/0/msr, 202:0). Используется centrino-decode (декодирует информацию о напряжении питания процессора и соотношении частот процессора и системной шины).

При загрузке модуля cpuid создаётся символьное устройство (/dev/cpu/0/cpuid, 203:0). Используется в правилах udev. Зачем это?

Для ограничения списка процессоров, которые могут использоваться для выполнения процесса (иногда полезно для увеличения производительности — не вымывает содержимое кеша) используется утилита taskset (маска — битовая маска допустимых процессоров: 1 — первый процессор, 2 — второй, 4 — третий и т.д.; 32-битные слова (big-endian) разделяются запятыми; без указания маски или списка процессоров утилита возвращает текущее значение маски):

  • —pid [маска-процессоров] номер-процесса
  • —cpu-list список-процессоров (через запятую, интервалы через ‘-‘)
  • маска-процессоров — запускаемая-команда аргументы

Привязка обработки прерывания к процессору: узнать номер прерывания (lspci -v), записать битовую маску допустимых процессоров в /proc/irq/номер-прерывания/smp_affinity.

CC-NUMA (Cache Coherent Non Uniform Memory Access) — система с неоднородным (в т.ч. по длительности; в 1.5 раза для Nehalem и Barcelona) доступом процессоров к узлам общей памяти с обеспечением когерентности кешей процессоров.

Ядро Linux 2.6 имеет поддержку CC-NUMA в виде политики выделения памяти относительно узлов памяти (mempolicy.h: set_mempolicy(2), get_mempolicy(2), mbind(2)). По умолчанию, используется системная политика выделения памяти В качестве системной политики при загрузке используется политика поочерёдного выделения из узлов памяти с достаточным количеством свободной памяти, а при работе — политика локального выделения. Процесс может запросить использование другой политики для всех последующих своих запросов (и запросов своих наследников) или отдельную политику для запросов в отдельной области виртуальной памяти (только анонимные области, не наследуется). Отдельные политики могут быть установлены для разделяемых объектов. Политика состоит из режима работы (MPOL_DEFAULT — использовать политику исходя из области; MPOL_BIND — выделять память из ближайшего узла только из указанного списка узлов; MPOL_PREFERRED — выделять память из указанного узла, при недостатке памяти из ближайшего узла, при пустом списке узлов выбирается локальный узел (на котором запустилась первая нить); MPOL_INTERLEAVED — поочерёдное выделение из списка узлов). При свопировании страницы информация об узле страницы теряется. Для области памяти (определяется начальным адресом и длиной) можно задать политику выделения (VMA policy); задаются модификаторы режима (MPOL_MF_STRICT — все страницы д.б. на заданном узле; MPOL_MF_MOVE — попытаться переместить неправильно распределённые эксклюзивные страницы; MPOL_MF_MOVEALL — попытаться переместить все неправильно распределённые страницы; MPOL_F_STATIC_NODES — не перемещать страницы после смены списка узлов; MPOL_F_RELATIVE_NODES) и список допустимых узлов.

Читайте также:  Как создать uefi загрузочную флешку windows 10 ultraiso

Опции загрузки ядра:

  • numa=off (считать всю память одним узлом)
  • numa=noacpi (не учитывать таблицу SRAT)
  • numa=fake=параметры (имитировать требуемую конфигурацию NUMA, см. fake-numa-for-cpusets)
  • numa=hotadd=процент (что такое hotadd память?)

Сообщения о распределении памяти по узлам при загрузке

Описание узлов в /sys/devices/system/node/nodeНОМЕР

  • cpumap — битовая карта ЦП узла
  • distance — список (по числу узлов) относительной «стоимости» обращения ЦП данного узла к памяти каждого узла
  • meminfo — разнообразная статистика наличия и использования памяти
  • numastat — количество попаданий и промахов запросов к памяти в свой узел
  • cpuX/ — ссылка на описание каждого процессора узла

cpusets — механизм, позволяющий управлять распределением процессов по ЦП и узлам памяти (cpuset(7), Documentation/cpusets.txt). Корневой cpuset содержит все ЦП и узлы памяти (только чтение, изменяется автоматически при горячем подключении). Пользователь может объявлять свои именованные подмножества одного из имеющихся наборов и привязывать к ним задачи (и их потомков). Наборы могут пересекаться или быть исключительными (т.е. ЦП или узел памяти не может входить в 2 набора на одном уровне иерархии). Запросы приложений к sched_setaffinity(2), set_mempolicy(2) и mbind(2) фильтруются относительно списка процессоров и узлов памяти в указанном cpuset. Оформлен в виде иерархической файловой системы типа cpuset (проверить наличие в /proc/filesystems). Монтирование: «[mkdir /dev/cpuset;] mount -t cpuset none /dev/cpuset». Создание нового набора: «mkdir имя» и заполнение файлов. Процесс может переназначить себя на другой набор, если позволяют права доступа к файлу tasks в каталоге. Для переназначения другого процесса требуется также право на посылку сигнала этому процессу. Привязка к набору наследуется. Каждый набор представляется в виде каталога, содержащего следующие файлы:

  • cpus — список номеров ЦП и интервалов
  • mems — список узлов памяти и интервалов
  • memory_migrate — перемещать страницы памяти в разрешённые узлы при изменении настроек и перемещении процессов
  • cpu_exclusive — список ЦП является исключительным
  • mem_exclusive — список узлов памяти является исключительным
  • mem_hardwall — ядро не будет размещать здесь общие данные (с 2.6.26, ранее функциональность включалась при mem_exclusive=1)
  • memory_pressure — уровень обмена страниц внутри набора (paging pressure rate), может учитываться пакетным планировщиком, выражается в запросах в секунду за последние 10 секунд на 1000
  • memory_pressure_enabled — включает вычисление memory_pressure, представлен только для корневого набора
  • memory_spread_page — разрешить размещать буфера файловой системы (page cache) для процессов из набора по всем допустимым узлам вместо узла, на котором процесс выполняется
  • memory_spread_slab — разрешить размещать буфера slab (каталоги и inode) для процессов из набора по всем допустимым узлам вместо узла, на котором процесс выполняется
  • notify_on_release — запуск программы /sbin/cpuset_release_agent при завершении последнего процесса набора
  • sched_load_balance — планировщик будет использовать алгоритм балансировки нагрузки; включён по умолчанию, все ЦП должны быть в едином домене балансировки у планировщика заданий (с 2.6.24)
  • sched_relax_domain_level — интервал поиска перегруженного ЦП для миграции процесса на себя, если наша очередь задач пуста (-1: использовать системные установки, 0: не искать, 1: внутри HT, 2: ядра внутри пакета, 3: внутри узла, 4 — ?, 5 — по всей системе )(с 2.6.26, но в RHEL 5.3 есть)
  • tasks — список процессов, привязанных к набору (по одному на строке), сюда надо вписать номер процесса (по одному на строке), который нужно привязать к данному набору; для удаления процесса впишите его номер в верхний набор

После переноса задачи tasks включающего набора вся информация меняется (/dev/cpuset/. /tasks, /proc/. /cpuset), но планировщик продолжает придерживать процесс на старом наборе ЦП (RHEL 5.4) .

/proc/номер-процесса/status содержит новые строки о допустимых ЦП и узлах памяти.

/proc/номер-процесса/cpuset содержит имя набора cpuset.

/proc/номер-процесса/numa_maps рассказывает о каждом сегменте памяти: начальный адрес (конечный в maps), политику выделения памяти, тип (anon, heap, stack, file=имя), сколько страниц выделено из каждого узла NUMA-памяти.

Пакеты numactl и numactrl-devel содержат утилиты и библиотеки более высокого уровня, чем системные вызовы. Утилита numastat выдаёт для каждого узла памяти статистику о использовании её для «своих» и «чужих» ЦП. Утилита memhog предназначена для тестирования производительности различных режимов использования памяти. Утилита migratepages плозволяет переместить содержимое страниц памяти с одного узла на другой. Утилита numademo позволяет протестировать производительность сочетаний свой/чужой для различных узлов памяти; демонстрирует расхождение в пропускной способности памяти в 1.5 раза для систем с использованием QPI/HT при правильном и неправильном распределении процессов по ЦП и узлам памяти (перепутаны Min и Max?):

Читайте также:  После установки linux нет выбора операционной системы windows

Утилита numactl(8) позволяет запускать программы с указанной политикой и привязкой к указанным ЦП и узлам памяти (также позволяет установить политику для разделяемой памяти и файлов в tmpfs и hugetlbfs), ключи:

  • —interleave=узлы-памяти (память будет выделяться по очереди из указанных узлов при наличии)
  • —membind=узлы-памяти (выделять память только из указанных узлов)
  • —cpunodebind=узлы (использовать ЦП только из указанных узлов)
  • —physcpubind=список-ЦП (использовать только указанные ЦП)
  • —localalloc (выделять память на локальном узле)
  • —preferred=узел (предпочтительно выделять память из указанного узла)
  • —hardware (информация о размерах узлов и матрица «расстояний»)
  • —show (информация о политике, привязке к ЦП и узлам памяти)

Библиотека libnuma (-lnuma, numaif.h, numa.h, numa(3)).

Ключи ядра:

  • isolcpus
  • relax_domain_level — интервал поиска перегруженного ЦП для миграции процесса на себя, если наша очередь задач пуста
  • /usr/share/doc/kernel-doc-версия-ядра/Documentation/cpu-freq/ (описание работы модулей управления частотой процессора)
  • Observations on power management
  • cpuset (привязка процесса к вычислительному домену)
  • Oracle on Opteron with Linux-The NUMA Angle
  • разнос прерываний по ядрам при обслуживании большого трафика
  • i7z (утилита для получения реальной статистики по частотам ядер, 2013)
  • Intel Management Engine (используется в Active Management Technology (AMT), TXT, TPM, управляет частотой ЦП; встроен в процессор; внеполосной доступ к разделяемому с ПК сетевому интерфейсу (отдельный MAC); внутренний веб-сервер с TLS-шифрованием (порты 16992, 16993), SOL (порт 16994), загрузка по сети, KVM (порт 5900 (VNC) и 16994/16995 (RDP)); доступ к периферийному оборудованию (C-Link, DMI), получение и хранение в энергонезависимой памяти информации о нём; включается до нажатии кнопки питания, работает от дежурного питания; полный доступ к памяти ПК через собственный DMA-контроллер с обходом IOMMU; мониторинг видеопотока; процессор: ARCtangent-A4 (ARC32), затем ARCtangent-A5/ARC600 (ARCompact — ARC16/32), затем SPARC, затем x86 (кеш!); регион ME в SPI флэш-памяти и ME BIOS Extenstion (MEBx); ME UMA – скрытая ото всех, кроме ME-контроллера, область (16 — 32 МБ) в ОП; Management Engine Interface (MEI, HECI) набор регистров в конфигурационном пространстве PCI и область в MMIO; ME ROM — начальный загрузчик, проверяет SHA256 открытого ключа Intel, приватным ключом Intel подписаны загружаемые модули; ME SRAM — для загрузки, потом ME UMA; RNG; таймер; watchdog; обработчик прерываний; ОСРВ ThreadX; поддержка NFC и Wi-Fi)
  • Intel ME. Как избежать восстания машин? (без прошивки ME компьютер не работает; можно временно отключить (используется при обновлении прошивки); а кто будет управлять частотой? реализовано на практике в банковской сфере и игровых автоматах; кейлоггер, управляемый командами по сети)
  • как отключить Intel ME (неубедительно)
  • урезание прошивки ME до минимума
  • Выявлена скрытая возможность отключения подсистемы Intel ME(оригинал, для версии ME 11 на Intel Quarck и MINIX)
  • SGX (Software Guard Extensions) — анклавы памяти шифруются (AES-GCM, случайный ключ во внутренней памяти ЦП, цифровая подпись) и недоступны не только процессам с более высоким уровнем привилегий, но и ядру, ring0, SMM и VMM
  • Intel Skylake-EP vs AMD EPYC 7000 (Intel Scalable Processor Platform, Purley FCLGA3647 P, решётка между ядрами и пр. (больше задержка, меньше частота), можно поделить на 2 NUMA домена (SNC — sub-NUMA Cluster), UPI между сокетами (3 в серии Platinum 81xx до 8 сокетов, 3 в серии Gold 61xx до 4 сокетов, 2 в серии Gold 51xx и ниже до 2 сокетов), Intel Omni-Path (100 Gbps) в моделях с литерой F, 6 каналов (2×3) DDR4 2666MHz (Platinum и Gold 61xx) или 2400 (Gold 51xx, Silver 41xx) или 2133 (Bronze 31xx) до 2 модулей на канал (всего 768GiB или 1.5TiB в моделях с литерой M), частота снижается при использовании AVX/AVX2/AVX-512, 48 PCIe 3.0, чипсет C62x (Lewisburg) — до 14 SATA3, до 10 USB 3.0, DMI 3.0 x4 и PCIe 3.0 x8/x16, до 20 PCIe 3.0 (коммутатор), до 4 Ethernet 10G (Intel X722 на базе XL710 — не воспринимает чужие трансиверы, iWARP RDMA), QuickAssist (драйвер встроен в Red Hat 7.1) — аппаратный deflate (zlib 4, буфер 64КБ) и шифрование (AES, 3DES, MD5, SHA3, HMAC и др.) до 100Gbps (C627 и C628; C625 и C626 — 20Gb и 40Gb), гарантия 10 лет в моделях с литерой T, IE (Intel Quark x86 и 1.4MB SRAM) — аналог ME для разработчика систем или интегратора (не только Intel сможет поставить backdoor в ваш сервер ;); и AMD Epyc 7000 — 2 сокета SP3, 4 кристалла на сокет (каждый кристалл по 2 CCX (CPU Complex) по 4 ядра на CCX, ядро — 2 потока), 4 Infinity Fabric между сокетами (38 GB/s каждый, по 1 на кристалл) и 6 Infinity Fabric между кристаллами внутри сокета (42 GB/s каждый, 4 NUMA домена на сокет), 16 каналов памяти (2 канала на кристалл, 2 модуля на канал, до 4 ТБ DDR4 2666, частота памяти определяет частоту Infinity Fabric), 128 PCIe на сокет (64 занято под Infinity Fabric между сокетами), до половины PCIe м.б. использованы как SATA, встроенные контроллеры USB 3.0, SMBus/I2C и др., встроенный Secure Processor (ARM Cortex-A5), шифрование (AES-128) ОП (отдельный ключ для ВМ))

Bog BOS: Процессоры в Linux: информация и управление

Источник

Оцените статью
@ Карта сайта News Автора!