Russian Qt Forum

Компиляторы и платформы => Linux => Тема начата: OS2 от Июль 20, 2012, 13:30



Название: Как узнать % загрузки CPU в Linux?
Отправлено: OS2 от Июль 20, 2012, 13:30
Всем доброго времени суток!

Собственно возникла необходимость програмно узнать % загрузки центрального процессора в Linux(SuSe).
Перерыл весь форум, но найти ответ(кратенький пример) не смог. Сам в Linux особо не разбираюсь, поэтому прошу знатоков данной OS помочь примерчиком....

Заранее спасибо!


Название: Re: Как узнать % загрузки CPU в Linux?
Отправлено: DropNZ от Июль 20, 2012, 15:21
top, uptime
например
top -b | grep Cpu
(us - занятость процессора пользовательскими программами, sy - системными)


Название: Re: Как узнать % загрузки CPU в Linux?
Отправлено: OS2 от Июль 20, 2012, 20:31
И как это реализовать програмно?  ???


Название: Re: Как узнать % загрузки CPU в Linux?
Отправлено: Alex Custov от Июль 20, 2012, 20:50
Через парсинг /proc/stat


Название: Re: Как узнать % загрузки CPU в Linux?
Отправлено: OS2 от Июль 20, 2012, 21:02
Не понял...  :(
а примерчик можно?


Название: Re: Как узнать % загрузки CPU в Linux?
Отправлено: OS2 от Июль 20, 2012, 21:04
Наверное я не совсем понятно изложил суть вопроса: нужен платформенно-зависимый код на C\C++ для получения текущей загруженности CPU.  ;)


Название: Re: Как узнать % загрузки CPU в Linux?
Отправлено: Fat-Zer от Июль 20, 2012, 21:16
Наверное я не совсем понятно изложил суть вопроса: нужен платформенно-зависимый код на C\C++ для получения текущей загруженности CPU.  ;)
вот для чего людям исходники открыли!? смотри как это сделано в top'е тут тебе и «пример», и «как сделать»...
ЕМНИП там каждую секунду берётся статистика по всем процессам, а именно время, которое каждый из них провёл на процессоре, суммируется. затем просто смотрим какую ээто часть от секунды занимает... в чём время измеряется я не помню если честно.... статистика берётся ЕМНИП из /proc/<pid>

ЗЫ: /proc/stat — это не то скорей всего ­— там просто общая статистика с запуска системы.
ЗЗЫ: тема где-то тут уже была такая...


Название: Re: Как узнать % загрузки CPU в Linux?
Отправлено: DropNZ от Июль 21, 2012, 16:56
Наверное я не совсем понятно изложил суть вопроса: нужен платформенно-зависимый код на C\C++ для получения текущей загруженности CPU.  ;)
мне лень рыться по гуглу, но мне кажется, универсального решения нету, надо писать что-то типа
Код:
#ifdef  Q_OS_WIN32
        //вызов какой то winapi функции
#else
        //парсить что-нибудь
#endif


Название: Re: Как узнать % загрузки CPU в Linux?
Отправлено: OKTA от Июль 21, 2012, 17:04
чую фибрами души, что такого кода отродясь не было =D да и WIN32 с Linux врядли подружатся  :D

Парси вывод команд и будет тебе счастье!


Название: Re: Как узнать % загрузки CPU в Linux?
Отправлено: DropNZ от Июль 21, 2012, 17:11
чую фибрами души, что такого кода отродясь не было =D да и WIN32 с Linux врядли подружатся  :D

Парси вывод команд и будет тебе счастье!
Это да :) Можно выполнить команду, получить вывод и с помощью regexp найти нужные значения


Название: Re: Как узнать % загрузки CPU в Linux?
Отправлено: OS2 от Июль 22, 2012, 11:09
Я с регулярными выражениями не знаком. Подсказать не можешь, как правильно распарсить вывод top'а, чтоб узнать текущую загрузку CPU?


Название: Re: Как узнать % загрузки CPU в Linux?
Отправлено: OKTA от Июль 22, 2012, 12:12
с RegExp лучше сам разбирайся, иначе никогда не разберешься) Регулярные выражения должен знать каждый!!  8) А если боишься, то парси вывод обычными методами QString  :P


Название: Re: Как узнать % загрузки CPU в Linux?
Отправлено: xokc от Июль 23, 2012, 08:19
Вот здесь http://www.hyperic.com/products/sigar/ кроссплатформенная реализация искомого.


Название: Re: Как узнать % загрузки CPU в Linux?
Отправлено: Alex Custov от Июль 23, 2012, 17:20
Не понял...  :(

Читаешь документацию на файл /proc/stat, пишешь код который его открывает, читает значения, и вычисляет загрузку CPU. Примеров полно в гугле начиная от C и заканчивая bash с python.