Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

odczytanie danych z /proc/stat

Ostatnio zmodyfikowano 2014-01-23 15:15
Autor Wiadomość
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?
P-102789
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 ];
P-102790
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 ;) ?
P-102791
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
P-102792
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) ?
P-102794
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
P-102795
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?
P-102796
alixir
» 2014-01-22 09:11:14
Nie mam pojęcia. Jak napisałem to tylko wyciąg z jednego ze skryptów.
P-102799
« 1 » 2
  Strona 1 z 2 Następna strona