Как все мы знаем, загрузка 1,00 на единственном процессоре означает, что существует загрузка 100%. Аналогично 4,00 нагрузки на четырехъядерное составили бы 100%.
Как я должен интерпретировать нагрузку на 4 базовых 8 процессоров потока? Когда я достигаю максимальной способности ЦП? В 4,00 или 8.00?
Не уверен, но в основном на 1.00*n_cpu
.
Нагрузка означает следующее: если на одной вычислительной системе несколько процессов, то они выполняются, казалось бы, параллельно. Но это не так. Что происходит на практике: ядро отдаёт процессу 1/100 секунду, а затем прерывает его запуск с прерыванием. И дает следующий 1/100-й секунду другому процессу.
Практически вопрос, "какой процесс должен получить наш следующий интервал 1/100-й секунды?", будет решен сложной эвристикой. Она называется task scheduling.
Конечно, процессы, которые заблокированы, например, ждут своих данных, что они читают с диска, освобождаются от этого планирования задач.
Какая нагрузка говорит: сколько процессов в настоящее время ждут своего следующего таймфрейма в 1/100 секунду. Конечно, это среднее значение. Это связано с тем, что вы можете видеть несколько чисел в cat /proc/loadavg
.
Ситуация в многопроцессорной системе немного сложнее. Есть несколько cpus, временные рамки которых можно задать нескольким процессам. Это делает планирование задач немного - но не слишком сложным. Но ситуация та же самая.
Ядро умно, оно пытается разделить системные ресурсы для оптимальной эффективности, и оно находится в непосредственной близости от этого (есть мелкие оптимизационные моменты, например, лучше, если процесс будет выполняться как можно дольше на одном и том же процессоре по соображениям кэширования, но там они не имеют значения). Это потому, что если у нас есть загрузка 8, то это означает: на самом деле есть 8 процессов, ожидающих своего следующего временного среза. Если у нас есть 8 процессоров, то мы можем отдать эти временные срезы процессору один к одному, и таким образом наша система будет оптимально использоваться.
Если вы видите top
, то вы видите, что количество реально запущенных процессов удивительно мало: это процессы, отмеченные там R
. Даже на не совсем хардкоровой системе часто бывает меньше 5. Частично это связано с тем, что процессы, ожидающие своих данных от дисков или от сети, также приостановлены (сверху отмечены S
). Загрузка показывает только использование процессора.
Есть инструменты для измерения загрузки диска, imho они должны быть, по крайней мере, важны как мониторинг использования процессора, но почему-то это не так хорошо известно в нашем профессиональном мире сисадминов.
Инструменты Windows часто делят нагрузку на фактическое число cpus. Это приводит к тому, что некоторые профессиональные системные администраторы Windows используют системную нагрузку в этом разделенном на процессоры смысле. Они не правы и, вероятно, будут счастливы после того, как вы объясните им это.
Многоядерные процессоры - это практически несколько процессоров на одном и том же кремниевом чипе. Разницы нет.
В случае гиперпоточных процессоров есть интересный побочный эффект: загрузка процессора делает его гиперпотоковые пары медленнее. Но это происходит на более глубоком уровне, с чем работает обычное планирование задач, хотя это может (и должно) влиять на процессные решения планировщика.
Но с нашей точки зрения - что определяет загрузку системы - это тоже не имеет значения.
Поскольку гиперпоточность на самом деле не является 2-м ядром, она никогда не займет ядро до 200%, но для определенных рабочих нагрузок займет больше 100%.
Таким образом, Ваша максимальная нагрузка где-то неизвестна между примерно 4 и 6
(конечно, она может повыситься при перегрузке, потому что на самом деле она считается выполняемыми процессами, особенно, когда они ожидают ввода-вывода)
.Средняя нагрузка не означает того, что ты думаешь это значит. Речь идет не о мгновенном использовании процессора, а о том, сколько процессов ждут своей очереди на запуск. Обычно это из-за множества вещей, требующих центрального процессора, но не всегда. Обычный виновник - процесс, ожидающий ввода-вывода - диска или сети.
Попробуйте запустить ps -e v
и поискать флаги состояния процесса.
state The state is given by a sequence of characters, for example, "RWNA". The first character indicates the run state of the process:
D Marks a process in disk (or other short term, uninterruptible) wait.
I Marks a process that is idle (sleeping for longer than about 20 seconds).
L Marks a process that is waiting to acquire a lock.
R Marks a runnable process.
S Marks a process that is sleeping for less than about 20 seconds.
T Marks a stopped process.
W Marks an idle interrupt thread.
Z Marks a dead process (a "zombie").
Это из руководства ps
, поэтому там вы найдете более подробную информацию - процессы R
и D
, вероятно, представляют особый интерес.
В конечном итоге, по разным причинам, вы можете столкнуться со средними "всплесками" нагрузки, поэтому они не являются хорошей мерой ничего, кроме "эта система занята". Запутавшись в отображении средней нагрузки на процессорные ядра, вы не получите никакой пользы.
Ua hana wau i kekahi mau hoʻokolohua ma kā mākou ʻōnaehana Xeon 24-ʻiʻo (2 kumu x 12 cores). ʻO 48.0 ka nui o nā ukana ma kēia hihia ma muli o ke ʻano o ka hoʻonohonoho ʻana o Linux i ka hyperthreading.
Eia nō naʻe, ʻaʻole i loaʻa iā ʻoe ka like o 48 core o ka hoʻokomo ʻana. ʻO ka mea aʻu i ʻike ai loaʻa iā ʻoe ma kahi o 90% o ka hopena ma nā mea hana loiloi 24 mua, ʻo ia inā holo ka ukana i 24.0. A laila loaʻa iā ʻoe kahi throughput hou aʻe ma kahi o 10% no nā koina loiloi 24 i koe (holo ka haawe i 48.0). ʻO kekahi ala e noʻonoʻo ai ʻo ia inā holo ʻoe i nā wana he 48 ma nā kuhi he 24, e loaʻa ana iā ʻoe kahi hoʻonui ma kahi o 10-20% inā ʻoe e ʻae i ka hyperthreading a i ʻole. ʻAʻole ia he 100% hoʻonui e like me ka manaʻo o nā kāne kūʻai aku.
Eia kekahi laʻana, ʻo kahi ala e hoʻāʻo ai i kēia nānā ʻana he hana e holo ana i 48 mau pae (e ʻōlelo e hoʻohana ana i ka TBB a i ʻole ke ana hoʻohālikelike wili lima), a laila holo
time numactl --physcpubind=0-23 ./myprocess
a laila holo
time numactl --physcpubind=0-47 ./myprocess
E holo ka hope ma kahi o 10-20% ka liʻiliʻi o ka manawa. Inā I / O kāu kaʻina hana nui i kāohi ʻia, a laila ʻokoʻa paha ka hopena. e ʻae ana i nā pae e holo ma luna o nā mea hana loiloi ʻelua (o kēlā me kēia kumu.).