diff options
author | Arjan van de Ven <arjan@linux.intel.com> | 2010-10-14 02:34:00 -0400 |
---|---|---|
committer | Arjan van de Ven <arjan@linux.intel.com> | 2010-10-14 02:34:00 -0400 |
commit | f5e8562ad30646887be003e57d981c760908086e (patch) | |
tree | 4bb147c2ed24e2370e57724fff88c93c2154e2ca | |
parent | 72659adfeba3f2ab54379f5707a956c38b951663 (diff) | |
download | powertop-f5e8562ad30646887be003e57d981c760908086e.tar.gz |
sort better
-rw-r--r-- | TODO | 1 | ||||
-rw-r--r-- | process/do_process.cpp | 13 | ||||
-rw-r--r-- | process/powerconsumer.cpp | 20 | ||||
-rw-r--r-- | process/powerconsumer.h | 4 |
4 files changed, 34 insertions, 4 deletions
@@ -1,5 +1,6 @@ * deal with the "no measurements" case better with default values * move the 2 data files somewhere sane +* looks like events/sec keep adding up for processes * have a "show me my process" page * fix memory leaks diff --git a/process/do_process.cpp b/process/do_process.cpp index 4ea2111..afa4ddd 100644 --- a/process/do_process.cpp +++ b/process/do_process.cpp @@ -504,7 +504,18 @@ void end_process_measurement(void) static bool power_cpu_sort(class power_consumer * i, class power_consumer * j) { - return (i->Witts() > j->Witts()); + double iW, jW; + + iW = i->Witts(); + jW = j->Witts(); + + if (iW == jW) { + if (i->accumulated_runtime == j->accumulated_runtime) + return i->wake_ups > j->wake_ups; + return (i->accumulated_runtime > j->accumulated_runtime); + } + + return (iW > jW); } void process_update_display(void) diff --git a/process/powerconsumer.cpp b/process/powerconsumer.cpp index 5ac186f..b3aa7e0 100644 --- a/process/powerconsumer.cpp +++ b/process/powerconsumer.cpp @@ -60,4 +60,22 @@ power_consumer::power_consumer(void) wake_ups = 0; gpu_ops = 0; waker = NULL; -}
\ No newline at end of file +} + +double power_consumer::usage(void) +{ + double t; + t = (accumulated_runtime - child_runtime) / 1000000.0 / measurement_time; + if (t < 0.1) + t = t * 1000; + return t; +} + +const char * power_consumer::usage_units(void) +{ + double t; + t = (accumulated_runtime - child_runtime) / 1000000.0 / measurement_time; + if (t < 0.1) + return "usec"; + return "msec"; +} diff --git a/process/powerconsumer.h b/process/powerconsumer.h index e43ac39..e2d6bca 100644 --- a/process/powerconsumer.h +++ b/process/powerconsumer.h @@ -54,8 +54,8 @@ public: virtual const char * name(void) { return "abstract"; }; virtual const char * type(void) { return "abstract"; }; - virtual double usage(void) { return (accumulated_runtime - child_runtime) / 1000000.0 / measurement_time;}; - virtual const char * usage_units(void) {return "msec";}; + virtual double usage(void); + virtual const char * usage_units(void); virtual double events(void) { return (wake_ups + gpu_ops) / measurement_time;}; virtual int show_events(void) { return 1; }; }; |