1

В настоящее время я создаю программу, которая идентифицирует процессы, которые зависают / выходят из-под контроля, и использует все ядро процессора. Затем программа завершает их, поэтому использование ЦП можно контролировать. Это все однопоточные процессы.

Однако я столкнулся с проблемой: когда я выполняю команду tasklist в Windows, она выдает следующее:


Image Name:   Blockland.exe
PID:          4880
Session Name: Console
Session#:     6
Mem Usage:    127,544 K
Status:       Running
User Name:    [removed]\[removed]
CPU Time:     0:00:22
Window Title: C:\HammerHost\Blockland\Blockland.exe

Итак, я знаю, что строка с надписью "CPU Time" указывает общее время в секундах, использованное программой с момента ее запуска.

Но давайте предположим, что в системе 4 ядра процессора. Означает ли это, что он использовал 22 секунды одного ядра и, следовательно, использовал 5,5 секунд для всего процессора в целом? Или это означает, что процесс израсходовал 22 секунды на весь процессор?

1 ответ1

1

"Время ЦП" - это общее время, используемое программой на всех ЦП ("ЦП" здесь означает "ядро", если у вас отключена гиперпоточность; это означает "логический процессор", если у вас включена гиперпоточность).

Таким образом, в системе с четырьмя ядрами, отключенной HT, программа, которая работает в течение 30 секунд времени настенных часов, теоретически может использовать до 120 секунд времени ЦП.

Как сказал MaQleod, один поток будет работать только на одном процессоре за раз. Однако однопоточные программы довольно редки в наши дни.

Означает ли это, что он использовал 22 секунды одного ядра и, следовательно, использовал 5,5 секунд для всего процессора в целом? Или это означает, что процесс израсходовал 22 секунды на весь процессор?

Это может быть 22 секунды на одном ядре. Это может означать 5,5 секунды на каждом из четырех ядер одновременно, что можно описать как «5,5 секунд на весь процессор». Или это может быть 5 секунд на одном ядре, 2 на другом, 15 на третьем и ничего на четвертом ядре.

Или 22-секундное общее время ЦП могло бы быть распределено по гораздо большему времени настенных часов, с большим ожиданием. Большинство программ проводят большую часть времени в ожидании. Более полезным показателем, чем общее используемое время ЦП, является процент использования ЦП. Но очень сложно по-настоящему определить нагрузку на процессор, в отличие от программ, которые только на мгновение привязаны к вычислениям. Завершение процесса может привести к потере работы и даже к повреждению файлов. Вы уверены, что хотите это сделать?

Подсказка: не пытайтесь завершить процесс простоя.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .