Как в Linux привязать процесс к CPU и установить атрибуты планирования
| [исправить ]
| При необходимости увеличить производительность определенного процесса в системе,
можно жестко привязать его к определенному CPU (CPU affinity), исключив
ситуацию мигрирования между процессорами, а также изменить для него алгоритм работы
планировщика задач и увеличить приоритет.
Привязка к CPU осуществляется командой taskset, а изменение параметров real-time
планирования командой chrt. Обе команды можно использовать каскадно, вызывая
одну в качестве аргумента другой.
Например:
taskset -c 2-3 chrt -f 1 <command>
привяжет выполнение команды к CPU со 2 по 3 ("-c 2-3", можно перечислять
процессоры через запятую, например, "-c 2,3"), а также задействует политику
планирования SCHED_FIFO ("-f") и установит приоритет 1 уровня.
Политики планирования (описание - man sched_setscheduler):
-b SCHED_BATCH
-f SCHED_FIFO
-o SCHED_OTHER
-r SCHED_RR
Изменение параметров для уже запущенного процесса производится при помощи опции "-p".
Например, изменение параметров процесса с PID 123:
taskset -c 2-3 -p 123
chrt -f 1 -p 123
|
как такое замутить в FreeBSD?
|
|
|
| 2 .3, grayich , 03:48, 14/03/2008 [^ ] [ответить ] [смотреть все ]
| + /–
| man rtprio для приоритета
|
|
|
| 3 .9, Аноним , 00:52, 17/03/2008 [^ ] [ответить ] [смотреть все ]
| + /–
| неа, man cpuset DESCRIPTION The cpuset command can be used to assign proces... весь текст скрыт [показать ]
|
|
|
|
|
1 .2, eee , 00:27, 14/03/2008 [ответить ] [смотреть все ]
| + /–
| Может такое подойдет для serial портов? Информация теряется, нехватает реал-тайма. Я уже rtlinux хотел ставить.
|
|
|
1 .4, i , 08:54, 14/03/2008 [ответить ] [смотреть все ]
| + /–
| у меня от этих манипуляций некоторые процессы перешли в состояние uninterrapt sleep :(
|
|
|
1 .5, pavlinux , 13:35, 14/03/2008 [ответить ] [смотреть все ]
| + /–
| bin bash DEV_IRQ ps -eL 124 grep IRQ 124 awk printf 1 ... весь текст скрыт [показать ]
|
|
|
| 2 .6, pavlinux , 13:52, 14/03/2008 [^ ] [ответить ] [смотреть все ]
| + /–
| 1. Установить патчик http://www.kernel.org/pub/linux/kernel/projects/rt/patch-2.6.24.3-rt3.bz2 2. Смотреть мануал на своб материнку, чипсет, и т.п. на предмет кто на каком CPU работает. (этот пример для вот этой матери - http://tyan.com/product_board_detail.aspx?pid=151 ) 3. User-space приложения лучше не chrt_аймить, ну если надо, то не более -f -p 2 'pidof foo', смотреть на nice level, демоны не связанные с железом тоже не надо, artsd - можно.
|
|
|
2 .7, pavlinux , 13:54, 14/03/2008 [^ ] [ответить ] [смотреть все ]
| + /–
| Чуть не забыл, утиль irq-balance тоже не забываем.
|
|
|
2 .10, Rush , 08:59, 02/03/2010 [^ ] [ответить ] [смотреть все ]
| +1 + /–
| >CPU_1_CORE_1=1 >CPU_1_CORE_2=2 >CPU_2_CORE_1=3 >CPU_2_CORE_2=4
Я, конечно, дико извиняюсь, но ИМХО должно быть что то вроде CPU_1_CORE_1=1 CPU_1_CORE_2=2 CPU_2_CORE_1=4 CPU_2_CORE_2=8
Соответственно, чтобы привязать прерывания, например, к 1-му процессору (невзирая на ядро) CPU_1=3 и, соответственно CPU2=12
Я ещё раз прошу прощения, информация чисто только что практически выдумана мной, ибо тысячу лет назад, на заре появления SMP я видел код планировщика, который стопудов по маске смотрел, а не по порядковому номеру. Возможно сейчас всё изменилось (но вряд ли).
|
|
|
| 3 .11, pavlinux , 14:09, 02/03/2010 [^ ] [ответить ] [смотреть все ]
| + /–
| >Я, конечно, дико извиняюсь, но ИМХО должно быть что то вроде >CPU_1_CORE_1=1 >CPU_1_CORE_2=2 >CPU_2_CORE_1=4 >CPU_2_CORE_2=8 >
>Соответственно, чтобы привязать прерывания, например, к 1-му процессору (невзирая на ядро) >CPU_1=3 >и, соответственно >CPU2=12
Я взирал на ядра :)
У меня например, на 2-х процессорной матери стоят двух ядерные процы...
2 сетевушки, EHCI_USB и OHCI_USB, 1 сетевуха конектится на 1 проц, 2 на второй, тоже самое с USB, так почему бы не разогнать прерывания от USB и Ethernet по разным ядрам...
CPU_1_CORE_1 = eth0 CPU_1_CORE_2 = uhci_usb CPU_2_CORE_1 = eth1 CPU_2_CORE_2 = ehci_usb
P.S. Клаву и часы лучше оставить на 0 ядре
|
|
|
| 4 .12, Rush , 15:46, 02/03/2010 [^ ] [ответить ] [смотреть все ]
| + /–
| Вообще наши админы тоже затрахали с этими процессорами и ядрами - ну какая разница сколько там микросхем стоит - ведь, когда объём памяти спрашивают, имеют ввиду совсем не количество планок :) Главное - ядра(чистыйизумруд) !
>CPU_1_CORE_1=1
>CPU_1_CORE_2=2
>CPU_2_CORE_1=3
>CPU_2_CORE_2=4
>Я взирал на ядра :)
Ядра(чистыйизумруд), и это бесспорно, но я имел ввиду ошибку в скрипте: не 1,2,3,4 а 1,2,4,8 ибо это маска, а не номер процессора/ядра :)
П.С.: читать "изумруд" как "кремний" :)
|
|
|
| 5 .13, pavlinux , 17:56, 02/03/2010 [^ ] [ответить ] [смотреть все ]
| + /–
| >[оверквотинг удален]
>ядра(чистыйизумруд) ! >
>>CPU_1_CORE_1=1
>>CPU_1_CORE_2=2
>>CPU_2_CORE_1=3
>>CPU_2_CORE_2=4
>>Я взирал на ядра :)
>
>Ядра(чистыйизумруд), и это бесспорно, но я имел ввиду ошибку в скрипте: не >1,2,3,4 а 1,2,4,8 ибо это маска, а не номер процессора/ядра :)
А,... ну да, я их вечно пустаю с утилью taskset
| |
|
|
|
|
|