From https://dask.discourse.group/t/dask-worker-using-600-of-the-cpu/2489/2
The CPU % on each individual worker scales from 0 to nthreads*100; e.g. on a worker with 8 threads it can go from 0% to 800%. This is coherent with several other CPU monitors in the wild so it makes sense.
The CPU% on the Total row, however, is calculated as
|
elif name == "cpu": |
|
total_data = ( |
|
sum(ws.metrics["cpu"] for ws in self.scheduler.workers.values()) |
|
/ 100 |
|
/ len(self.scheduler.workers.values()) |
|
) |
So for example on a cluster with 2 workers, 8 threads per worker, if one worker is flat out busy while the other is idle, the Total will be 400%, which makes very little sense.
| name |
nthreads |
cpu |
| Total (2) |
16 |
400% |
| tcp://... |
8 |
800% |
| tcp://... |
8 |
0% |
I think we should change the CPU% on each worker to go from 0 to 100% and that on the total line to do the same (total CPU usage across the cluster / total number of threads)
In the above example, that would become
| name |
nthreads |
cpu |
| Total (2) |
16 |
50% |
| tcp://... |
8 |
100% |
| tcp://... |
8 |
0% |
From https://dask.discourse.group/t/dask-worker-using-600-of-the-cpu/2489/2
The CPU % on each individual worker scales from 0 to nthreads*100; e.g. on a worker with 8 threads it can go from 0% to 800%. This is coherent with several other CPU monitors in the wild so it makes sense.
The CPU% on the Total row, however, is calculated as
distributed/distributed/dashboard/components/scheduler.py
Lines 4303 to 4308 in 4425516
So for example on a cluster with 2 workers, 8 threads per worker, if one worker is flat out busy while the other is idle, the Total will be 400%, which makes very little sense.
I think we should change the CPU% on each worker to go from 0 to 100% and that on the total line to do the same (total CPU usage across the cluster / total number of threads)
In the above example, that would become