Поиск по сайту:

Учебное пособие по командам набора задач Linux для начинающих (с примерами)


На этой странице

  1. Команда набора задач Linux
  2. Q1. Как использовать набор задач для получения привязки процессора к процессу?
  3. Вопрос 2. Как изменить привязку процессора с помощью набора задач?
  4. Вопрос 3. Как назначить диапазон процессоров при изменении привязки?
  5. Q4. Как запустить процесс с предопределенной привязкой к ЦП?
  6. Заключение

Вы когда-нибудь слышали о термине «близость к процессору»? Это функция, которая позволяет вам привязывать или отвязывать процессы от определенного центрального процессора или ряда процессоров. Да, вы можете указать системе, какие ядра ЦП следует использовать для запуска определенного процесса. Теоретические подробности о том, почему существует сходство процессоров, см. здесь.

Здесь, в этом уроке, мы обсудим утилиту, названную набором задач, которая позволяет вам добиться сходства процессоров. Но прежде чем мы это сделаем, стоит упомянуть, что все примеры в этом руководстве были протестированы на компьютере с Ubuntu 22.04 LTS и на Debian 11.

Команда набора задач Linux

Команда taskset позволяет установить или получить привязку процессов к ЦП. Ниже приведен его синтаксис:

taskset [options] mask command [argument...]
taskset [options] -p [mask] pid

Вот как это объясняет справочная страница инструментов:

       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 practi?
       cal for performance reasons.  Therefore, forcing a specific CPU  affin?
       ity is useful only in certain applications.

       The CPU affinity is represented as a bitmask, with the lowest order bit
       corresponding to the first logical CPU and the highest order bit corre?
       sponding  to  the  last logical CPU.  Not all CPUs may exist on a given
       system but a mask may specify more CPUs than are present.  A  retrieved
       mask  will  reflect only the bits that correspond to CPUs physically on
       the system.  If an invalid mask is given (i.e., one that corresponds to
       no  valid  CPUs on the current system) an error is returned.  The masks
       may be specified in hexadecimal (with or without a leading "0x"), or as
       a CPU list with the --cpu-list option.  For example,

           0x00000001  is processor #0,

           0x00000003  is processors #0 and #1,

           0xFFFFFFFF  is processors #0 through #31,

           32          is processors #1, #4, and #5,

           --cpu-list 0-2,6
                       is processors #0, #1, #2, and #6.

       When  taskset returns, it is guaranteed that the given program has been
       scheduled to a legal CPU.

Ниже приведены несколько примеров в стиле вопросов и ответов, которые должны дать вам лучшее представление о том, как работает команда taskset.

Q1. Как использовать набор задач для получения привязки процессора к процессу?

Если вы хотите, чтобы набор задач отображал привязку процессора к уже запущенному процессу, используйте команду следующим образом:

taskset -p [PID]

Просто замените PID на идентификатор процесса, привязку к процессору которого вы хотите получить. Вы можете получить идентификатор процесса процесса, например. с помощью команды ps.

ps aux

Идентификатор процесса находится в столбце PID.

Например:

taskset -p 2363

Приведенная выше команда вернула следующий вывод:

pid 2363's current affinity mask: 3

Таким образом, шестнадцатеричное значение 3 означает, что процесс может работать на любом из 4 ядер процессора: 0,1,2,3.

Если вы хотите, чтобы вывод был в терминах диапазона ЦП, вы можете добавить параметр командной строки -c.

taskset -cp 9726

Ниже приведен вывод в этом случае:

pid 9726's current affinity list: 0-3

Q2. Как изменить привязку процессора с помощью набора задач?

Чтобы настроить привязку ЦП к существующему процессу, вам нужно указать идентификатор процесса (как мы сделали в предыдущем разделе) вместе с шестнадцатеричной маской, которая определяет новую привязку.

Например, текущая привязка ЦП процесса Gedit (PID: 9726) — f.

Чтобы изменить сходство на 0x11, используйте следующую команду:

taskset -p 0x11 9726

И тогда вы можете снова проверить новую близость, используя следующую команду:

taskset -p 9726

На следующих снимках экрана показаны выходные данные для этих команд в моем случае:

Итак, вы можете видеть, что сходство изменилось.

Q3. Как назначить диапазон процессоров при изменении привязки?

В этом нет ничего страшного. Все, что вам нужно сделать, это добавить параметр командной строки -c к команде, которую мы использовали в предыдущем разделе, вместе с диапазоном ядер ЦП в качестве входных данных.

Вот пример:

набор задач -cp 0,3 9726

Ниже приведен вывод, полученный в этом случае:

pid 9726's current affinity list: 0
pid 9726's new affinity list: 0,3

Q4. Как запустить процесс с предопределенной привязкой к ЦП?

Да, вы также можете запустить процесс с установленной привязкой к ЦП.

Например, я запустил текстовый редактор gedit с привязкой к процессору 0xa.

набор задач 0xa gedit

Заключение

Согласитесь, команда taskset не для обычного пользователя командной строки. В основном он используется экспертами на стороне сервера для оптимизации процессов в многоядерной среде. Мы обсудили основы инструментов здесь. Для получения дополнительной информации перейдите на его справочную страницу.