Мені хотілося б знати, чи можна виводити Linux на базі Red-Hat по-різному інтерпретувати Linux на базі Debian.
Щоб зробити питання ще більш конкретним, про що я пішов, це розуміння того, як "середнє завантаження" з першого рядка top
команди в системі Red-Hat інтерпретується і як це перевірити офіційною документацією ro-кодом.
[Є багато способів наблизитись до цієї теми, усі з яких є прийнятними відповідями на питання]
Одним із потенційних підходів було б знайти місце, де ця інформація офіційно задокументована.
Ще одна, полягає в тому, щоб знайти версію коду, 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
Ця частина складається з одного рядка, що містить:
ім’я програми чи вікна, залежно від режиму відображення
поточного часу та тривалості часу з моменту останнього завантаження
загальна кількість
завантажених системою користувачів за останні 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
що я використовую, міститься в пакеті propps-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
)