Index: kernel/generic/include/cpu.h
===================================================================
--- kernel/generic/include/cpu.h	(revision 944f2cabb1486d36083818853bbff23141ff6e5e)
+++ kernel/generic/include/cpu.h	(revision e257ae3afe1ceec7d39e238296d4efc444331167)
@@ -68,4 +68,8 @@
 					     are disabled. */
 
+	bool idle;
+	uint64_t idle_ticks;
+	uint64_t busy_ticks;
+
 	/**
 	 * Processor ID assigned by kernel.
Index: kernel/generic/src/cpu/cpu.c
===================================================================
--- kernel/generic/src/cpu/cpu.c	(revision 944f2cabb1486d36083818853bbff23141ff6e5e)
+++ kernel/generic/src/cpu/cpu.c	(revision e257ae3afe1ceec7d39e238296d4efc444331167)
@@ -74,4 +74,6 @@
 			
 			cpus[i].id = i;
+			cpus[i].idle_ticks = 0;
+			cpus[i].busy_ticks = 0;
 			
 			spinlock_initialize(&cpus[i].lock, "cpu_t.lock");
Index: kernel/generic/src/proc/scheduler.c
===================================================================
--- kernel/generic/src/proc/scheduler.c	(revision 944f2cabb1486d36083818853bbff23141ff6e5e)
+++ kernel/generic/src/proc/scheduler.c	(revision e257ae3afe1ceec7d39e238296d4efc444331167)
@@ -202,4 +202,5 @@
 		 */
 
+		 CPU->idle = true;
 		 cpu_sleep();
 		 goto loop;
Index: kernel/generic/src/ps/load.c
===================================================================
--- kernel/generic/src/ps/load.c	(revision 944f2cabb1486d36083818853bbff23141ff6e5e)
+++ kernel/generic/src/ps/load.c	(revision e257ae3afe1ceec7d39e238296d4efc444331167)
@@ -37,5 +37,4 @@
 
 #include <proc/thread.h>
-#include <print.h>
 #include <ps/load.h>
 #include <arch.h>
@@ -117,5 +116,4 @@
 	while (true) {
 		calc_load_global();
-		printf("Computed loads: 0x%x 0x%x 0x%x\n", avenrun[0], avenrun[1], avenrun[2]);
 		thread_sleep(LOAD_FREQ);
 	}
Index: kernel/generic/src/time/clock.c
===================================================================
--- kernel/generic/src/time/clock.c	(revision 944f2cabb1486d36083818853bbff23141ff6e5e)
+++ kernel/generic/src/time/clock.c	(revision e257ae3afe1ceec7d39e238296d4efc444331167)
@@ -137,4 +137,13 @@
 	size_t missed_clock_ticks = CPU->missed_clock_ticks;
 	unsigned int i;
+
+	/* Account lost ticks to CPU usage */
+	if (CPU->idle) {
+		ASSERT(missed_clock_ticks == 0);
+		CPU->idle_ticks++;
+	} else {
+		CPU->busy_ticks += missed_clock_ticks + 1;
+	}
+	CPU->idle = false;
 
 	/*
