- Проверка включенности HyperThreading или нет?
- 12 ответов
- How to disable or enable hyper threading on my Linux server
- Disable HT on runtime for individual logical CPUs
- Disable HT permanently
- Thread: Can I enable Hyper-Threading?
- Can I enable Hyper-Threading?
- Отключить гиперпоточность из Linux (нет доступа к BIOS)
- Скрипт для отключения гиперпоточности при запуске машины .
- Как это работает?
- Почему это работает?
- Отключить гиперпоточность в Ubuntu
- 6 ответов
- Вступление
- Ошибки Hyper-Threading в Intel Skylake и Kaby Lake:
- Этот ответ делится на три части:
- Отображение процессоров, когда Hyper-Threading выключен / включен
- Первый скрипт запускает Hyper Threading
- Второй скрипт запускает Hyper Threading
- Третий скрипт запускает Hyper Threading
- Скрипт Bash для автоматизации включения / выключения гиперпоточности
- Conky Сбои, если Hyper Threading отключен до его запуска
- Conky Code для отображения процента использования процессора и коэффициента загрузки
Проверка включенности HyperThreading или нет?
Как проверить, включена ли гиперпоточность на машине Linux, используя скрипт perl для проверки?
Я пытаюсь сделать следующий путь:
Сообщите мне, если я на правильном пути.
12 ответов
Примечания добавлены 8 июля 2014 года: Как Риккардо Мурри указал out, мой ответ ниже показывает только, отвечает ли процессор на поддержку гиперпотока. Как правило, * nix O /S настроены на включение hyperthreading, если они поддерживаются. Тем не менее, чтобы действительно проверить это программно, посмотрите ответ Нильса !
—- Оригинальный ответ от 25 марта 2012 года:
Вы действительно на правильном пути 🙂 с помощью
В Linux я вообще просто ищу «ht» в строке «flags» из /proc/cpuinfo . См. Например
или если вы хотите включить «ht» в шаблон
( \b соответствует границам слов и помогает избежать ложных срабатываний в случаях, когда «ht» является частью другого флага.)
Я всегда использовал следующее и смотрел «Thread (s) на ядро:».
Обратите внимание, что этот метод не сработает, если какой-либо логический процессор отключен с помощью простого
Если количество логических процессоров в два раза превышает количество ядер, у вас есть HT. Используйте следующий скрипт для декодирования /proc /cpuinfo :
В приведенных выше примерах показано, способен ли процессор к HT, но не используется. Последний метод работает, но не серверы с двойным сокетом и виртуальные машины, протестированные на Xenserver , где он не отображает физический процессор, поскольку их нет.
Я обнаружил, что это самый простой и понятный код, который также работал на всех моих тестовых средах. но требует bc .
Я считаю, что это будет работать на всех платформах и расскажет вам, способен ли его процессор, и если он включен. Может быть, немного беспорядочно, но я начинаю писать сценарии. Я тестировал с помощью centos XENSERVER vm, Ubuntu и Openfiler (rpath)
У меня есть похожий классный сценарий здесь , хотелось бы что вы думаете?
Вы можете проверить возможности HT CPU с помощью этой команды
Вы можете указать физический и логический процессор, наблюдаемый ядром, следующей командой:
Он дает этот вывод на одноядерном процессоре с поддержкой HT:
Вы можете прочитать результат следующим образом:
Этот один лайнер, похоже, делает трюк для меня (требует привилегий root):
Количество потоков в два раза больше, чем количество ядер, поэтому у меня включен hyperthreading.
Или, если вам действительно нужен ваш скрипт perl, как было запрошено .
Этот результат указывает, что HT включен, поскольку номер siblings (12) больше, чем cpu cores (6)
Если вы читаете /sys/devices/system/cpu/cpu0/topology/thread_siblings_list , он вернет список разделенных запятыми списков нитей (например, гипертекстовых «ядер») CPU 0 .
Например, на моем 2-сокетном 6-ядерном Xeon с включенным hyperthreading я получаю:
Но после отключения гиперпотока в BIOS я получаю:
Предполагая, что CPU 0 всегда будет доступен, а затем проверяет файл procfs thread_sibling_list CPU 0 для нескольких узлов или ищет запятую или даже просто что-то большее, чем 0 , укажет, включена ли гиперпоточность.
Я бы ответил в Perl, но 1) я не знаю Perl, и 2) я полагаю, что это решение довольно тривиальное однострочное.
Вот подход на основе python — он также предлагает способы его отключения, если это необходимо.
В Linux это хорошо работает:
В приведенном выше примере у нас есть 2 гнезда NUMA (SOCKET = 1 или 2). У нас есть 16 физических ядер (CORE = 0-15). У каждого CORE есть гиперссылка для родного брата (например, CORE = 0 содержит CPU 0,16.
Мы можем проверить гиперпоток следующим образом:
lscpu -p дает выход формата csv для простого разбора программ.
Лучше вы проверяете lscpu, где вы видите «Thread (s) на ядро: 1», означает только один поток на 1 ядро.
Лот оговорки и что-то в ответах здесь . кажется, ответ не так очевиден. lscpu имеет свой getcha, который применяется к любым «подсчетам ядра и логическим процессорам, а затем сравнивает» ответ. Поскольку вы можете отключить логические процессоры с помощью простой команды echo (. это может иметь решающее значение в большой корпоративной среде, в которой вы, в частности, работаете в режиме turbo).
Вот моя попытка; благодаря @scottbb для вдохновения:
На моих компьютерах на базе Dell Xeon список сестер включает запятую, когда HT включен. На моем ноутбуке он включает дефис (процессор i5-3210m). Поэтому я предпочитаю знаки препинания.
Источник
How to disable or enable hyper threading on my Linux server
Hyper threading uses processor resources more efficiently, enabling multiple threads to run on each
core. As a performance feature, it also increases processor throughput, improving overall performance on threaded software. A single physical CPU core with hyper-threading appears as two logical CPUs to an operating system.
The recommended way to disable HT is by disabling in the BIOS, if possible but this can also be done via operating system using the below steps.
Disable HT on runtime for individual logical CPUs
Before starting let’s check the lscpu stat
Here it shows that there are 2 threads per core so we know most likely hyper threading is enabled
The following files will show all of the logical CPU’s and their HT pair relationships
To determine which CPUs should be disabled, the threads running on the same CPU core have to be identified. The files /sys/devices/system/cpu/cpuN/topology/thread_siblings_list where N is the CPU socket number. This file will contain the logical (HT) CPU numbers for each physical socket.
This means that CPU0 and CPU16 are threads on the same core. The same for 1 and 17 and so on. Individual, logical HT CPUs could be turned off as needed for a specific application that is bound to a physical core.
Or the following script would disable all of them, from logical CPU 16 through 31
To disable individual logical CPU use the below command and replace with the id from (16..31)
To re-enable the HT
Disable HT permanently
For Linux Variants with GRUB
for example in SuSE Enterprise Linux 11
###Don’t change this comment – YaST2 identifier: Original name: linux###
title SUSE Linux Enterprise Server 11 SP4 – 3.0.101-71.1.10543.0.PTF
root (hd0,4)
kernel /vmlinuz root=/dev/md1 console=ttyS0,115200 console=tty0 splash=silent crashkernel= showopts panic=1 numa=off noht
initrd /initrd
Lastly reboot the server to activate the changes.
For Linux Variants with GRUB2
To disable hyper threading permanently append ‘ noht ‘ under ‘ GRUB_CMDLINE_LINUX ‘ in ‘ /etc/sysconfig/grub ‘ file as shown below
Next regenerate the grub2 configuration file using
Lastly reboot the server to activate the changes.
Источник
Thread: Can I enable Hyper-Threading?
Thread Tools
Display
Can I enable Hyper-Threading?
Hi
I’ve checked my CPU specs and it says that Hyper-Threading is supported.
When I use command:-
It tells me that Hyper-Threading is disabled.
When I looked in my BIOS settings there is no option there to enable/disable Hyper-Threading.
There are some threads on the UbuntuForums that suggest Hyper-Threading can be enabled by making an entry in the GRUB.
I think that these threads are out-dated now. I’m using a later version of GRUB.
So, has anybody been successful in enabling Hyper-Threading with Karmic Koala 9.10?
$ dmesg | grep CPU
[ 0.000000] Transmeta TransmetaCPU
[ 0.000000] SMP: Allowing 4 CPUs, 3 hotplug CPUs
[ 0.000000] NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:4 nr_node_ids:1
[ 0.000000] PERCPU: Embedded 14 pages at c1985000, static data 35612 bytes
[ 0.000000] Initializing CPU#0
[ 0.000000] SLUB: Genslabs=13, HWalign=128, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[ 0.001962] CPU: Trace cache: 12K uops, L1 D cache: 16K
[ 0.001967] CPU: L2 cache: 256K
[ 0.001972] CPU: Hyper-Threading is disabled
[ 0.001978] mce: CPU supports 4 MCE banks
[ 0.002003] CPU0: Thermal monitoring enabled (TM1)
[ 0.087381] CPU0: Intel(R) Celeron(R) CPU 2.26GHz stepping 01
[ 0.088001] Brought up 1 CPUs
[ 0.088001] CPU0 attaching NULL sched-domain.
[ 0.519637] ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU1._PDC] (Node f700e150), AE_INVALID_TABLE_LENGTH
[ 0.519762] processor LNXCPU:00: registered as cooling_device0
[ 0.519770] ACPI: Processor [CPU0] (supports 16 throttling states)
[ 0.696041] Switched to high resolution mode on CPU 0
Источник
Отключить гиперпоточность из Linux (нет доступа к BIOS)
У меня есть система, запускающая приложение для финансовой торговли на удаленном объекте. У меня нет доступа к МОТ / DRAC, но мне нужно отключить гиперпоточность. Система работает на шестиъядерных процессорах Intel Westmere 3,33 ГГц X5680. Я могу перезагрузиться, но хочу убедиться, что система не поддерживает гиперпоточность из-за проблем с производительностью. Есть ли чистый способ сделать это изнутри Linux?
Редактировать: noht директива, добавленная в командную строку загрузки ядра, не работает. То же самое для RHEL.
Вы можете сделать это во время выполнения, если хотите. Я нашел хорошее решение, описанное здесь: http://www.absolutelytech.com/2011/08/01/how-to-disable-cpu-cores-in-linux/
Шаг 1: Определите процессоры Linux, которые вы хотите отключить:
Ищите процессоры, которые имеют одинаковый «идентификатор ядра», вы хотите отключить одну из каждой пары.
Шаг 2: Отключить процессоры с гиперпоточностью (в моем случае последние четыре из 8 «процессоров», которые видел Linux)
Вы можете настроить скрипт, который вы запускаете сразу после запуска системы.
Скрипт для отключения гиперпоточности при запуске машины .
Чтобы отключить гиперпоточность, я включаю скрипт на машине /etc/rc.local. Он не совсем чистый, но простой в установке, независимый от архитектуры процессора и должен работать на любом современном дистрибутиве Linux.
Как это работает?
Информация о ядре Linux и элементы управления доступны в виде файлов в каталоге / sys в современных дистрибутивах Linux. Например:
/ sys / devices / system / cpu / cpu3 содержит информацию о ядре и элементы управления для логического процессора 3.
cat / sys / devices / system / cpu / cpu3 / topology / core_id покажет номер ядра, которому принадлежит этот логический процессор.
echo «0»> / sys / devices / system / cpu / cpu3 / online позволяет отключить логический процессор 3.
Почему это работает?
Я не знаю точно, почему . но система стала более отзывчивой с отключенной гиперпоточностью (на моем ноутбуке i5 и массивных серверах Xeon с более чем 60 ядрами). Я предполагаю, что это связано с кэшем для каждого процессора, выделением памяти для каждого процессора, выделением планировщика процессора и сложными итерациями приоритетов процесса. Я думаю, что преимущества гиперпоточности перевешивают сложность создания планировщиков ЦП, которые знают, как их использовать.
Для меня проблема с гиперпоточностью такова: если я запущу столько потоков с интенсивным использованием процессора, сколько у меня логических ядер, у меня будут быстрые переключатели контекста для задач с интенсивным использованием процессора, но дорогие для фоновых задач, поскольку гиперпоточность полностью используется интенсивные задачи процессора. С другой стороны, если я запускаю столько потоков с интенсивным использованием процессора, сколько у меня физических ядер, у меня не будет переключений контекста на эти задачи и быстрых переключений контекста для фоновых задач. Вроде бы хорошо, но фоновые задачи найдут свободные логические процессоры и будут работать почти сразу. Как будто они в реальном времени (неплохо -20).
В первом сценарии гиперпоточность — это пустяки, фоновые задачи будут использовать дорогие переключатели контекста, потому что я увеличил гиперпоточность при обычной обработке. Второе недопустимо, поскольку до 50% мощности моего процессора отдается приоритет фоновым задачам.
«Интенсивная загрузка процессора», о которой я говорю, — это интеллектуальный анализ данных и серверы авторизации (моя работа). Блендер рендеринг в дешевых компьютерах и кластерах (для эскиза моего будущего дома).
Кроме того, это догадки.
У меня такое впечатление, что лучше, но может и нет.
Источник
Отключить гиперпоточность в Ubuntu
Я работаю на сервере Ubuntu 16.04. Я вижу, что Hype Threading включен, когда я использую команду lscpu.
Я хочу отключить это. Я прошел форумы Ubuntu и здесь и здесь.
Это хорошие дискуссии, почему гиперпоточность может быть не очень хорошей. Но нет окончательного решения о том, как его отключить.
Кто-нибудь может дать инструкции по отключению гиперпоточности? Благодарю.
6 ответов
Вступление
Это интересный вопрос. Наверное, один из самых интересных за месяцы лично для меня. Как и OP, в моем старом BIOS нет опции отключения Hyper Threading (изобретена в 2012 году, обновлена в 2016 году или около того).
Ошибки Hyper-Threading в Intel Skylake и Kaby Lake:
Любой, кто использует процессоры Intel Skylake или Kaby Lake, должен прочитать отчеты об ошибках Hyper Threading, которые появились пару месяцев назад. В этой истории о регистрации в Великобритании рассказывается, как разработчики Debian обнаружили, как Hyper Threading может привести к сбою и повреждению компьютера.
За последний год в Ask Ubuntu сообщалось о множестве проблем со Skylake, и возникает вопрос, как определить, какие проблемы могли быть вызваны ошибками Hyper Threading.
Этот ответ делится на три части:
- Отображение процессоров, когда Hyper-Threading выключен / включен
- Скрипт Bash для автоматизации включения / выключения гиперпоточности
- Conky Сбои, если Hyper Threading отключен до его запуска
Отображение процессоров, когда Hyper-Threading выключен / включен
Ниже вы можете увидеть загрузку ЦП, когда гиперпоточность отключена и выполняется нагрузочный тест ЦП. Примерно через 10 секунд тот же сценарий повторяется с включенной гиперпоточностью. Наконец, через 10 секунд скрипт запускается с отключенной гиперпоточностью:
Дисплей разделен на две части:
- В левой половине окна терминала вызывается скрипт set-hyper-threading с параметром 0 (выкл.) и затем 1 (вкл.).
- На правой половине conky отображает процент использования ЦП CPUS от 1 до 8.
Первый скрипт запускает Hyper Threading
При первом запуске скрипта номера ЦП 2, 4, 6 и 8 (по словам Конки) замораживаются на 3%, 2%, 2% и 2%. При выполнении стресс-теста номера ЦП 1, 3, 5 и 7 достигают 100%.
Топология ЦП отображается с отключенной гиперпоточностью, и сообщается только о четырех ядрах:
Второй скрипт запускает Hyper Threading
Во второй раз, когда скрипт запускается, Hyper-Threading включается, и все процессорные номера 1-8 увеличиваются до 100% во время стресс-теста.
Топология ЦП отображается с включенной гиперпоточностью, и сообщается только о четырех ядрах плюс и четырех виртуальных ядрах:
Третий скрипт запускает Hyper Threading
Обратите внимание, как после окончания второго сценария процессоры 2, 4, 6 и 8 работают на холостом ходу 4%, 2%, 3%, 4%. Это важно, потому что в третьем тесте отключение Hyper-Threading показывает процент загрузки процессора, зафиксированный на уровне 4%, 2%, 3%, 4%, а не 3%, 2%, 2% и 2% от первого теста.
Поэтому отключение гиперпоточности просто останавливает виртуальные процессоры в текущем состоянии.
Также обратите внимание, что независимо от того, включен ли Hyper-Threading или нет, сценарий по-прежнему отображает «Hyper-Threading Supported».
Скрипт Bash для автоматизации включения / выключения гиперпоточности
При просмотре приведенного ниже сценария имейте в виду, что Conky нумерует ЦП от 1 до 8, а Linux нумерует ЦП от 0 до 7.
ПРИМЕЧАНИЕ: программа stress встроен во все системы Debian, производная от Ubuntu. Поэтому вам не нужно загружать и устанавливать какие-либо пакеты для запуска этого скрипта в Ubuntu.
Если у вас двухъядерный процессор, вы должны удалить его (или закомментировать # ) линии, управляющие процессорами с номерами 5 и 7.
Кредит Hi-Angel для bash line grep «» /sys/devices/system/cpu/cpu*/topology/core_id отображение топологии процессора.
Conky Сбои, если Hyper Threading отключен до его запуска
Чтобы получить максимально возможную загрузку процессоров 2, 4, 6, 8, я попытался отключить Hyper-Threading во время загрузки. Я использовал этот скрипт для этого:
тем не мение conky вылетает из-за ошибки сегментации, если при запуске гиперпоточность отключена. Таким образом, я должен был закомментировать четыре @reboot строки в скрипте.
Conky Code для отображения процента использования процессора и коэффициента загрузки
Если вы заинтересованы в настройке подобного дисплея в Conky, вот соответствующий фрагмент кода:
ПРИМЕЧАНИЕ. Приведенный выше код Nvidia никогда не тестировался, потому что у меня еще нет графического процессора Nvidia, работающего под Ubuntu. Любой год скоро сейчас:)
Источник