Чи можна обмежити процес Linux так, щоб він міг працювати лише на певному ядрі на певній машині?


10

Скажімо, у мене є чотириядерний ящик і чотири однакові процеси, кожен з яких має десять ниток. Чи можливо в Linux сказати, що процес A дозволений для запуску лише на процесорі 0, процес B дозволений для запуску лише на процесорі 1 тощо?

Відповіді:


16
taskset <affinity mask> -p <process>

тобто

taskset 1 -p 12345

встановити процес 12345, щоб використовувати тільки процесор / ядро ​​1

Бітмаска може бути списком (тобто 1,3,4 для використання ядер 1 3 і 4 основної системи 4+) або бітовою маскою в шістнадцятковій формі (0x0000000D 1,3,4, 0x00000001 для лише ядра 1)

tasksetзазвичай знаходиться в пакеті під назвою shedutils.

Редагувати: майже забули ... Якщо ви хочете встановити спорідненість нової команди, а не змінити її на існуючий процес, використовуйте:

taskset <mask> <program> [<arg1>]...[<argN>]

1

використання набору завдань (util-linux 2.13-pre7): набір завдань [параметри] [маска | cpu-list] [pid | cmd [args ...]] встановити або отримати спорідненість процесу

-p, --використовуйте наявний заданий pid -c, --cpu-список і вкажіть cpus у форматі списку -h, - допомогти відобразити цю довідку -v, --версія інформації про вихідну версію

Типовою поведінкою є виконання нової команди: taskset 03 sshd -b 1024 Ви можете отримати маску існуючої задачі: taskset -p 700 Або встановити її: taskset -p 03 700 Формат списку використовує список, розділений комами, а не a маска: набір завдань -pc 0,3,7-11 700 Діапазони у форматі списку можуть мати суворий аргумент: наприклад, 0-31: 2 еквівалентно масці 0x55555555

ви завжди можете оптимізувати ваш сервер за потребою ур

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.