Мені хотілося б знати, чи можна виводити 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 topRHELonline 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)