root@ubuntu-server:~# nproc
2
root@ubuntu-server:~# cat script.py
#!/usr/bin/python
import threading, time
def sleep():
while True:
time.sleep(0.000001)
t1 = threading.Thread(target=sleep)
t2 = threading.Thread(target=sleep)
t1.start()
t2.start()
t1.join()
t2.join()
root@ubuntu-server:~# ./script.py &
[1] 1561
If we take a look now at the status of this process by means of top, we can see as follows.
root@ubuntu-server:~# top -b -n 1 -p 1561
top - 19:41:19 up 24 min, 1 user, load average: 0.74, 0.66, 0.48
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 5.3%us, 39.7%sy, 0.0%ni, 55.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1024800k total, 205596k used, 819204k free, 23192k buffers
Swap: 1048572k total, 0k used, 1048572k free, 98712k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1561 root 20 0 29280 4180 2416 S 129 0.4 26:23.26 script.py
So what would be the first weird thing that you can observe from the previous screen? The script is consuming 129% of the CPU. This is right because you have to remember that this virtual machine has two cores and the script, rather, its two threads, are using the two ones and that figure is the combination of the CPU utilization from both cores. You can appreciate this situation much better if you execute top with the -H option.
root@ubuntu-server:~# top -b -H -n 1 -p 1561
top - 19:44:22 up 27 min, 1 user, load average: 0.69, 0.72, 0.54
Tasks: 3 total, 2 running, 1 sleeping, 0 stopped, 0 zombie
Cpu(s): 4.3%us, 38.9%sy, 0.0%ni, 56.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1024800k total, 205624k used, 819176k free, 23192k buffers
Swap: 1048572k total, 0k used, 1048572k free, 98712k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1563 root 20 0 29280 4180 2416 R 65 0.4 15:10.19 script.py
1562 root 20 0 29280 4180 2416 R 64 0.4 15:12.39 script.py
1561 root 20 0 29280 4180 2416 S 0 0.4 0:00.05 script.py
No comments:
Post a Comment