Я хочу получить прилично точное значение для общего использования ЦП при степени детализации 1 секунда,
при этом вводится минимальная задержка.
Я пробовал «top», но это не совсем точно из-за задержки между дампами процессора.
Прямо сейчас я делаю это, читая / proc / stat, который прекрасно работает для детализации в течение 2 секунд, однако я не уверен, будет ли она надежно работать при степени детализации в 1 секунду.
Как часто обновляется / proc / stat?
Кроме того, есть идея, насколько точным будет чтение / proc / loadavg (или вызов getloadavg ())? Может ли он работать надежно с интервалом в 1 секунду?
Любое решение, которое может работать на c / c ++, должно подойти.
Помимо сложных соображений, один процессор либо активен, либо нет.
В течение промежутка времени «загрузка процессора» — это сколько времени было потрачено на работу, а не как жесткий работа была.
Чем короче временной интервал, который вы измеряете, тем меньше смысла в измерении. Если у вас была гранулярность 1 наносекунда, вы всегда найдете загрузку процессора на уровне 100% или 0%.
2 секунды — приличный промежуток времени. Больше, и вы пропустите важные спайки; меньше, и все будет шип.
Вы пытались использовать top с аргументом -d1?
Я часто использую его для тестирования, и он устанавливает интервал опроса равным 1 секунде (намного быстрее, чем по умолчанию).
За справочную страницу для справки:
-d :Delay-time interval as: -d ss.t (secs.tenths) Specifies the delay between screen updates, and overrides the corresponding value in one's personal configuration file or the startup default. Later this can be changed with the 'd' or 's' interactive commands. Fractional seconds are honored, but a negative number is not allowed. In all cases, however, such changes are prohibited if top is running in 'Secure mode', except for root (unless the 's' command-line option was used). For additional infor‐ mation on 'Secure mode' see topic 6a. SYSTEM Configuration File.