Страница 1 из 1

отключение/включение CPU

Добавлено: 16 апр 2017, 15:21
Olej
Эта тема временами мелькает, например здесь: отключение CPU без перезагрузки системы.
Но её чаще упоминают в обсуждениях администраторы могучих корпоративных серверов, когда несколько сокетов, на которых установлены чипы CPU, и таким способом можно (в крайнем случае) заменить один из CPU в горячем режиме, не останавливая работу сервера.

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

Re: отключение/включение CPU

Добавлено: 16 апр 2017, 15:23
Olej
Но, попутно, там очень любопытные детали вылезают...
Это Mint 18.1 ...

Код: Выделить всё

olej@nvidia /sys/devices/system/cpu $ lsb_release -a
No LSB modules are available.
Distributor ID:	LinuxMint
Description:	Linux Mint 18.1 Serena
Release:	18.1
Codename:	serena
Процессор:

Код: Выделить всё

olej@nvidia /sys/devices/system/cpu $ lscpu
Архитектура:x86_64
CPU op-mode(s):        32-bit, 64-bit
Порядок байтов:Little Endian
CPU(s):                2
On-line CPU(s) list:   0,1
Потоков на ядро:1
Ядер на сокет:2
Сокет(ы):        1
NUMA node(s):          1
Vendor ID:             GenuineIntel
Семейство CPU:6
Модель:          23
Model name:            Pentium(R) Dual-Core  CPU      E6600  @ 3.06GHz
Stepping:              10
CPU МГц:            1603.000
CPU max MHz:           3066,0000
CPU min MHz:           1603,0000
BogoMIPS:              6138.85
Виртуализация:VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              2048K
NUMA node0 CPU(s):     0,1
Flags:                 fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm xsave lahf_lm tpr_shadow vnmi flexpriority dtherm
Т.е. имеем Dual-Core 2 ядра с гипертриэдингом.
А теперь настройки:

Код: Выделить всё

olej@nvidia /sys/devices/system/cpu $ cat /proc/cpuinfo | grep processor | wc -l
2
olej@nvidia /sys/devices/system/cpu $ pwd
/sys/devices/system/cpu
olej@nvidia /sys/devices/system/cpu $ cat online 
0-1
olej@nvidia /sys/devices/system/cpu $ cat offline 
2-3
О-ба-на :!: :shock:
Получается ( :?: ) что гипертриэдинг у них отключен?

Re: отключение/включение CPU

Добавлено: 16 апр 2017, 15:25
Olej
Olej писал(а):Но, попутно, там очень любопытные детали вылезают...
А это вот Fedora 23 ...

Код: Выделить всё

[olej@dell cpu]$ lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID:	Fedora
Description:	Fedora release 23 (Twenty Three)
Release:	23
Codename:	TwentyThree
Процессор:

Код: Выделить всё

[olej@dell 16]$ lscpu
Архитектура:x86_64
CPU op-mode(s):        32-bit, 64-bit
Порядок байт:Little Endian
CPU(s):                8
On-line CPU(s) list:   0-7
Thread(s) per core:    2
Ядер на сокет:4
Сокетов:        1
NUMA node(s):          1
ID прроизводителя:GenuineIntel
Семейство ЦПУ:6
Модель:          30
Имя модели:   Intel(R) Core(TM) i7 CPU       Q 720  @ 1.60GHz
Степпинг:      5
CPU MHz:               933.000
CPU max MHz:           1600,0000
CPU min MHz:           933,0000
BogoMIPS:              3192.24
Виртуализация:VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              6144K
NUMA node0 CPU(s):     0-7
Флаги:            fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm tpr_shadow vnmi flexpriority ept vpid dtherm ida
i7, 4 ядра, с гипертриэдингом.
Но :!:

Код: Выделить всё

[olej@dell 16]$ cat /proc/cpuinfo | grep processor | wc -l
8
[olej@dell 16]$ cd /sys/devices/system/cpu
[olej@dell cpu]$ cat online
0-7
[olej@dell cpu]$ cat offline

Получается, разные дистрибутивы по разному используют гипертриэдинг. :?:
Это не очевидно и достаточно серьёзно!
Т.е. один и тот же Linux, на однм и том же CPU будет использовать в одном случае 8 процессоров (в смысле /proc/cpuinfo), а в другом случае - 4.

Re: отключение/включение CPU

Добавлено: 17 апр 2017, 00:01
Olej
Теперь о отключении/включении CPU...
Для экспериментов возьму "чистый" процессор Xeon, без гипертриэдинга, число CPU совпадает с числом ядер:

Код: Выделить всё

[olej@xeon ~]$ lscpu
Архитектура:x86_64
CPU op-mode(s):        32-bit, 64-bit
Порядок байт:Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Ядер на сокет:4
Сокетов:        1
NUMA node(s):          1
ID прроизводителя:GenuineIntel
Семейство ЦПУ:6
Модель:          23
Имя модели:   Intel(R) Xeon(R) CPU           L5420  @ 2.50GHz
Степпинг:      6
CPU MHz:               2003.000
CPU max MHz:           2499,0000
CPU min MHz:           2003,0000
BogoMIPS:              5000.13
Виртуализация:VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              6144K
NUMA node0 CPU(s):     0-3
Флаги:            fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf eagerfpu pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 lahf_lm tpr_shadow vnmi flexpriority dtherm
Система Fedora 24:

Код: Выделить всё

[olej@xeon ~]$ lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	Fedora
Description:	Fedora release 24 (Twenty Four)
Release:	24
Codename:	TwentyFour

Код: Выделить всё

[root@xeon ~]# cd /sys/devices/system/cpu
[root@xeon cpu]# ls -l
итого 0
drwxr-xr-x. 8 root root    0 Апр 16 13:53 cpu0
drwxr-xr-x. 8 root root    0 Апр 16 13:53 cpu1
drwxr-xr-x. 8 root root    0 Апр 16 13:53 cpu2
drwxr-xr-x. 8 root root    0 Апр 16 13:53 cpu3
drwxr-xr-x. 7 root root    0 Апр 16 14:12 cpufreq
drwxr-xr-x. 2 root root    0 Апр 17 00:01 cpuidle
drwxr-xr-x. 2 root root    0 Апр 17 00:01 hotplug
-r--r--r--. 1 root root 4096 Апр 17 00:01 isolated
-r--r--r--. 1 root root 4096 Апр 17 00:01 kernel_max
drwxr-xr-x. 2 root root    0 Апр 17 00:01 microcode
-r--r--r--. 1 root root 4096 Апр 17 00:01 modalias
-r--r--r--. 1 root root 4096 Апр 17 00:01 nohz_full
-r--r--r--. 1 root root 4096 Апр 17 00:01 offline
-r--r--r--. 1 root root 4096 Апр 16 13:53 online
-r--r--r--. 1 root root 4096 Апр 17 00:01 possible
drwxr-xr-x. 2 root root    0 Апр 17 00:01 power
-r--r--r--. 1 root root 4096 Апр 17 00:01 present
-rw-r--r--. 1 root root 4096 Апр 17 00:01 uevent

[root@xeon cpu]# cat online 
0-3
[root@xeon cpu]# cat offline 


Re: отключение/включение CPU

Добавлено: 17 апр 2017, 00:14
Olej
Olej писал(а):Теперь о отключении/включении CPU...
Для экспериментов возьму "чистый" процессор Xeon, без гипертриэдинга, число CPU совпадает с числом ядер:
...
Система Fedora 24:
Отключаю:

Код: Выделить всё

[root@xeon cpu]# echo 0 > cpu0/online
-bash: cpu0/online: Permission denied
[root@xeon cpu]# 
[root@xeon cpu]# echo 0 > cpu1/online
[root@xeon cpu]# echo 0 > cpu2/online
[root@xeon cpu]# cat offline 
1-2
[root@xeon cpu]# cat online 
0,3

Код: Выделить всё

[root@xeon cpu]# lscpu
Архитектура:x86_64
CPU op-mode(s):        32-bit, 64-bit
Порядок байт:Little Endian
CPU(s):                4
On-line CPU(s) list:   0,3
Off-line CPU(s) list:  1,2
Thread(s) per core:    1
Ядер на сокет:2
Сокетов:        1
NUMA node(s):          1
ID прроизводителя:GenuineIntel
Семейство ЦПУ:6
Модель:          23
Имя модели:   Intel(R) Xeon(R) CPU           L5420  @ 2.50GHz
Степпинг:      6
CPU MHz:               2003.000
CPU max MHz:           2499,0000
CPU min MHz:           2003,0000
BogoMIPS:              5000.13
Виртуализация:VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              6144K
NUMA node0 CPU(s):     0,3
Флаги:            fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good nopl aperfmperf eagerfpu pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm dca sse4_1 lahf_lm tpr_shadow vnmi flexpriority dtherm

Код: Выделить всё

[root@xeon cpu]# cat /proc/cpuinfo | grep processor | wc -l
2
Смотрю чем отличается CPU0 от остальных процессоров:

Код: Выделить всё

[root@xeon cpu]# ls -l cpu[1-3]/online 
-rw-r--r--. 1 root root 4096 Апр 17 00:06 cpu1/online
-rw-r--r--. 1 root root 4096 Апр 17 00:07 cpu2/online
-rw-r--r--. 1 root root 4096 Апр 16 13:53 cpu3/online
[root@xeon cpu]# ls -l cpu0/online 
ls: невозможно получить доступ к 'cpu0/online': No such file or directory
Т.е. отключить процессор CPU0 мы не сможем!

Re: отключение/включение CPU

Добавлено: 17 апр 2017, 00:19
Olej
Olej писал(а): Отключаю:
Теперь снова их включаю:

Код: Выделить всё

[root@xeon cpu]# echo 1 > cpu1/online
[root@xeon cpu]# echo 1 > cpu2/online
Теперь процессоров снова 4:

Код: Выделить всё

[root@xeon cpu]# cat online 
0-3
[root@xeon cpu]# cat offline 

[root@xeon cpu]# cat /proc/cpuinfo | grep processor | wc -l
4

Re: отключение/включение CPU

Добавлено: 17 апр 2017, 00:51
Olej
Olej писал(а):Т.е. отключить процессор CPU0 мы не сможем!
Mint 17.3

Код: Выделить всё

atom cpu # lsb_release -a
No LSB modules are available.
Distributor ID:	LinuxMint
Description:	Linux Mint 17.3 Rosa
Release:	17.3
Codename:	rosa
atom cpu # cat /proc/cpuinfo | grep processor | wc -l
2
Здесь есть какие-то странности:

Код: Выделить всё

atom ~ # cd /sys/devices/system/cpu
atom cpu # cat online
0-1
atom cpu # cat offline
2-7
Но точно также CPU0 не подлежит отключению:

Код: Выделить всё

atom cpu # ls -l cpu0/online
ls: невозможно получить доступ к cpu0/online: Нет такого файла или каталога
atom cpu # ls -l cpu1/online
-rw-r--r-- 1 root root 4096 Апр 16 13:37 cpu1/online
Mint 18.1
Та же история:

Код: Выделить всё

olej@nvidia ~ $  cd /sys/devices/system/cpu
olej@nvidia /sys/devices/system/cpu $ lsb_release -a
No LSB modules are available.
Distributor ID:	LinuxMint
Description:	Linux Mint 18.1 Serena
Release:	18.1
Codename:	serena
olej@nvidia /sys/devices/system/cpu $ cat /proc/cpuinfo | grep processor | wc -l
2

Код: Выделить всё

olej@nvidia /sys/devices/system/cpu $ ls -l cpu0/online
ls: невозможно получить доступ к 'cpu0/online': Нет такого файла или каталога
olej@nvidia /sys/devices/system/cpu $ ls -l cpu1/online
-rw-r--r-- 1 root root 4096 Апр 16 14:31 cpu1/online