The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Как в 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
 
13.03.2008 , Источник: http://www.redhatmagazine.com/2008/...
Ключи: schedule, nice, cpu, realtime, proccess / Лицензия: CC-BY
Раздел:    Корень / Администратору / Система / Linux специфика / Оптимизация и тюнинг в Linux

Обсуждение [ Линейный режим | Показать все | RSS ]
 
  • 1.1, weec, 00:04, 14/03/2008 [ответить] [смотреть все]
  • +/
    как такое замутить в 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

     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:



      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor