tookie009 Temat założony przez niniejszego użytkownika |
» 2014-01-22 14:22:06 niestety nie dziala tak jak powinno, potem wkleje kod, ale poki co robie to w nastepujacy sposob:
-biore 1 linijke z pliku /proc/stat -rozdzielam to na spacje -sumuje wszystkie wartosci (liczby, napisu "cpu" nie uwzgledniam) -dziele wartosc idle przez sume potem powinienm jeszcze odjac ta wartosc od 1, ale poki co tego nie robie, bo juz teraz mi sie nie podoba... Mianowicie dostaje zawsze wartosc 0,592..., przy pokazuje sobie to z 20 miejscami po przecinku, takze na koncu moge widziec, ze ta wartosc ciagle rosnie. Nie jest mozliwe zeby ciagle bylo wykorzystanie prozesorra na poziomie 41%
|
|
alixir |
» 2014-01-22 14:32:04 Aż z ciekawości klepnełem w konsoli krótki programik. Możesz sobie sprawdzić i przeanalizować. Program działa 10s i co sekundę wyświetla wynik. #include <fstream> #include <iostream> #include <string>
int main() { std::ifstream plik; std::string temp; unsigned long int tab[ 4 ]; unsigned long int total, idle, diff_idle, diff_total, diff_usage; unsigned long int prev_idle = 0; unsigned long int prev_total = 0; for( int t = 0; t < 10; t++ ) { plik.open( "/proc/stat" ); if( !plik.good() ) { std::cout << "Nie udalo sie otworzyc pliku" << std::endl; return 1; } plik >> temp >> tab[ 0 ] >> tab[ 1 ] >> tab[ 2 ] >> tab[ 3 ]; idle = tab[ 3 ]; total = tab[ 0 ] + tab[ 1 ] + tab[ 2 ] + tab[ 3 ]; diff_idle = idle - prev_idle; diff_total = total - prev_total; diff_usage =( 1000 *( diff_total - diff_idle ) / diff_total + 5 ) / 10; std::cout << "CPU: " << diff_usage << std::endl; prev_idle = idle; prev_total = total; plik.close(); sleep( 1 ); } return 0; } |
|
tookie009 Temat założony przez niniejszego użytkownika |
» 2014-01-22 17:13:01 Wielkie dzieki, jestes niesamowity, takiego czegos sie nawete nie spodziewalem (ze ktos da mi praktycznie rozwiazanie do tego problemu).
poki co nie mam juz dzis gdzie sprawdzic, jutro sie znowu bede bawil, musze to skorelowac z innymi danymi, ktore zapisuje do csv. ale 1. co mi sie rzuca w oko:
jest mnozone x1000 i dzielone /10, czyli mozna zastapic x100. a ta 5 wydaje sie, ze nie ma znaczenia wlasciwie.
|
|
alixir |
» 2014-01-22 20:59:38 Twoje wnioski wydają się być właściwe, lecz jak napisałem wcześniej nie zastanawiałem się nad poprawnością tego wzoru, gdyż znalazłem go w jednym ze skryptów powłoki. Program który napisałem jest tylko przykładem, który miał za cel naprowadzenie na właściwy tor. |
|
tookie009 Temat założony przez niniejszego użytkownika |
» 2014-01-23 08:02:25 moze ta 5 ma jakies znaczenie, ale ja tego nie umiem wytlumaczyc. aczkolwiek gdy to z top porownuje, bez tej 5 tez idzie ladnie i realnie. Sumuje wszystkie wartosci (wszystkie 10). Wielkie dzieki, teraz zabieram sie do sprawdzania, ile pamieci zuzywa sie. |
|
Monika90 |
» 2014-01-23 15:15:44 Celem dodawania 5 jest zaokrąglanie wyniku |
|
1 « 2 » |