Prev: [PATCH] staging: winbond: sysdef.h Coding style fixes.
Next: [PATCH 1/1] sched: defer idle accounting till after load update period
From: Chase Douglas on 21 Mar 2010 18:50 The following patch fixes a load avg calculation bug. Details are included with the patch. Essentially, a task that often runs for less than 10 ticks at a time is likely to be left out of the load avg calculation. A test case is provided below. If you run the test case on a near zero-load system you will find top report 90% cpu usage while the load avg stays at or near 0.00. With the patch, the load avg is calculated correctly to be at least 0.90. -- #include <asm/param.h> #include <sys/time.h> #include <time.h> int main() { struct timespec ts; ts.tv_sec = 0; ts.tv_nsec = 1000000000 / HZ; /* * Run gettimeofday in a tight loop 9 ticks, then sleep for 1 tick */ while (1) { struct timeval tv; do { gettimeofday(&tv, NULL); } while ((tv.tv_usec * HZ / 1000000) % 10 != 0); nanosleep(&ts, NULL); } return 0; } -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |