From ad99187680585bf66f9de4f617e897dada8767f7 Mon Sep 17 00:00:00 2001 From: "Lucas C. Villa Real" Date: Tue, 23 Jan 2018 13:41:22 -0200 Subject: htop scans /proc to determine how many running tasks exist. Since that operation is not possible to be conducted in an atomic fashion, task scheduling effects can lead to a count greater than the number of actual processors; this is more easily noticed on machines with several CPUs and under heavy workload. This patch simply adds an upper bound on cpuCount to guarantee consistent reports of the number of running tasks at any given time. --- TasksMeter.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TasksMeter.c b/TasksMeter.c index 6a08d885..f56c8613 100644 --- a/TasksMeter.c +++ b/TasksMeter.c @@ -23,7 +23,7 @@ static void TasksMeter_updateValues(Meter* this, char* buffer, int len) { this->values[0] = pl->kernelThreads; this->values[1] = pl->userlandThreads; this->values[2] = pl->totalTasks - pl->kernelThreads - pl->userlandThreads; - this->values[3] = pl->runningTasks; + this->values[3] = MIN(pl->runningTasks, pl->cpuCount); if (pl->totalTasks > this->total) { this->total = pl->totalTasks; } -- cgit v1.2.3