闲来无事,在一台2 CPU * 4物理核的服务器上,写了一个while(1)的死循环,然后top查询,发现CPU占用率是100%,为啥不是800%呢?为啥有些进程可以达到200%的CPU,死循环不是要占满所有CPU啊?
原来是我忘记了线程的定义:线程是CPU调度的基本单元,它与属于同一个进程的其他线程共享代码段、数据段和其他操作系统资源。
然后写了一个小程序,实现了两个线程跑while(1)的死循环,top查询,果然CPU占用率是200%!!!
长时间观察CPU占用情况,发现这两个线程固定占用某两个CPU,为什么呢?按照原则不是应该负载均衡吗?
在查询过程中发现有篇评论https://www.zhihu.com/question/68231533/answer/358528537, 觉得很有意思:while(1)死循环只是占用了CPU 100%的时间,其实CPU并没有在运算,你只是让cpu的时间都给了这个任务。如果你此时同时再跑一个很耗CPU的任务,那么你可以发现while(1)死循环的CPU占用率不是100%了。