Вы хотите некоторую привязку процессора (или привязку процессора ).
Соответствующим системным вызовом является sched_setaffinity (2) , но вы должны использовать его через pthread_set_affinity_np (3), если вы хотите для этого кодировать свои тесты.
Связанная команда это taskset (1), и вы можете использовать ее в командах, которые вы хотите тестировать (или в вашей оболочке).
Если возможно, позаботьтесь о том, чтобы машина не была загружена другими задачами, не относящимися к тесту.
В качестве альтернативы, используйте некоторый гипервизор, такой как Xen , и загрузите Linux в качестве гостевой ОС для этого гипервизора. Затем настройте xen
использование только ограниченного набора ядер ЦП (я не знаю точных деталей, вам нужно это выяснить). В Debian (и связанных с ними) распределений, можно установить пакеты , такие как xen-linux-system-amd64
, xen-hypervisor-amd64
, и xen-utils
т.д. (я использую на Debian / Sid xen-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 , и т.д ... работает).