Резервирование и аффинность CPU с использованием параметра адресата задач и ISOLCPUS с JVM?

Я не видел встроенной опции, поэтому вот одна идея:

#!/bin/bash

str="$1"

regex='^[]0-9a-zA-Z,!^`@{}=().;/~_|[-]+$'

if [[ $str =~ $regex ]]
then
  echo "matches"
  echo "Match: ${BASH_REMATCH[0]}"
else
  echo "doesn't match"
  for (( i = 0; i < ${#str}; i++ )) do
    c=${str:$i:1}
    if [[ ! $c =~ $regex ]]
    then
      echo Non-matching character at index $i: "$c"
    fi
  done
fi

Он просто перебирает символ $ str за символом, сравнивая этот символ с регулярным выражением $. .

1
25.12.2018, 16:58
1 ответ

Обычно вы используете tasksetдля ограничения процесса после его запуска. Вы можете использовать pidof java, чтобы определить, что такое PID для вашего Java-приложения, а затем передать его в taskset:

.
$ taskset -p $(pidof java) --cpu-list 0-2,5

ПРИМЕЧАНИЕ.:Если бы у вас было 6 процессоров, 0,1,2,5 назначали бы привязку к этим процессорам для PID вашей JVM.

Имейте в виду, что сходство не ограничивает другие процессы в использовании этих ЦП, tasksetесли это скорее инструмент ограничения конкретного процесса или процессов определенным набором ЦП, а не ограничение исключительности.

выдержка из справочной страницы набора задач

taskset is used to set or retrieve the CPU affinity of a running process given its PID or to launch a new COMMAND with a given CPU affinity. CPU affinity is a scheduler property that "bonds" a process to a given set of CPUs on the system. The Linux scheduler will honor the given CPU affinity and the process will not run on any other CPUs. Note that the Linux scheduler also supports natural CPU affinity: the scheduler attempts to keep processes on the same CPU as long as practical for performance reasons. Therefore, forcing a specific CPU affinity is useful only in certain applications.

Альтернативы

Этот самостоятельный ответ U&L Q&A под названием:Как использовать контрольные группы, чтобы ограничить все процессы, кроме белого списка, одним процессором? раскрывает тему того, как это сделать с помощью cgroups.

Ссылки

0
28.01.2020, 00:31

Теги

Похожие вопросы