Не обязательно, но в основном на 1.00*n_cpu
.
Загрузка означает следующее: если в системе с одним процессором имеется несколько процессов, они работают, по-видимому, параллельно. Но это не правда. Что практически происходит: ядро отдает 1/100-ю секунду процессу, а затем прерывает его работу с прерыванием. И дает следующие 1/100 секунды другому процессу.
Практически вопрос «какой процесс должен получить наш следующий интервал в 1/100 секунды?» Будет решаться сложной эвристикой. Это называется планированием задач .
Конечно, процессы, которые заблокированы, например, они ждут своих данных, которые они читают с диска, освобождаются от этого планирования задач.
Какая нагрузка говорит: сколько процессов в настоящее время ждут своего следующего 1/100 секунды. Конечно, это среднее значение. Это потому, что вы можете увидеть несколько чисел в cat /proc/loadavg
.
Ситуация в системе с несколькими процессорами немного сложнее. Существует несколько процессоров, временные рамки которых могут быть заданы нескольким процессам. Это делает планирование задач немного - но не слишком - сложнее. Но ситуация такая же.
Ядро интеллектуально, оно пытается разделить системные ресурсы для достижения оптимальной эффективности, и это близко к этому (есть незначительные вещи оптимизации, например, лучше, если процесс будет запущен как можно дольше того же времени процессор из-за соображений кэширования, но они не имеют значения там). Это потому, что если у нас нагрузка 8, это означает: на самом деле 8 процессов ждут своего следующего интервала времени. Если у нас есть 8 процессоров, мы можем дать эти временные интервалы процессору один к одному, и, таким образом, наша система будет оптимально использована.
Если вы видите a top
, вы можете видеть, что число реально запущенных процессов удивительно мало: это процессы, отмеченные R
там. Даже в не очень хардкорной системе это часто ниже 5. Это частично потому, что процессы, ожидающие свои данные с дисков или из сети, также приостановлены (отмечены S
сверху). Загрузка показывает только использование процессора.
Существуют также инструменты для измерения нагрузки на диск, хотя они должны быть как минимум важны для мониторинга использования процессора, но почему-то это не так хорошо известно здесь, в нашем профессиональном мире системных администраторов.
Инструменты Windows часто делят нагрузку с фактическим числом процессоров. Это заставляет некоторых профессиональных системных администраторов Windows использовать загрузку системы в этом смысле, разделенном на процессор. Они не имеют права и, вероятно, будут счастливее после того, как вы им это объясните.
Многоядерные процессоры - это практически несколько процессоров на одном кремниевом чипе. Нет никакой разницы.
В случае с многопоточными ЦП есть интересный побочный эффект: загрузка процессора замедляет работу его многопоточных пар. Но это происходит на более глубоком уровне, чем обычное планирование задач, хотя оно может (и должно) влиять на решения планировщика о перемещении процессов.
Но с нашей текущей точки зрения - что определяет нагрузку на систему - это тоже не имеет значения.