Я пытаюсь запустить некоторые тесты на многоядерной машине, и я бы хотел сказать ядру Linux просто избегать определенных ядер, если явно не указано их использовать.
Идея состоит в том, что я мог бы выделить несколько ядер (у машины есть 6 физических ядер) для бенчмаркинга и использовать маску процессора, чтобы разрешить только процессы бенчмарка на заданных ядрах.
Это возможно?
linux-kernel
cpu
benchmark
Лайос Надь
источник
источник
Ответы:
Вы можете изолировать некоторые ядра процессора от планирования ядра, используя
isolcpus
параметр. Добавьте этот параметр в ваш grub.conf и перезагрузитесь, чтобы изменения вступили в силу.источник
Вы хотите некоторую привязку процессора (или привязку процессора ).
Соответствующим системным вызовом является sched_setaffinity (2) , но вы должны использовать его через pthread_set_affinity_np (3), если вы хотите для этого кодировать свои тесты.
Связанная команда это taskset (1), и вы можете использовать ее в командах, которые вы хотите тестировать (или в вашей оболочке).
Если возможно, позаботьтесь о том, чтобы машина не была загружена другими задачами, не относящимися к тесту.
В качестве альтернативы, используйте некоторый гипервизор, такой как Xen , и загрузите Linux в качестве гостевой ОС для этого гипервизора. Затем настройте
xen
использование только ограниченного набора ядер ЦП (я не знаю точных деталей, вам нужно это выяснить). В Debian (и связанных с ними) распределений, можно установить пакеты , такие какxen-linux-system-amd64
,xen-hypervisor-amd64
, иxen-utils
т.д. (я использую на Debian / Sidxen-hypervisor-4.5-amd64
,xen-linux-system-4.0.0-1-amd64
, иxen-utils-4.5
т.д. ...).Возможно, существует какой-то способ настройки (возможно, во время компиляции ядра или передачи конкретных аргументов в ядро через загрузчик Grub) вашего ядра Linux, чтобы ограничить количество используемых ядер.
Конечно, лучше, когда бенчмаркинг некоторые программы -EG на рабочем столе Linux PC-, позаботиться , чтобы избежать многих внешних запущенных процессов (использование
ps auxw
,pstree -p
,top
чтобы найти их). По крайней мере, закройте и закройте большинство интерактивных приложений (браузер, такой как Firefox, электронная почта, редактор, IDE, например, Eclipse) и оставьте лишь небольшое количество терминалов для сравнения. Можно даже эталоном в пакетном режиме ( с использованиемbatch
илиat
для запуска тестов) , пока вы еще не вошли в систему (так что не имеет GUI сессий а - ля Gnome или KDE или Xfce , и т.д ... работает).источник
at
илиbatch
), пока вы не вошли в систему (поэтому не запускайте какой-либо потребляющий сеанс).