diff --git a/include/types/activity.h b/include/types/activity.h
index 0c23f76..605fe7a 100644
--- a/include/types/activity.h
+++ b/include/types/activity.h
@@ -50,12 +50,12 @@
 	/* one cache line */
 	struct freq_ctr cpust_1s;  // avg amount of half-ms stolen over last second
 	struct freq_ctr_period cpust_15s; // avg amount of half-ms stolen over last 15s
-	struct freq_ctr ctxsw_rate;// context switching rate over last second
-	struct freq_ctr tasks_rate;// task wakeup rate over last second
 	unsigned int avg_loop_us;  // average run time per loop over last 1024 runs
 	unsigned int accepted;     // accepted incoming connections
 	unsigned int accq_pushed;  // accept queue connections pushed
 	unsigned int accq_full;    // accept queue connection not pushed because full
+	unsigned int ctxsw;        // total number of context switches
+	unsigned int tasksw;       // total number of task switches
 	char __pad[0]; // unused except to check remaining room
 	char __end[0] __attribute__((aligned(64))); // align size to 64.
 };
diff --git a/src/cli.c b/src/cli.c
index 9581369..88fbae3 100644
--- a/src/cli.c
+++ b/src/cli.c
@@ -1087,8 +1087,8 @@
 	chunk_appendf(&trash, "\nstream:");       for (thr = 0; thr < global.nbthread; thr++) chunk_appendf(&trash, " %u", activity[thr].stream);
 	chunk_appendf(&trash, "\nempty_rq:");     for (thr = 0; thr < global.nbthread; thr++) chunk_appendf(&trash, " %u", activity[thr].empty_rq);
 	chunk_appendf(&trash, "\nlong_rq:");      for (thr = 0; thr < global.nbthread; thr++) chunk_appendf(&trash, " %u", activity[thr].long_rq);
-	chunk_appendf(&trash, "\nctxsw_rate:");   for (thr = 0; thr < global.nbthread; thr++) chunk_appendf(&trash, " %u", read_freq_ctr(&activity[thr].ctxsw_rate));
-	chunk_appendf(&trash, "\ntasks_rate:");   for (thr = 0; thr < global.nbthread; thr++) chunk_appendf(&trash, " %u", read_freq_ctr(&activity[thr].tasks_rate));
+	chunk_appendf(&trash, "\nctxsw:");        for (thr = 0; thr < global.nbthread; thr++) chunk_appendf(&trash, " %u", activity[thr].ctxsw);
+	chunk_appendf(&trash, "\ntasksw:");       for (thr = 0; thr < global.nbthread; thr++) chunk_appendf(&trash, " %u", activity[thr].tasksw);
 	chunk_appendf(&trash, "\ncpust_ms_tot:"); for (thr = 0; thr < global.nbthread; thr++) chunk_appendf(&trash, " %u", activity[thr].cpust_total/2);
 	chunk_appendf(&trash, "\ncpust_ms_1s:");  for (thr = 0; thr < global.nbthread; thr++) chunk_appendf(&trash, " %u", read_freq_ctr(&activity[thr].cpust_1s)/2);
 	chunk_appendf(&trash, "\ncpust_ms_15s:"); for (thr = 0; thr < global.nbthread; thr++) chunk_appendf(&trash, " %u", read_freq_ctr_period(&activity[thr].cpust_15s, 15000)/2);
diff --git a/src/task.c b/src/task.c
index 2775743..0e5419d 100644
--- a/src/task.c
+++ b/src/task.c
@@ -279,8 +279,6 @@
 	struct eb32sc_node *lrq = NULL; // next local run queue entry
 	struct eb32sc_node *grq = NULL; // next global run queue entry
 	struct task *t;
-	int to_process;
-	int wakeups;
 	int max_processed;
 
 	if (!(active_tasks_mask & tid_bit)) {
@@ -295,9 +293,6 @@
 	if (likely(niced_tasks))
 		max_processed = (max_processed + 3) / 4;
 
-	to_process = max_processed;
-	wakeups = 0;
-
 	/* Note: the grq lock is always held when grq is not null */
 
 	while (task_per_thread[tid].task_list_size < max_processed) {
@@ -350,7 +345,7 @@
 
 		/* And add it to the local task list */
 		task_insert_into_tasklet_list(t);
-		wakeups++;
+		activity[tid].tasksw++;
 	}
 
 	/* release the rqueue lock */
@@ -377,6 +372,7 @@
 		__ha_barrier_atomic_store();
 		__task_remove_from_tasklet_list(t);
 
+		activity[tid].ctxsw++;
 		ctx = t->context;
 		process = t->process;
 		t->calls++;
@@ -426,11 +422,6 @@
 		_HA_ATOMIC_OR(&active_tasks_mask, tid_bit);
 		activity[tid].long_rq++;
 	}
-
-	if (wakeups)
-		update_freq_ctr(&activity[tid].tasks_rate, wakeups);
-	if (to_process - max_processed)
-		update_freq_ctr(&activity[tid].ctxsw_rate, to_process - max_processed);
 }
 
 /*
