Команда chcpu

Команда chcpu позволяет вызывать одноименную утилиту, осуществляющую управление состоянием центральных процессоров, установленных в ПК. Утилита позволяет активировать или деактивировать центральные процессоры или их отдельные ядра в процессе работы операционной системы. Разумеется, утилита не сможет деактивировать все доступные центральные процессоры, так как в таком случае работа компьютера станет попросту невозможной. Для получения информации о доступных центральных процессорах, установленных в системе, следует использовать утилиту lscpu. Утилита принимает в качестве входного параметра номера центральных процессоров, записанные через запятую, либо диапазоны их номеров, записанные через дефис. Единственная функция данной утилиты, которая может понадобиться обычным пользователям ПК — это функция активации или деактивации центральных процессоров, а также функция принудительного сканирования центральных процессоров.

Базовый синтаксис команды выглядит следующим образом:

# chcpu [параметры] [номера или диапазоны номеров центральных процессоров]

Наиболее важными параметрами являются параметр -d, позволяющий деактивировать указанные центральные процессоры, параметр -e, позволяющий активировать указанные центральные процессоры, а также параметр -r, позволяющий пересканировать центральные процессоры.

Примеры использования

Деактивация и активация отдельных ядер центрального процессора

Команда lscpu может использоваться для получения информации о доступных центральных процессорах и их ядрах:

$ lscpu
Архитектура:             x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         36 bits physical, 48 bits virtual
  Порядок байт:          Little Endian
CPU(s):                  4
  On-line CPU(s) list:   0-3
ID прроизводителя:       GenuineIntel
  Имя модели:            Intel(R) Xeon(R) CPU X3430 @ 2.40GHz

Вывод сокращен, но вся необходимая информация доступна приведенном фрагменте: в компьютере установлен один центральный процессор с четырьмя ядрами, причем все ядра активны (On-line CPU(s) list).

Для сравнения также следует провести небольшое тестирование производительности (очень неточное):

$ 7za b

7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=ru_RU.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Xeon(R) CPU X3430 @ 2.40GHz (106E5),ASM)

Intel(R) Xeon(R) CPU           X3430  @ 2.40GHz (106E5)
CPU Freq: - - - - - - - - -

RAM size: 7950 MB, # CPU hardware threads:   4
RAM usage: 882 MB, # Benchmark threads:      4

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       9587   320   2918   9327  |     112066   379   2520   9561
23:       9584   330   2955   9765  |     109986   376   2528   9517
24:       9521   336   3048  10237  |     109039   377   2536   9572
25:       9441   343   3147  10780  |     106130   372   2536   9445
----------------------------------  |  ------------------------------
Avr:             332   3017  10027  |              376   2530   9524
Tot:             354   2774   9776

Для деактивации ядра центрального процессора достаточно использовать утилиту chcpu с параметром -d и номером этого ядра (нумерация начинается с 0):

$ sudo chcpu -d 1
[sudo] пароль для alex:
CPU 1 отключен

В соответствии с выводом, утилите удалось деактивировать ядро центрального процессора. Это несложно проверить с помощью утилиты lscpu:

$ lscpu
Архитектура:             x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         36 bits physical, 48 bits virtual
  Порядок байт:          Little Endian
CPU(s):                  4
  On-line CPU(s) list:   0,2,3
  Off-line CPU(s) list:  1
ID прроизводителя:       GenuineIntel
  Имя модели:            Intel(R) Xeon(R) CPU X3430 @ 2.40GHz

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

$ 7za b

7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=ru_RU.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Xeon(R) CPU X3430 @ 2.40GHz (106E5),ASM)

Intel(R) Xeon(R) CPU           X3430  @ 2.40GHz (106E5)
CPU Freq: - - - - - - - - -

RAM size: 7950 MB, # CPU hardware threads:   4
RAM usage: 882 MB, # Benchmark threads:      4

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       8224   270   2965   8001  |      81993   278   2520   6995
23:       7966   269   3014   8117  |      83259   285   2529   7204
24:       7833   271   3107   8423  |      81846   284   2534   7185
25:       7757   276   3212   8857  |      80760   284   2535   7188
----------------------------------  |  ------------------------------
Avr:             271   3075   8349  |              282   2530   7143
Tot:             277   2802   7746

Очевидно, что производительность системы снизилась. Для повторной активации этого ядра достаточно воспользоваться утилитой chcpu с параметром -e и его номером:

$ sudo chcpu -e 1
CPU 1 задействован

Утилита также вывела сообщение об успешном исполнении операции. Для проверки этого сообщения следует снова использовать утилиту lscpu:

$ lscpu
Архитектура:             x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         36 bits physical, 48 bits virtual
  Порядок байт:          Little Endian
CPU(s):                  4
  On-line CPU(s) list:   0-3
ID прроизводителя:       GenuineIntel
  Имя модели:            Intel(R) Xeon(R) CPU X3430 @ 2.40GHz

Все ядра центрального процессора вновь используются операционной системой.

Деактивация и активация нескольких ядер центрального процессора

Для деактивации сразу нескольких ядер центрального процессора следует использовать утилиту chcpu с параметром -d и либо перечислить их номера через запятую, либо задать диапазон их номеров через дефис:

$ sudo chcpu -d 1,2-3
CPU 1 отключен
CPU 2 отключен
CPU 3 отключен

В соответствии с выводом, утилите удалось деактивировать сразу несколько ядер центрального процессора. Это несложно проверить с помощью утилиты lscpu:

$ lscpu
Архитектура:             x86_64
  CPU op-mode(s):        32-bit, 64-bit
  Address sizes:         36 bits physical, 48 bits virtual
  Порядок байт:          Little Endian
CPU(s):                  4
  On-line CPU(s) list:   0
  Off-line CPU(s) list:  1-3
ID прроизводителя:       GenuineIntel
  Имя модели:            Intel(R) Xeon(R) CPU X3430 @ 2.40GHz

Ну или с помощью теста производительности:

$ 7za b

7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=ru_RU.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs Intel(R) Xeon(R) CPU X3430 @ 2.40GHz (106E5),ASM)

Intel(R) Xeon(R) CPU           X3430  @ 2.40GHz (106E5)
CPU Freq: - - - - - - - - -

RAM size: 7950 MB, # CPU hardware threads:   4
RAM usage: 882 MB, # Benchmark threads:      4

                       Compressing  |                  Decompressing
Dict     Speed Usage    R/U Rating  |      Speed Usage    R/U Rating
         KiB/s     %   MIPS   MIPS  |      KiB/s     %   MIPS   MIPS

22:       2598    80   3142   2528  |      26814    83   2760   2288
23:       2350    76   3149   2395  |      28061    88   2771   2428
24:       2648    87   3274   2848  |      26663    84   2773   2341
25:       2371    81   3343   2708  |      26266    84   2768   2338
----------------------------------  |  ------------------------------
Avr:              81   3227   2620  |               85   2768   2349
Tot:              83   2998   2484

Для активации ядер следует использовать параметр -e:

$ sudo chcpu -e 1,2-3
CPU 1 задействован
CPU 2 задействован
CPU 3 задействован

После этого система продолжит работать с полной производительностью.