LINUX.ORG.RU

как указать конкретные ядра для процессов?


0

2

есть VirtualBox Вы нем можно выставить, сколько давать ядер виртуадьной машине, но нельзя выставить какие именно ядра давать, а какие нет.

и получается, что виртуальная машина в разные моменты времени выполняется на разных ядрах.

это, в свою очередь, влечет за собой то, что рассчетная загрузка «размазывается» равномерно по всем ядрам

и это отражается на работе cool n quiet следующим образом: если в виртуальной машине запущен, например, winrar, то он загружает 100% ядра виртуальной машины, Линукс в разные моменты времени предоставляет разные ядра. Допустим, у нас 6тиядерник. получается, что винрар грузит каждое ядро на 100/6 ~ 17% а есть такая настройка up_threshold, которая указывает до скольки % нужно нагрузить ядро, чтобы множитель частоты повысился. Но как бы эта настройка не была настроена, оно ведет себя не логично — от этого винрара либо все 6 ядер прыгнут с х4 до х15 (с 800 мгц до 3000) (и это, ясное дело отразится на энергопотреблении), либо все останутся на 800мгц, и тогда винрар паковать будет в 3 раза дольше.

нужно, чтобы виртуальной машине выделялось одно конкретное ядро, и никакое другое. В идеале хочется, чтобы наоборот тоже работало - чтоб в это ядро другие процессы не лезли. Как такое сделать, и если да, то что гуглить?

приемлемое решение — в системе куча процессов, каждый процесс выполняется только на ядре под номером (pid % core_count). Или как-то так. Такое как-то делается?

schedtool -a X PID
где X одно из

AFFINITY MASK
       The affinity-argument determines on which CPUs a process is allowed to run. It consists of a simple bitmask represented in  hexadecimal.
       CPU0 is denoted by the least-significant bit, CPU1 by the second least-significant and so on, thus giving:

           0x1 -> only run on CPU0

           0x2 -> only run on CPU1

           0x4 -> only run on CPU2

           0x8 -> only run on CPU3 ... and so on.

       Multi-target CPUs may be specified using bitwise OR of the values:

           0x7 -> run on CPUs 0, 1, 2 but NOT on 4

           0x3 -> run only on CPUs 0 and 1

       The default is to run a process on all CPUs, giving a mask of

           0xf for all 4 CPUs

           0xff for all 8 CPUs

AFFINITY MASK - LIST MODE
       Alternatively  a  list  mode  is  supported  where you can specify the CPUs delimited by ",".  The following runs <PID> on CPU0 and CPU1
       (equivalent to 0x3):

          #> schedtool -a 0,1 <PID>

megabaks ★★★★
()

cgroups?
Загнать все процессы виртуалбокса в отдельную группу и привязать к конкретному ядру, все остальное - в другую группу и, соответственно, на другое ядро.

cchr
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.