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

Я использовал команду "top " и наткнулся на приятное значение. Я знаю о приоритетах и ​​о том, как хорошее значение указывает на приоритет процесса. Но я не могу понять, что означает термин "без внимания" или "без внимания".

1 ответ

Решение

Эти термины просто указывают на то, было ли изменено стандартное значение процесса по умолчанию. "Замкнутый" процесс - это тот, который был запущен с nice команда (или чья милость была изменена renice) и "незаметным" процессом является тот, который не был запущен с nice, Хорошие значения по умолчанию для обычных процессов (те, которые не были запущены с nice command или чья милость не была впоследствии изменена renice PID) равно 0. Таким образом, "незамеченными" являются процессы с хорошим значением 0, а "отмеченными" являются процессы с хорошим значением!= 0.

Хорошее значение не указывает на приоритет процесса, оно указывает на правильность процесса. Вы можете увидеть оба значения в выводе top:

$ top -b -n1 | head
top - 15:23:10 up 20:59,  1 user,  load average: 1.41, 1.75, 1.88
Tasks: 222 total,   1 running, 221 sleeping,   0 stopped,   0 zombie
%Cpu(s): 14.2 us,  7.9 sy,  0.0 ni, 76.6 id,  0.6 wa,  0.0 hi,  0.6 si,  0.0 st
GiB Mem :    7.791 total,    3.082 free,    3.862 used,    0.846 buff/cache
GiB Swap:   16.000 total,   15.793 free,    0.207 used.    3.485 avail Mem 

  PID USER      PR  NI    VIRT    RES  %CPU %MEM     TIME+ S COMMAND
 1591 terdon    20   0 1605.1m 362.3m  18.8  4.5 285:46.34 S chromium
 1754 terdon    20   0  790.8m 184.5m  18.8  2.3 405:54.21 S chromium
 1186 terdon    20   0 1992.8m 459.6m  12.5  5.8 119:31.59 S cinnamon
                ^^  ^^
                 |   |---------> niceness
                 |-------------> priority

Если я сейчас установлю хорошее значение для одного из этих процессов хрома, вы увидите разницу:

$ renice 10 1591
1591 (process ID) old priority 0, new priority 10

$ top -b -n1 | head
top - 15:24:56 up 21:01,  1 user,  load average: 0.89, 1.48, 1.77
Tasks: 225 total,   1 running, 224 sleeping,   0 stopped,   0 zombie
%Cpu(s): 14.2 us,  7.9 sy,  0.0 ni, 76.6 id,  0.6 wa,  0.0 hi,  0.6 si,  0.0 st
GiB Mem :    7.791 total,    3.033 free,    3.908 used,    0.849 buff/cache
GiB Swap:   16.000 total,   15.793 free,    0.207 used.    3.439 avail Mem 

  PID USER      PR  NI    VIRT    RES  %CPU %MEM     TIME+ S COMMAND
 1591 terdon    30  10 1605.1m 362.6m  23.5  4.5 286:10.40 S chromium
 1754 terdon    20   0  790.8m 184.5m  18.8  2.3 405:54.21 S chromium
 1186 terdon    20   0 1992.8m 459.6m  12.5  5.8 119:31.59 S cinnamon

Хорошее значение процесса используется для определения его приоритета, но фактический приоритет процесса (PR колонка) это не то же самое, что его милость. Проще говоря, значения правильности определяют, насколько "приятен" процесс для других процессов вашей системы. Если он очень хороший (высокие значения), он будет "вежливым" и позволит другим процессам иметь приоритет и использовать больше процессорного времени (другими словами, он будет иметь низкий приоритет). Если это не очень хорошо, он попытается получить как можно больше процессорного времени для себя (поэтому он будет иметь высокий приоритет).

Чтобы сделать вещи еще более странными, значения приоритета варьируются от -20 (наивысший) до +20 (наименьший), а значения добротности варьируются от 19 (наивысшая точность, поэтому наименьший приоритет) до -20 (самая низкая точность, поэтому самая высокая приоритет).

Я не знаю точный механизм, с помощью которого значение милости превращается в приоритет. Детали, похоже, зависят от версии ядра и конкретной реализации (см. Раздел "Примечания" здесь). Однако, как грубое приближение, вы можете думать об этом как:

Priority = DefaultPriority + Niceness

Чтобы проиллюстрировать это, я запустил 3 экземпляра скрипта foo.sh (который просто запускает sleep команда) с разными значениями добротности:

foo.sh &                # default
nice -n 10 foo.sh
nice -n 15 foo.sh
sudo nice -n -10 foo.sh 

Последний использует sudo потому что только root может запускать процессы с отрицательным (высоким) приоритетом. Теперь посмотрим, каковы их приоритеты:

$ top -b -n1 | grep foo.sh
21958 terdon    20   0   13.3m   2.7m   0.0  0.0   0:00.00 S foo.sh
22148 terdon    30  10   13.3m   2.7m   0.0  0.0   0:00.00 S foo.sh
22181 terdon    35  15   13.3m   2.7m   0.0  0.0   0:00.00 S foo.sh
23480 root      10 -10   13.3m   2.6m   0.0  0.0   0:00.00 S foo.sh

Как вы можете видеть выше, приоритет равен сумме значения милости и 20, приоритета по умолчанию.

Другие вопросы по тегам