Приоритет процесса найденный программно и с помощью ps разный, почему так?

Knoppix

Модераторы: Warderer, Модераторы разделов

Аватара пользователя
жучара
Сообщения: 1085
ОС: астралинукс

Приоритет процесса найденный программно и с помощью ps разный, почему так?

Сообщение жучара »

Друзья! Запустим процесс, найдём его приоритет и пусть минутки 3 поработает:

Код: Выделить всё

/*bar.c*/
#include <stdio.h>
#include <sys/resource.h>

int main (void)
{
	int pr = getpriority (PRIO_PROCESS, getpid());
	printf ("priority = %d\n", pr);
	sleep (180);
	return 0;
}

Shell

user@astra:~$ ./bar
priority = 0
Процесс равен 0, предсказуемо. Пока он работает, скомандуем в другой консоли:

Shell

user@astra:~$ ps lax | head -n1
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
user@astra:~$ ps lax | grep bar
0 1000 9872 9032 20 0 4188 716 hrtime S+ pts/0 0:00 ./bar
0 1000 9897 9077 20 0 8168 2072 pipe_w S+ pts/1 0:00 grep bar
user@astra:~$
Видно что приоритет равен 20. Скорее всего колонки команды ps lax не соответствуют их значениям и приоритет процесса нужно смотреть не в колонке PRI, а в колонке NI (наверное), но от этого же менее грустно не становится, вот в чём дело. Команда ps lax неправильно работает, получается... Что же делать? Спасибо, кто откликнется.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 3061
ОС: Gentoo

Re: Приоритет процесса найденный программно и с помощью ps разный, почему так?

Сообщение ormorph »

Все там правильно, NI означает nice, это оно самое.
PRI это приоритет назначенный планировщиком.
Смотреть надо в nice и не забивать голову...
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21246
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Приоритет процесса найденный программно и с помощью ps разный, почему так?

Сообщение Bizdelnick »

The process attribute dealt with by these system calls is the same attribute (also known as the "nice" value) that is dealt with by nice(2).
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1085
ОС: астралинукс

Re: Приоритет процесса найденный программно и с помощью ps разный, почему так?

Сообщение жучара »

Bizdelnick, я не очень хорошо знаю английский язык, но в вашей цитате речь о приоритете не идёт.

Зато о приоритете идёт речь здесь:

http://www.opennet.ru/man.shtml?topic=p ... &russian=5
PRI (l) The priority of the process; higher numbers mean lower priority.

Высший номер означает низший приоритет. И речь идёт о PRI

++++++++++++++++++++++++++++++++++++++++

Дальше:
NI (l) Nice value; used in priority computation.
Так и хочется спросить у авторов- это точное значение ЧЕГО? И что за приоритетные вычисления такие? И если NI это точное значение ПОЧЕМУ-ТО ПРИОРИТЕТА, то PRI это неточное что ли значение?

В общем, не видно не из вашей цитаты не из моих, что NI это приоритет.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4458
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Приоритет процесса найденный программно и с помощью ps разный, почему так?

Сообщение Rootlexx »

Приоритет (PRI) - это внутреннее значение планировщика, поэтому непосредственно управлять им пользователь не может. Чтобы он мог влиять на этот приоритет, ему дают возможность управлять значением nice (NI), которое учитывается при расчёте приоритета.

Т.е. NI - это пожелания пользователя насчёт приоритета процесса, а PRI - итоговое значение приоритета, рассчитанное планировщиком.
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1085
ОС: астралинукс

Re: Приоритет процесса найденный программно и с помощью ps разный, почему так?

Сообщение жучара »

Rootlexx, но тогда возникает ещё больше вопросов. Во-первых, у меня в книге написано, что приоритет от -20 до 20, тоже самое написано и здесь.
http://www.opennet.ru/man.shtml?topic=g ... &russian=0

и там нигде не сказано, что речь идёт о величине NI. Приоритет и приоритет. А у меня значения столбца PRI (ну пусть оно итоговое значение приоритета, но оно же итоговое значение приоритета, а не чего-нибудь) имеют значения аж за 30. Как же так? Либо книга и ссыль врёт, либо PRI это не итоговое значение приоритета, либо итоговое значение приоритета и приоритет это не одно и то же. Как в последнем случае что-либо изучать, я не понимаю.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: Приоритет процесса найденный программно и с помощью ps разный, почему так?

Сообщение /dev/random »

жучара писал(а):
26.05.2018 16:41
и там нигде не сказано, что речь идёт о величине NI. Приоритет и приоритет.
Приоритет - слово многозначное, у него есть по меньшей мере 4 смысла. Значение nice часто для удобства называют приоритетом, затем есть вычисляемый на его основе приоритет планировщика, есть realtime-приоритет, есть приоритет ввода-вывода. Есть и другие. Когда речь идёт не о работе ядра, а о программировании приложений, под приоритетом обычно понимают значение nice, и функции getpriority() и setpriority() работают именно с ним.
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1085
ОС: астралинукс

Re: Приоритет процесса найденный программно и с помощью ps разный, почему так?

Сообщение жучара »

/dev/random писал:
26.05.2018 16:47
начение nice часто для удобства называют приоритетом
, но в документации-то наверное нельзя для удобства что-либо как-либо называть.

А вот документация
http://www.opennet.ru/man.shtml?topic=g ... &russian=0

Где чёрным по-белому сказано, что getpriority возвращает приоритет, но на самом деле она возвращает nice, которая никакой не приоритет, а всего лишь некая черновая, промежуточная величина, которая к настоящему приоритету (PRI) (который и нужно учитывать где нужно), имеет отношение как свинья апельсинам. Ну рассчитывается на её основе настоящий приоритет и рассчитывается. У меня расхождение между NI и PRI 20 единиц, ага.

То есть впору спрашивать- а как найти приоритет процесса? И оговаривать, что настоящий приоритет, а не мнимый...
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Приоритет процесса найденный программно и с помощью ps разный, почему так?

Сообщение serzh-z »

жучара писал(а):
26.05.2018 16:57
У меня расхождение между NI и PRI 20 единиц, ага.
Ну что поделаешь - все врут. На самом деле внутри планировщика расхождение ещё больше - 120 единиц для обычных процессов. =)
Последний раз редактировалось serzh-z 26.05.2018 18:07, всего редактировалось 1 раз.
Спасибо сказали:
Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4458
Статус: GNU generation
ОС: Debian GNU/Linux

Re: Приоритет процесса найденный программно и с помощью ps разный, почему так?

Сообщение Rootlexx »

жучара писал(а):
26.05.2018 16:57
А вот документация
http://www.opennet.ru/man.shtml?topic=g ... &russian=0
Я бы рекомендовал вам использовать man-страницы, установленные у вас в системе, вместо найденных в Интернете. Не раз сталкивался с ситуацией, когда Интернет-версия устарела и уже не актуальна, а неофициальный русский перевод может ещё и содержать фактические ошибки.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5404
ОС: Gentoo

Re: Приоритет процесса найденный программно и с помощью ps разный, почему так?

Сообщение /dev/random »

жучара писал(а):
26.05.2018 16:57
но в документации-то наверное нельзя для удобства что-либо как-либо называть.
Это значение термина "приоритет" достаточно официальное, чтобы войти даже в названия системных вызовов.
жучара писал(а):
26.05.2018 16:57
А вот документация
http://www.opennet.ru/man.shtml?topic=g ... &russian=0

Где чёрным по-белому сказано, что getpriority возвращает приоритет, но на самом деле она возвращает nice, [...]
Смотрим в настоящем мане:
man getpriority писал(а): The process attribute dealt with by these system calls is the same attribute (also known as the "nice" value) that is dealt with by nice(2).
(edit: Bizdelnick это уже процитировал)
жучара писал(а):
26.05.2018 16:57
То есть впору спрашивать- а как найти приоритет процесса? И оговаривать, что настоящий приоритет, а не мнимый...
Этот "настоящий приоритет", как вы его назвали - детали реализации ядра, он может меняться ядром по собственному усмотрению и для человека не очень-то и предназначен. Используйте nice.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21246
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Приоритет процесса найденный программно и с помощью ps разный, почему так?

Сообщение Bizdelnick »

жучара писал(а):
26.05.2018 16:57
А вот документация
http://www.opennet.ru/man.shtml?topic=g ... &russian=0

Где чёрным по-белому сказано, что getpriority возвращает приоритет, но на самом деле она возвращает nice
Я не случайно выше процитировал оригинал той же man-страницы, где серым по чёрному сказано, что под приоритетом понимается nice. Перевод устарел, неполон и вообще сосёт, как и все переводы манов.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
жучара
Сообщения: 1085
ОС: астралинукс

Re: Приоритет процесса найденный программно и с помощью ps разный, почему так?

Сообщение жучара »

Bizdelnick писал:
26.05.2018 19:30
Я не случайно выше процитировал оригинал той же man-страницы, где серым по чёрному сказано, что под приоритетом понимается nice.
я плохо знаю английский, но слово priority в цитате увидел бы. А его там не было и это я тоже выше написал.

Чтобы понять, что niсe это priority, нужно сперва СКАЗАТЬ что niсe это priority. Потом термин priority можно забыть, если всё так хорошо и пользоваться только niсe.

Ну то есть как-то так:
niсe is priority
или даже
priority is nice
А вместо этого имеем:
The process attribute dealt with by these system calls is the same attribute (also known as the "nice" value) that is dealt with by nice(2).
Где тут priority- ума не приложу, третий раз пишу.
Я просто читаю маны.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21246
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Приоритет процесса найденный программно и с помощью ps разный, почему так?

Сообщение Bizdelnick »

жучара писал(а):
27.05.2018 10:38
Где тут priority- ума не приложу, третий раз пишу.
В предыдущем предложении, которое я не процитировал, потому что вроде бы и так должно быть понятно, что речь об атрибуте, значение которого возвращает getpriority().
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: