关于linux:玩坏-Linux-的-N-种方式-垃圾代码中有死循环

6次阅读

共计 806 个字符,预计需要花费 3 分钟才能阅读完成。

本系列是查阅有数材料,又不想从头开始读厚厚的计算机操作系统教材,痛定思痛之后脑洞大开的后果。鉴于我有一些根底概念,那就从破坏性试验开逆向思考:用垃圾代码搞坏 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%
正文完
 0