Указание ядру Linux * не * использовать определенные процессоры


8

Я пытаюсь запустить некоторые тесты на многоядерной машине, и я бы хотел сказать ядру Linux просто избегать определенных ядер, если явно не указано их использовать.

Идея состоит в том, что я мог бы выделить несколько ядер (у машины есть 6 физических ядер) для бенчмаркинга и использовать маску процессора, чтобы разрешить только процессы бенчмарка на заданных ядрах.

Это возможно?


Какие фактические тесты вы хотите выполнить?
— Василий Старынкевич

Ответы:


5

Вы можете изолировать некоторые ядра процессора от планирования ядра, используя isolcpusпараметр. Добавьте этот параметр в ваш grub.conf и перезагрузитесь, чтобы изменения вступили в силу.


2
Ссылка мертва. Лучше всего включить пример непосредственно в ответ.
— pchaigno

4

Вы хотите некоторую привязку процессора (или привязку процессора ).

Соответствующим системным вызовом является 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 , и т.д ... работает).


Установление соответствия задач для сравнения недостаточно. Вы должны также держать другие задачи подальше. То, что делает ваше предложение гипервизора, но очень жестким способом.
— Жиль "ТАК - перестань быть злым"

@Gilles: почему для целей бенчмаркинга нужны другие задачи? На практике при тестировании ПК часто простаивает ... Для дорогостоящего сервера все иначе!
— Василий Старынкевич

Например, потому что вы проводите тестирование на своем настольном ПК, который также тратит ресурсы на Firefox, Eclipse и другие чрезвычайно сложные задачи.
— Жиль "ТАК - перестань быть злым"

На вашем собственном настольном ПК вы можете довольно легко остановить самые трудоемкие задачи (например, закрыть и выйти из firefox и затмения) во время сравнительного анализа. Вы даже можете запустить тесты в пакетном режиме (используя atили batch), пока вы не вошли в систему (поэтому не запускайте какой-либо потребляющий сеанс).
— Василий Старынкевич
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.