3
# Copyright (c) 2009, Giampaolo Rodola'. All rights reserved.
4
# Use of this source code is governed by a BSD-style license that can be
5
# found in the LICENSE file.
7
"""Shows CPU workload split across different CPUs.
9
$ python3 scripts/cpu_workload.py
10
CPU 0 CPU 1 CPU 2 CPU 3 CPU 4 CPU 5 CPU 6 CPU 7
11
19.8 20.6 18.2 15.8 6.9 17.3 5.0 20.4
12
gvfsd pytho kwork chrom unity kwork kwork kwork
13
chrom chrom indic ibus- whoop nfsd (sd-p gvfsd
14
ibus- cat at-sp chrom Modem nfsd4 light upsta
15
ibus- iprt- ibus- nacl_ cfg80 kwork nfsd bluet
16
chrom irqba gpg-a chrom ext4- biose nfsd dio/n
17
chrom acpid bamfd nvidi kwork scsi_ sshd rpc.m
18
upsta rsysl dbus- nfsd biose scsi_ ext4- polki
19
rtkit avahi upowe Netwo scsi_ biose UVM T irq/9
20
light rpcbi snapd cron ipv6_ biose kwork dbus-
21
agett kvm-i avahi kwork biose biose scsi_ syste
22
nfsd syste rpc.i biose biose kbloc kthro UVM g
23
nfsd kwork kwork biose vmsta kwork crypt kaudi
24
nfsd scsi_ charg biose md ksoft kwork kwork
25
memca biose ksmd ecryp ksoft watch migra nvme
26
therm biose kcomp kswap migra cpuhp watch biose
27
syste biose kdevt khuge watch cpuhp biose
28
led_w devfr kwork write cpuhp biose
29
rpcio oom_r ksoft kwork syste biose
30
kwork kwork watch migra acpi_
31
biose ksoft cpuhp watch watch
32
biose migra cpuhp kinte
33
biose watch rcu_s netns
34
biose cpuhp kthre kwork
41
from __future__ import print_function
49
from psutil._compat import get_terminal_size
52
if not hasattr(psutil.Process, "cpu_num"):
53
sys.exit("platform not supported")
64
num_cpus = psutil.cpu_count()
66
num_cpus = 8 # try to fit into screen
74
cpus_percent = psutil.cpu_percent(percpu=True)
75
for i in range(num_cpus):
76
print("CPU %-6i" % i, end="")
78
print(" (+ hidden)", end="")
81
for _ in range(num_cpus):
82
print("%-10s" % cpus_percent.pop(0), end="")
86
procs = collections.defaultdict(list)
87
for p in psutil.process_iter(['name', 'cpu_num']):
88
procs[p.info['cpu_num']].append(p.info['name'][:5])
92
for num in range(num_cpus):
94
pname = procs[num].pop()
97
print("%-10s" % pname[:10], end="")
100
if curr_line >= get_terminal_size()[1]:
106
if __name__ == '__main__':