mit double rechnen
-
Hallo, ich möchte auf Linux die gesamte CPU-Auslastung ermitteln, meine Funktion hat das Problem, dass difference immer eine negative Zahl ausrechnet.
Eigentlich müsste es doch unmöglich sein eine negative Zahl zu bekommen weil starttime >= idle.int getCompleteCPUUsage( const std::string& pathToUptime ) { std::ifstream file(pathToUptime); if( !file ) { std::string errorMsg = "can not open: "; errorMsg += pathToUptime; throw std::runtime_error( errorMsg.c_str() ); } double startTime = 0; double idle = 0; file >> startTime >> idle; double difference = startTime - idle; double result = difference / startTime; int returnvalue = static_cast< int > ( result ); return returnvalue; }
jan@linux ~ $ cat /proc/uptime 173755.29 624983.59
-
173755.29 >= 624983.59? Wirklich?
-
Die erste Zahl ist die wall-clock-time, die das System aktiv war (d.h. die Zeit, die die eingebaute Uhr gemessen hat). Die zweite Zeit ist die CPU-Zeit, die das System inaktiv war. Jetzt rechne dir mal aus, was das wohl auf einem Multiprozessorsystem für Auswirkungen hat.
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.