Почему Windows не использует ресурсы в полном объеме?

271
codemirror

Я устанавливаю обновление для Windows 8.1, и оно показывает Установка ... более 15 минут.

Когда я смотрю на диспетчер задач, он показывает 30% оперативной памяти, 30% процессора и SSD активны только на 2-5%.

Что такое узкое место, для которого окна ждут и не используют эти ресурсы по максимуму?

Почему Windows не использует ресурсы в полном объеме?

0

2 ответа на вопрос

2
Mario

Очень короткий и простой ответ: вы не можете распараллелить все, и почти все остальные компоненты ПК работают медленнее, чем процессор. Таким образом, 100% -ная нагрузка - это то, чего вы не должны достигать вне особых условий или задач (например, компиляция или кодирование). Кроме того, многие программы все еще являются однопоточными в отношении своих основных частей кода.

Давайте предположим, что один поток запрашивает некоторое содержимое файла, и его чтение занимает 0,5 секунды по любой причине. Это означает, что в этот момент ядро, на котором запущен этот поток, не сможет использовать загрузку выше 50%. В то же время это также не обязательно означает, что привод работает при 100% нагрузке.

Но здесь диск также используется на 2%, поэтому процессор не ожидает данных. codemirror 6 лет назад 0
@codemirror Как уже упоминалось, процессор может ожидать какую-то операцию, которая не обязательно приводит к полной загрузке диска (или любого другого компонента). Например, процессор может ждать, пока диск полностью подтвердит запись файла. В то же время диск все еще готов к приему других команд, поэтому он не считается работающим на 100% при обработке этого запроса. Представьте себе, что-то заказываете в ресторане. Пока вы ждете еды, это не обязательно означает, что кто-то другой не может сделать заказ (официант не загружен на 100%), но вы не можете продвинуться в своем посещении (тема). Mario 6 лет назад 0
Спасибо, значит, мы далеко продвинулись в аппаратном параллелизме, но многие программные продукты по-прежнему не являются многопоточными. codemirror 6 лет назад 0
И есть много вещей, которые нельзя распараллелить вообще. codemirror 6 лет назад 1
@ codemirror Да, в основном. Современные графические процессоры запускают тысячи потоков параллельно (например, один на пиксель), потому что задача может быть распараллелена. Но есть вещи, которые вы можете делать только шаг за шагом, так что это не обязательно вина автора. Mario 6 лет назад 0
Для справки: у меня может быть 16-ядерный ЦП, и я могу легко создавать 16 однопоточных процессов, вращающихся по sqrt (), и ЦП будет запускать их все параллельно, используя до 100% ЦП на всех ядрах. Дело в том, что это зависит от ОС, а не только от приложения. arielnmz 6 лет назад 0
0
arielnmz

Дело не в том, чтобы Windows использовала ресурсы на 100%, а ваш рабочий процесс определяет, какие ресурсы используются чаще всего. Например: если вы кодируете для мобильных платформ, может быть обычной открытой основной IDE, наряду с браузером с 50+ вкладками и парой эмуляторов, такой рабочий процесс может потреблять ОЗУ оперативной памяти, возможно, на 90-100% больше всего. времени, но это может быть немного больше в ЦП (50-70% для всех ядер) и еще меньше в сети и ввода-вывода. Другой сценарий может быть архивирование и сжатие большого количества файлов, которые могут легко использовать 100% ваших ядер, но, вероятно, не всю оперативную память (в зависимости от алгоритма и объема оперативной памяти, конечно). ОС отвечает за организацию всего беспорядка, который является вашим повседневным делом, и соответственно распределяет ресурсы, поэтому да, Windows и другие ОС будут стараться использовать ресурсы в их полном объеме.

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