Вы можете попробовать поместить временный файл в / run, проверить при запуске, существует ли он. Если нет, вы можете повторить эхо, если оно есть, вы запускали его раньше. И когда вы закончите, удалите этот файл.
Puede usar taskset
para distribuir procesos manualmente entre núcleos configurando sus afinidades de subprocesos. Para averiguar qué subprocesos pertenecen a qué núcleos y procesadores, marque /proc/cpuinfo
como se muestra a continuación:
$ grep -E '^processor|^physical id|^core id' /proc/cpuinfo |sed 's/^processor/\nprocessor/'
processor : 0
physical id : 0
core id : 0
processor : 1
physical id : 0
core id : 1
processor : 2
physical id : 0
core id : 0
processor : 3
physical id : 0
core id : 1
$ _
processor
es el número de subproceso, physical id
es el número de CPU física y core id
es el número de núcleo. El resultado anterior proviene de una máquina con una sola CPU con dos núcleos y cuatro subprocesos.
taskset
se puede utilizar como taskset --all-tasks -p <hex_mask> <pid>
para modificar la afinidad de todos los subprocesos de un proceso existente. El hex_mask
es una máscara de bits donde cada bit representa un subproceso de CPU asignado y la numeración comienza desde la derecha. Por ejemplo, 0xa
para la máscara significa binario 0b1010
que indica una afinidad del hilo #1 y el hilo #3 para el proceso. El PID, espero, se explica por sí mismo -.
Если вы хотите избежать использования виртуальных ядер или «потоков», вы можете просто отключить эту функцию. Хотя отключение этой функции не обязательно улучшит производительность, это зависит от используемого вами серверного программного обеспечения (есть механизмы, которые лучше работают с HT/SMT, а другие нет ), вам, вероятно, следует протестировать его.
Согласно вашему сообщению, Intel X5650 имеет 6 ядер и 12 потоков каждый. Вы можете проверить это с помощью lscpu
. Например. следующий ЦП имеет 4 ядра и HT отключен:
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Вы можете проверить ядра HT, запустив:
# grep -H. /sys/devices/system/cpu/cpu*/topology/thread_siblings_list
Это выведет что-то вроде:
$ grep -H. /sys/devices/system/cpu/cpu*/topology/thread_siblings_list
/sys/devices/system/cpu/cpu0/topology/thread_siblings_list:X,Y
/sys/devices/system/cpu/cpu1/topology/thread_siblings_list:X,Y
/sys/devices/system/cpu/cpu2/topology/thread_siblings_list:X,Y
/sys/devices/system/cpu/cpu3/topology/thread_siblings_list:X,Y
Где X,Y — физический -Core -ID,HT -Core -ID, как в :0,4 (первый виртуальный ID ядра обычно следующий за последний физический ).
С этой информацией у вас есть 2 варианта отключения HT,в зависимости от вашего доступа к серверу:
Через настройки биоса (проще всего)
Через командную строку (перезагрузка не требуется)
disablevcore.sh
файл: #!/bin/bash
for i in {YY..YY}; do
echo "Disabling logical HT core $i."
echo 0 > /sys/devices/system/cpu/cpu${i}/online;
done
И замените YY..YY для идентификатора потока, который вы хотите отключить, согласно вашим процессорам, возможно, {6..11}. Хотя я не уверен, как нумерация работает на установках с несколькими сокетами -, поэтому вам следует внимательно проверить.
Другой вариант (2.a, если хотите ), отключить его в GRUB:
/etc/sysconfig/grub
(, если и добавьте noht
в строку, начинающуюся с:GRUB_CMDLINE_LINUX
. Это должно быть что-то вроде этого:GRUB_CMDLINE_LINUX="... noht..."
Hyper-threading is Intel's proprietary simultaneous multithreading implementation used to improve parallelization of computations performed on x86 microprocessors. It first appeared in February 2002 on Xeon server processors and in November 2002 on Pentium 4 desktop CPUs. Later, Intel included this technology in Itanium, Atom, and Core 'i' Series CPUs, among others.
https://en.wikipedia.org/wiki/Hyper-threading
Simultaneous multithreading is a technique for improving the overall efficiency of superscalar CPUs with hardware multithreading. SMT permits multiple independent threads of execution to better utilize the resources provided by modern processor architectures.
https://en.wikipedia.org/wiki/Simultaneous_multithreading
https://www.golinuxhub.com/2018/01/how-to-disable-or-enable-hyper.html