Я использую taskset для присвоения ядер процессора 4-7 процессу Java, который обычно использует ~200-400% ЦП. Ядра 4-7 были изолированы на начальной загрузке поэтому, только процесс Java должен работать на них.
В конечном счете taskset, кажется, блокирует вниз порожденный процесс Java к одному из этих четырех ядер вместо того, чтобы присвоить его всем ядрам.
Команда, которую я использую, похожа:
taskset -c 4,5,6,7 java [...] -jar [...]
Используя taskset -c 4,5,6,7 stress -c 4
ведет себя то же и использует только одно ядро.
Как я могу присвоить все четыре ядра процессу Java?
Я нашел ответ самостоятельно: это просто добавляет -a
опция, которая делает , как упомянуто в справке (taskset -h
)
, "воздействуют на все задачи (потоки) для данного изодромного с предварением
, Таким образом, рабочая команда
taskset -cpa 4-7 $(pgrep -n java)
pgrep
, используется здесь для получения PID последнего запущенного процесса Java.
я надеюсь, что этот ответ мог бы помочь кому-то, кто пытается присвоить несколько ядер процессора одному процессу и всем его потокам без использования сложных систем контейнеров или VM's.