Сначала вопрос кажется немного глупым / запутанным, поскольку ОС выполняет работу по управлению выполнением процесса.
Однако я хочу измерить, насколько некоторые процессы связаны с процессором / вводом-выводом, и я чувствую, что моя ОС мешает моим экспериментам, например, с запланированными процессами ОС.
Возьмем в качестве примера следующую ситуацию: я дважды запустил процесс A и получил следующий вывод из инструмента «время» (столбцы времени в секундах):
+---+-------+---------+-----------+---------+
|Run|Process|User Time|System Time|Wall time|
+---+-------+---------+-----------+---------+
|1 |A |196.3 |5.12 |148.86 |
|2 |A |190.79 |4.93 |475.46 |
+---+-------+---------+-----------+---------+
Как мы видим, хотя время пользователя и системы схожи, истекшее время обоих резко меняется (разница ~ 5 минут). Чувствуется, что что-то в моей среде вызвало какие-то разногласия.
Я хочу остановить все возможные фоновые процессы / сервисы, чтобы избежать какого-либо шума во время моих экспериментов, но я считаю себя новичком / промежуточным пользователем Unix и не знаю, как это гарантировать.
Я использую Linux 4.4.0-45-generic с Ubuntu 14.04 LTS 64 bit.
Я действительно ценю помощь. Если вам, ребята, нужна недостающая информация, я быстро отредактирую свой пост.
Информация о процессоре
$ grep proc /proc/cpuinfo | wc -l
8
$ lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 60
Stepping: 3
CPU MHz: 4002.609
BogoMIPS: 7183.60
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 8192K
NUMA node0 CPU(s): 0-7
источник
nice -19 process
Ответы:
У вас есть конфигурация опций ядра, где ЦП не будет использоваться ОС, это называется
isolcpus
.Эта конфигурация, которую я собираюсь описать, как настроить, может иметь гораздо больше применений, чем для тестирования.
Например, Meru использует эту технологию в своих контроллерах AP на базе Linux, чтобы сетевой трафик не вмешивался во внутреннюю работу ОС, а именно в операции ввода-вывода.
Я также использую его в очень загруженном веб-интерфейсе по тем же причинам: из своего жизненного опыта я узнал, что слишком часто терял контроль над собой на мой вкус этого сервера; пришлось принудительно перезагружать его, пока я не отделил интерфейсный демон на его собственных выделенных процессорах.
Поскольку у вас 8 процессоров, вы можете проверить это с помощью вывода команды:
или
Добавьте в файл Debian / Ubuntu в
/etc/default/grub
опциюGRUB_CMDLINE_LINUX
:(это 7, потому что он начинается с 0, и у вас есть 8 ядер)
Тогда беги,
Это говорит ядру не использовать одно из ваших ядер.
Перезагрузите систему.
Тогда начни свой процесс.
Сразу после запуска вы можете перейти на 8-й процессор (7, потому что 0 - 1-й), и быть уверенным, что вы единственный, кто использует этот процессор.
Для этого используйте команду:
Чтобы узнать больше об этом, смотрите: isolcpus, numactl и taskset
Также используя,
ps -eF
вы должны увидеть в столбце PSR используемый процессор.У меня есть сервер с изолированными процессором 2 и 3, и действительно, это можно увидеть с
ps -e
единственным процессом в пользовательском пространстве, как задуманоpound
.Если вы сравните его с неизолированными процессорами, они работают гораздо больше (окно ниже слайдов ):
источник
isolcpus