Не точно, але в основному на 1.00*n_cpu
.
Навантаження означає наступне: якщо в системі з одним процесором є кілька процесів, вони працюють, здавалося б, паралельно. Але це неправда. Що практично відбувається: ядро дає 1/100-ту секунду процесу, а потім перериває його запуск з перериванням. І дає наступну 1/100 секунду іншому процесу.
Практично питання "який процес повинен отримати наш наступний інтервал 1/100 секунди?", Буде вирішуватися складною евристикою. Вона названа в якості завдання планування .
Звичайно, процеси, які блокуються, наприклад, вони чекають своїх даних, що читають з диска, звільнені від цього планування завдань.
Яке навантаження говорить: скільки процесів наразі чекає свого наступного 1/100 секунди. Звичайно, це середнє значення. Це тому, що ви можете бачити декілька чисел у cat /proc/loadavg
.
Ситуація в системі з декількома процесорами дещо складніша. Існує декілька процесорів, часові рамки яких можна надати декільком процесам. Це робить план планування трохи - але не надто складним. Але ситуація така ж.
Ядро розумне, воно намагається ділитися системними ресурсами для досягнення оптимальної ефективності, і воно знаходиться поруч з цим (є незначні речі з оптимізації, наприклад, краще, якщо процес буде запускатися якомога довше за той самий час процесор через міркування кешування, але вони там не мають значення). Це тому, що якщо ми маємо навантаження 8, це означає: насправді є 8 процесів, які чекають наступного часу. Якщо у нас є 8 cpus, ми можемо дати цим часовим фрагментам cpus один на один, і таким чином наша система буде оптимально використана.
Якщо ви бачите a top
, ви можете бачити, що кількість фактично запущених процесів напрочуд низька: це процеси, позначені R
там. Навіть у не дуже хардкор-системі це часто нижче 5. Це частково тому, що процеси, які чекають своїх даних з дисків або з мережі, також призупинені (позначені S
зверху). Навантаження показує лише використання процесора.
Існують також інструменти для вимірювання завантаження диска, тому вони повинні бути принаймні важливими як моніторинг використання процесора, але якимось чином це не так добре відомо в нашому професійному світі систем.
Інструменти Windows часто ділять навантаження з фактичною кількістю процесора. Це змушує деяких професійних системних адміністраторів Windows використовувати завантаження системи в цьому сенсі розділеного на процесор. Вони не мають права і, мабуть, будуть щасливішими після того, як ви їм поясните це.
Багатоядерні процесори - це практично декілька процесорів на одній і тій же кремнієвій мікросхемі. Різниці немає.
У випадку з гіперточеними процесорами є цікавий побічний ефект: завантаження процесора робить його гіперпотоковані пари повільнішими. Але це відбувається на більш глибокому шарі, яким керується звичайне планування завдань, хоча це може (і повинно) впливати на рішень планувальника, що рухаються процесами.
Але з нашої нинішньої точки зору - що визначає завантаження системи - це теж не має значення.