Я не вижу связи между статистикой использования ЦП ОС и оптимальным использованием конвейера. Я думаю, что они не коррелированы, так как ОС не измеряет загрузку конвейера.
Я пишу это в надежде, что Питер Кордес поможет мне лучше понять это, и в качестве продолжения комментариев.
Пользовательские программы очень часто передают управление ОС: когда им требуется ввод данных от пользователя или когда они заканчивают работу с сигналом/сообщением. Программа с графическим интерфейсом в основном представляет собой просто большие циклы, и на каждой итерации управление передается ОС до следующего сообщения. Когда ОС имеет контроль, она планирует другие потоки/задачи, и если не требуются другие действия, просто войдите в процесс бездействия (давным-давно замкнутый цикл, теперь состояние сна) до следующего прерывания. Это время простоя.
Время, затраченное ISR на обработку пользовательского ввода, считается временем простоя любой ОС. Промах кеша там еще считался бы простоем.
Тяжелой программе требуется больше времени, чтобы завершить работу с данным сообщением, тем самым возвращая управление ОС, скажем, 2 раза в секунду вместо 20. Использование ЦП (1000-20)/1000 = 98%.
Это не имеет ничего общего с оптимальным использованием архитектуры ЦП, поскольку указанные зависания могут возникать в коде ОС и по-прежнему быть частью статистики времени простоя. Загрузка ЦП на уровне конвейера не измеряется и ортогональна статистике ОС.
Использование ЦП предназначено для использования системным администратором, это мера нагрузки, которую вы оказываете на систему, а не мера того, насколько эффективно была сгенерирована сборка программы. Системные администраторы не могут помочь с этим, но измерение того, как часто ОС возвращала управление (без вытеснения), является мерой того, насколько программа загружает систему. И системные администраторы могут окончательно завершать тяжелые программы.
person
Community
schedule
26.06.2015