Я хотел бы знать, может ли вывод Linux на основе Red Hat по-разному интерпретироваться Linux на основе Debian.
Чтобы сделать вопрос еще более конкретным, я хочу понять, как top
интерпретируется «среднее значение загрузки» из первой строки команды в системе Red-Hat и как это проверить с помощью официальной документации или кода.
[Есть много способов подойти к этому вопросу, каждый из которых является приемлемым ответом на вопрос.]
Один из возможных подходов - найти, где эта информация официально документирована.
Другой вариант top
- найти версию кода, созданную в конкретном дистрибутиве, и версию, над которой я работаю.
Вывод команды, который я получаю:
top - 13:08:34 up 1:19, 2 users, load average: 0.02, 0.00, 0.00
Tasks: 183 total, 1 running, 182 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.2%us, 0.2%sy, 0.0%ni, 96.8%id, 2.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 3922520k total, 788956k used, 3133564k free, 120720k buffers
Swap: 2097148k total, 0k used, 2097148k free, 344216k cached
В этом случае, как я могу интерпретировать среднее значение нагрузки ?
Мне удалось обнаружить, что средняя загрузка составляет около последней минуты из одного источника документации и что она должна быть интерпретирована после умножения на 100 из другого источника документации.
Вопрос в том,
загружен ли он на 0,02% или на 2%?
Источники и версии документации:
1) Первая звезда с
TOP(1) Linux User’s Manual TOP(1)
NAME
top - display Linux tasks
Источник: man top
в моем дистрибутиве RedHat
Ubuntu также имеет версию с «заданиями», которая не объясняет среднюю загрузку в:
http://manpages.ubuntu.com/manpages/precise/man1/top.1.html
2) Второй начинается с
TOP(1) User Commands TOP(1)
NAME top
top - display Linux processes
Источник:
http://man7.org/linux/man-pages/man1/top.1.htm
3) Этот начинается с:
TOP(1)
NAME
top - display and update information about the top cpu processes
Источник: http://www.unixtop.org/man.shtml первый один, можно увидеть в или и он не имеет каких - либо объяснений формата вывода (ни о среднем нагрузки , в которой я заинтересован в) , Второй один, не содержит краткое объяснение, указывая на то , что средняя нагрузка связана с последней 1 минуты, но ничего об интерпретации его стоимости!
man top
RHEL
online ubuntu documentation
Я цитирую прямо из второго источника:
2а. UPTIME и LOAD Averages.
Эта часть состоит из одной строки, содержащей: имя
программы или окна, в зависимости от
текущего времени и продолжительности режима отображения с момента последней загрузки
общее количество пользователей
, загруженных системой в среднем за последние 1, 5 и 15 минут
Таким образом, если это объяснение действительно верно, достаточно просто понять, что среднее значение загрузки составляет около 1 минуты.
Но это не объясняет формат числа.
В третьем объяснении говорится, что:
При указании чисел для средних значений нагрузки их следует умножить на 100.
Это объяснение предполагает, что 0,02 означает 2%, а не 0,02%. Но правильно ли это? Кроме того, это правильно для всех дистрибутивов Linux и потенциально различных реализаций top
?
Чтобы найти ответ на этот вопрос, я попытался просмотреть код, выполнив поиск в Интернете. Но я нашел, по крайней мере, две разные версии, top
относящиеся к RHEL! builtin-top.c
и переработан top.c
. Оба защищены авторским правом Red-Hat, как указано в уведомлении в начале кода, и, таким образом, кажется логичным, что RHEL использует один из них.
http://lxr.free-electrons.com/source/tools/perf/builtin-top.c
http://lxr.free-electrons.com/source/tools/perf/util/top.c
Итак, прежде чем углубляться в этот большой код, я хотел узнать, на чем сосредоточиться, чтобы сформировать точное понимание того, как интерпретируется загрузка процессора?
Из информации, приведенной в ответах ниже, в дополнение к личному поиску я обнаружил, что:
1 - top
то, что я использую, содержится в пакете procps-3.2.8. Что можно проверить с помощью top -v
.
2 - В версии, procps-3.2.8
которую я скачал с официального сайта, кажется, что инструмент uptime
получает информацию напрямую из procfs
файла /proc/loadavg
(без использования функции linux getloadavg()
).
3 - Теперь для top
команды также не используется функция getloadavg()
. Мне удалось убедиться, что top
он действительно делает то же самое, что иuptime
инструмент, чтобы показать средние нагрузки. На самом деле он вызывает uptime
функцию инструмента, которая получает информацию из procfs
файла /proc/loadavg
.
Итак, все указывает на /proc/loadavg
файл! Таким образом, чтобы сформировать точное понимание load average
созданного top
, нужно прочитать код ядра, чтобы увидеть, как loadavg
записывается файл .
Существует также отличная статья, указанная в одном из ответов, которая предоставляет непрофессиональным терминам объяснение трех значений loadavg
.
Итак, несмотря на то, что все ответы были одинаково полезны и полезны, я отмечу тот, который указал на статью
http://www.linuxjournal.com//article/9001, как «ответ» на мой вопрос. Спасибо всем за ваш вклад!
Кроме того, из вопроса « Понимание верхней и средней нагрузки» я нашел ссылку на исходный код ядра, который указывает на место, где loadavg
рассчитывается. Как кажется, есть огромный комментарий, объясняющий, как это работает, и эта часть кода находится в C
!
Ссылка на код: http://lxr.free-electrons.com/source/kernel/sched/loadavg.c
Опять же, я не пытаюсь участвовать в какой-либо форме плагиата, я просто добавляю это для полноты. Итак, я повторяю, что ссылка на код ядра была найдена из одного из ответов в разделе Понимание вершины и средней нагрузки ...
top -v
)