odczytanie danych z /proc/stat
Ostatnio zmodyfikowano 2014-01-23 15:15
tookie009 Temat założony przez niniejszego użytkownika |
odczytanie danych z /proc/stat » 2014-01-22 07:31:37 czesc, w tmy pliku znajduja sie dane na temat wykorzystania procesora. Sa one w nastepujacym formacie: cpu 1234 23432 32423 432432 234 0 432 0 0 0 cpu1 234 324 234 324444444 4444 3 444 4 4 4 #dalszy tekst mnie ie interesuje
MOje pytanie jest, mozna jakos "od razu" odczytac pierwsze 4 wartosci, ktore stoja za cpu? Czy musze sobie ten caly string przeleciec w poszukiwaniu pierwszej spacji i potem drugiej itd? EW. jeszcze jedno pytanie dla linuksiarzy: Chcialbym obliczy wykorzystanie procesora w procentach. Juz znalazlem ze musze odczytac te dane z tego pliku. Tylko teraz problem jest, ze niektorzy ludzie pisza, ze powinienem zsumowac pierwsze 4 wartosci i potem 4 wartosc (proces bezczynnosci) podzielic przez ta sume, a niektore, ze powinienem wszystkie zsumowac. Wie ktos moze ktora wersja jest prawidlowa? |
|
alixir |
» 2014-01-22 07:35:04 Chcesz to zrobić przy użyciu C++ czy ogólnie potrzebujesz tego w skrypcie bash? W sumie to dział chyba mówi sam za siebie :) Ogólnie lecisz po pliku aż znajdziesz linie z cpu i wczytujesz 5 wartości przy uzyciu strumienia plik >> temp >> tab[ 0 ] >> tab[ 1 ] >> tab[ 2 ] >> tab[ 3 ]; |
|
tookie009 Temat założony przez niniejszego użytkownika |
» 2014-01-22 07:54:59 chce to zrobic przy uzyciu c++, zaraz zobacze jak to mi sie bedzie czytac;) EDIT: w miedzyczasie znalazles ten kursik takze zajmuje sie czytaniem ;) EDIT2: i teraz robie to za pomoca operatora <<. Ale jest jakies obejscie zeby ominac wczytywanie napisu "cpu" na poczatku? I czy takie obejscie ma sens - bedzie program szybszy o te tysieczne sekund czy nie ;) ? |
|
alixir |
» 2014-01-22 08:32:39 Odnośnie liczby kolumn z wartościami liczbowymi to zależy to od wersji jądra.
- wersje poniżej 2.6 zawierały 4 kolumny liczbowe - od wersji 2.6 doszły 3 kolejne - od wersji 2.6.11 doszła ósma kolumna - a w wersji 2.6.24 doszła dziewiąta
Oznaczenia kolumn podawane w jednostkach czasu (zwykle 1/100 sekundy) 1 - procesy wywołane z poziomu użytkownika 2 - procesy wywołane z poziomu użytkownika o niskim priorytecie (nice) 3 - procesy jądra 4 - czas bezczynności 5 - wykonywanie zapytań I/O 6 - czas obsługi irq 7 - czas obsługi softirq 8 - czas spędzony na obsługę innych systemów (przy wirtualizacjach) 9 - nie do końca kumam - czas obsługi wirtualnych procesorów dla gościnnych systemów operacyjnych działających pod kontrolą jądra linuxa |
|
tookie009 Temat założony przez niniejszego użytkownika |
» 2014-01-22 08:37:43 takie cos tez znalazlem, moje pytanie jest bardziej: czy kolumny 5-9 sa juz zawarte w kolumnie 3 (procesy wywolane przez system) ? |
|
alixir |
» 2014-01-22 08:45:01 Z tego co wiem to nie (ale mogę się mylić). Skrypty liczące użycie procesora sumują wszystkie napotkane kolumny. Tu jest zasada obliczeń wzięta z jednego z takich skryptów: PREV_IDLE = 0 PREV_TOTAL = 0
IDLE = czwarta_kolumna TOTAL = suma_wszystkich_kolumn DIFF_IDLE = IDLE - PREV_IDLE DIFF_TOTAL = TOTAL - PREV_TOTAL DIFF_USAGE = ( 1000 * ( DIFF_TOTAL - DIFF_IDLE ) / DIFF_TOTAL + 5 ) / 10
|
|
tookie009 Temat założony przez niniejszego użytkownika |
» 2014-01-22 08:53:34 wlasnie wszyscy pisza inaczej, i wszyscy pisze, ze moga sie mylic ;) niestety nie mam pojecia jak to sprawdzic
EDIT: dlaczego w osattneij linijce jest jeszcze +5? |
|
alixir |
» 2014-01-22 09:11:14 Nie mam pojęcia. Jak napisałem to tylko wyciąg z jednego ze skryptów. |
|
« 1 » 2 |