Надлежащий способ интерпретировать системную нагрузку на 4 базовых 8 процессорах потока

Как все мы знаем, загрузка 1,00 на единственном процессоре означает, что существует загрузка 100%. Аналогично 4,00 нагрузки на четырехъядерное составили бы 100%.

Как я должен интерпретировать нагрузку на 4 базовых 8 процессоров потока? Когда я достигаю максимальной способности ЦП? В 4,00 или 8.00?

13
задан 5 August 2014 в 18:09
5 ответов

Не уверен, но в основном на 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 используют системную нагрузку в этом разделенном на процессоры смысле. Они не правы и, вероятно, будут счастливы после того, как вы объясните им это.


Многоядерные процессоры - это практически несколько процессоров на одном и том же кремниевом чипе. Разницы нет.

В случае гиперпоточных процессоров есть интересный побочный эффект: загрузка процессора делает его гиперпотоковые пары медленнее. Но это происходит на более глубоком уровне, с чем работает обычное планирование задач, хотя это может (и должно) влиять на процессные решения планировщика.

Но с нашей точки зрения - что определяет загрузку системы - это тоже не имеет значения.

17
ответ дан 2 December 2019 в 21:20

Поскольку гиперпоточность на самом деле не является 2-м ядром, она никогда не займет ядро до 200%, но для определенных рабочих нагрузок займет больше 100%.

Таким образом, Ваша максимальная нагрузка где-то неизвестна между примерно 4 и 6

(конечно, она может повыситься при перегрузке, потому что на самом деле она считается выполняемыми процессами, особенно, когда они ожидают ввода-вывода)

.
4
ответ дан 2 December 2019 в 21:20

Средняя нагрузка не означает того, что ты думаешь это значит. Речь идет не о мгновенном использовании процессора, а о том, сколько процессов ждут своей очереди на запуск. Обычно это из-за множества вещей, требующих центрального процессора, но не всегда. Обычный виновник - процесс, ожидающий ввода-вывода - диска или сети.

Попробуйте запустить 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, вероятно, представляют особый интерес.

В конечном итоге, по разным причинам, вы можете столкнуться со средними "всплесками" нагрузки, поэтому они не являются хорошей мерой ничего, кроме "эта система занята". Запутавшись в отображении средней нагрузки на процессорные ядра, вы не получите никакой пользы.

4
ответ дан 2 December 2019 в 21:20

В системе Linux не только процессы в бегущей очереди учитываются для вычисления нагрузки, но и те, которые находятся в состоянии бесперебойного сна , wikipedia, вызывая всплеск нагрузки, когда много процессов ожидают диска.

3
ответ дан 2 December 2019 в 21:20

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.).

2
ответ дан 2 December 2019 в 21:20

Теги

Похожие вопросы