Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, Шахтер, Вы писали:
Ш>>Если у вас один активный поток в системе
ЕМ>Если в системе только один активный поток — все верно. Только вот поинтересуйтесь, сколько таких потоков в Вашей системе.
Один. На самом деле, потоков в системе много, но они, как правило, не жрут процессор. А загрузить 8 ядер я могу, конечно, запустив параллельную сборку проекта, например.
П.С. Запустил для интереса счётную однопоточную задачу. По монитору ресурсов загружены все ядра, но сильно неравномерно.
O>>Я интереса ради запустил этот код в чистой консоли. Как и предполагал — жрется 4 ядра, но каждое — только слегка, топ жрущих процессов, по убыванию: conhost, csrss, апликуха. Общий отжор TM показыват чуть менее 30%, что эквивалентно загрузке одного ядра + оверхед на чересчур активное переключение контекстов. Если всех из этой троицы посадить на одно и тоже ядро — становится аккурат 25%, при колной загрузке этого одного ядра. _>Тоже для интереса запустил на linux: 1)xterm и 2)xterm + mc(midnight commander) _>В первом случае процессор жрет сама программа 60%, xterm 70%, X — 5%. Система загружена на 40% _>Во втором случае программа — 60%, mc — 50%, xterm — 70%, X — 5%. Система загружена 55% _>То есть промежуточное звено в пути прохождения выводимой строки тоже дополнительно грузит процессор. Что логично, так как mc надо писать в свой буфер.
Linux и винда — совершенно по разному с консолями работают. Под виндой у FAR'а, запустившего такую прогу — 0% загрузка CPU.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, Евгений Музыченко, Вы писали:
LVV>>Не странно. В данном конкретном случае процесс — один. ЕМ>Э-э-э... Вы никогда не слышали о квантовании процессорного времени, распределении нагрузки и подобных вещах в многозадачных/многопроцессорных ОС?
Это не распределение нагрузки задачи, это распределение времени на проце чтобы всем досталось. Распределение нагрузки это когда в одно и тоже время все или N ядер заняты одной и той же задачей. А вы про выполнение одной задачи одновременно только на одном ядре.
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]
Здравствуйте, Шахтер, Вы писали:
Ш>потоков в системе много, но они, как правило, не жрут процессор.
На самом деле они его жрут очень даже неслабо, просто очень короткими порциями — посмотрите на количество переключений контекста. Из-за несовершенства методов измерения загрузки бОльшая часть этой активности не видна, но она есть.
И не стоит без нужды медитировать на локальность ядерных кэшей — для подавляющего большинства задач ее влияние исчезающе мало. Там, где это влияние заметно, принимаются меры для привязки потоков к ядрам.
Здравствуйте, Vain, Вы писали:
V>Это не распределение нагрузки задачи, это распределение времени на проце чтобы всем досталось. Распределение нагрузки это когда в одно и тоже время все или N ядер заняты одной и той же задачей.
Выражение "распределение нагрузки" не является однозначным и универсальным термином, смысл в каждом случае определяется контекстом. И первое является распределением нагрузки, и второе, и еще есть много разных вариантов распределения нагрузки.
Здравствуйте, Евгений Музыченко, Вы писали:
V>>Это не распределение нагрузки задачи, это распределение времени на проце чтобы всем досталось. Распределение нагрузки это когда в одно и тоже время все или N ядер заняты одной и той же задачей. ЕМ>Выражение "распределение нагрузки" не является однозначным и универсальным термином, смысл в каждом случае определяется контекстом.
Распределение задачи по процам вполне конкретный термин
[In theory there is no difference between theory and practice. In
practice there is.]
[Даю очевидные ответы на риторические вопросы]