Какой из этих процессов имеет более высокий приоритет?

Вопрос или проблема

Какой из этих процессов имел более высокий приоритет:

$ ps -o pri,nice -p 1525010
PRI  NI
 39 -20
$ ps -o pri,nice -p 1530075
PRI  NI
  0  19

Первый (1525010) вызвал setpriority(PRIO_PROCESS, 0, -20), второй (1530075) вызвал setpriority(PRIO_PROCESS, 0, 99).

Согласно https://linux.die.net/man/2/setpriority: низкие приоритеты обеспечивают более благоприятное планирование, но -20 имеет приоритет 39, в то время как 99 имеет приоритет 0, который выше.

Правильный ли этот анализ?

Согласно https://linux.die.net/man/2/setpriority: низкие приоритеты обеспечивают более благоприятное планирование

Да, как видно из вашего вывода, setpriority(PRIO_PROCESS, 0, -20) (наименьшее возможное значение) действительно привело к наивысшему приоритету в планировщике Linux.

Проблема в том, что термин “приоритет”, используемый в setpriority(), на самом деле относится к значению “nice”, а не к “родному” приоритету планировщика Linux.

Версия страницы справки getpriority(2), которую вы нашли, dated from 2012 года (я не думаю, что linux.die.net обновлял свою базу данных с тех пор); если вы посмотрите на более актуальную версию здесь или здесь, вы найдете пояснение, что “[t]атрибут процесса, с которым работают эти системные вызовы, является тем же атрибутом (также известным как значение “nice”), с которым работает nice(2).”

(Смотрите также getpriority(3p), который является POSIX справочник тех же функций.)

Ответ или решение

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

Из предоставленных данных:

  1. Процесс с PID 1525010:

    • Вывод команды ps показал: PRI 39, NI -20.
    • Для этого процесса была вызвана функция setpriority(PRIO_PROCESS, 0, -20).
  2. Процесс с PID 1530075:

    • Вывод команды ps показал: PRI 0, NI 19.
    • Для этого процесса была вызвана функция setpriority(PRIO_PROCESS, 0, 99).

На основе этих данных необходимо провести анализ. В Linux низкие значения "nice" (например, -20) означают более "высокий" приоритет для планировщика, поскольку меньшие значения приоритета предоставляют более благоприятные условия для планирования процесса (отсюда и утверждение, что "меньшие приоритеты способствуют более благоприятному планированию"). Для проверки этого утверждения можно обратиться к мануалу по функции setpriority().

Разъяснение:

При вызове setpriority() параметр, переданный в качестве "приоритета", в действительности является "значением нищеты" (nice value). Различие между "приоритетом" в контексте Linux и "значением нищеты" может ввести в заблуждение. Ваша путаница заключается в том, что терминология "приоритет" в данном случае не соответствует общей интуитивной интерпретации.

Сравнение:

  • Процесс с PID 1525010 имеет "nice" значение -20, что соответствует менее вредному воздействию на планировщик, но результат вывода ps показывает, что ему присвоен приоритет 39.
  • Процесс с PID 1530075, несмотря на то, что его "nice" значение составляет 19 (что указывает на менее приоритетное состояние) и соответствует приоритету 0, на самом деле представляет более высокий приоритет в контексте планирования.

Вывод:

Таким образом, с точки зрения значений "nice", процесс с PID 1525010 имеет более благоприятные условия для планирования, но его действительный приоритет (39) менее предпочтителен, чем у процесса с PID 1530075 (приоритет 0). В итоге, процесс с PID 1530075 имеет более высокий приоритет в контексте планирования в системе Linux, несмотря на то, что его значение "nice" выше.

Для завершения, важно помнить, что понимание термина "приоритет" в Linux требует внимания к различиям между значениями "nice" и "приоритетом" как таковым. Это знание может быть критически важным для администраторов систем и разработчиков, работающих с производительностью приложений и управлением ресурсами в среде Linux.

Оцените материал
Добавить комментарий

Капча загружается...