本系列是查阅有数材料,又不想从头开始读厚厚的计算机操作系统教材,痛定思痛之后脑洞大开的后果。鉴于我有一些根底概念,那就从破坏性试验开逆向思考:用垃圾代码搞坏 Linux,顺便理解各种状况下系统诊断命令的输入。
我的智商下,第一个可能搞坏操作系统的代码就是死循环了。
先上代码。最简略的 Python。
def run():
i = 0
while(True):
i += 1
if __name__ == "__main__":
run()
在 linux 上执行这个 Python 脚本。
应用 top 查看
要害信息:
- load avarage 的三个值顺次开始升高。因为别离代表 1、5、15 分钟的零碎负载
- load avarage 第一位一分钟后达到 ~ 1。示意单核 cpu 被占满。
- python 过程的 cpu 达到 100%,该过程所在的 cpu 占满。
- cpu idle 达到 93.5 , 阐明整体看 cpu 还是十分空的。idle 近似了解成空跑。晶振在不停的发时钟信号,然而没有工作要做。
持续用 htop 看零碎状态
能够看到编号是 10 的 CPU 占用率居高不下,其余 cpu 没动静。传说中的:一方有难、八方围观。
要害信息:
- 死循环执行一段时间后 load avarage 当初都起来了,顺次起立。起来吧,极寒交迫的 CPU
- 零碎硬件 CPU 是 8 core 16 thread。Htop 外面 cpu 显示了 16 个。
- 一个过程会在一个固定逻辑 cpu 中执行,不会调度到其余 cpu 上。
毁坏加码
死循环搞不坏零碎,如果再起一个死循环呢?
关上两个命令行,执行两个 forever loop 代码
HTOP 外面胜利点亮第二个 cpu。
要害信息:
- 第二个过程占用另外一个逻辑 CPU 核,占用率 100%
- load 迫近 2。看来 load 的值跟 cpu 逻辑核对应。load 到 16 阐明所有 cpu 满载
TOP 中察看 cpu 相干数据
要害信息:
- 12.5% 的 us。forever loop 占用的是用户态的 cpu. 2/16 = 12.5%
- 86.9% 的 id 示意还有很多核在空载。14/16 = 87.5%