专栏首页性能与架构Linux top命令的数据从哪儿来?

Linux top命令的数据从哪儿来?

top命令是linux下非常重要的命令,帮助我们快速查看系统状态 那么top是如何获取系统各项状态指标的呢? 我们用strace命令跟踪一下top的执行 $ strace -o /tmp/strace_top.txt top -b -n 1 strace的作用: Linux中,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备 strace可以跟踪到一个进程产生的系统调用 上面的命令中,把top的执行情况保存到了文件中 查看文件内容 $ vim /tmp/strace_top.txt 文件内容非常多,也比较复杂,但可以看到一个规律,就是对非常多的文件执行打开、读取、分析、关闭的动作,例如

并且在读取的文件中,涉及 /proc 目录下的文件非常多 /proc 本身是一个虚拟文件系统,并非存在于硬盘之中,而是由Linux内核凭空创建,保存在内存中 /proc 的目录结构为 /proc |--/version |--/fs |--/stat |--...... |--/N/stat |--/N/mem |--/N/fs |--/N/...... /proc 下的文件是系统的相关信息 /proc/N N是以进程号为名字的目录,其中是此进程的相关信息文件 如/proc/2000,2000为PID,Linux 内核将与之关联的信息打印到此目录相关文件中 所以/proc目录的文件就是 Top 的重要消息来源 例如 /proc/cpuinfo cpu的硬件信息,如型号、速率、核数、cache大小…… /proc/meminfo 内存的信息,如内存总量、free空间、swap空间…… /proc/stat 所有的CPU活动状态的信息 /proc/diskstats 磁盘信息 /proc/loadavg 根据过去一段时间内CPU和IO的状态得出的负载状态 /proc/N/fd 进程相关的所有的文件描述符 /proc/N/mem 进程持有的内存,不可读 /proc/N/stat 进程的状态,内容可读性差,但其中包含了很多重要的信息,如: 该任务在用户态运行的时间、该任务在核心态运行的时间、当前驻留物理地址空间的大小、虚拟地址空间大小、父进程ID、线程组号……

……

/proc 中包含了丰富的系统信息,是各种监控命令和工具的重要数据来源

本文分享自微信公众号 - 性能与架构(yogoup),作者:杜亦舒

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-03-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux shell 实现HTTP服务

    需求场景 使用代理服务器 HAProxy 对 Mysql 做负载均衡是常用方案,为提高可用性,当某个 Mysql 出现问题时,例如服务器故障了,或者数据复制中断...

    dys
  • 网站性能指标 - Apdex指数

    假设有两个架构设计方案:方案A 和 方案B 方案A 并发请求 < 200 时,响应时间为 0.5秒 并发请求 > 1000 时,响应时间为 10秒 方案...

    dys
  • jQuery 3.0 的一个小问题

    jQuery 前阶段推出了3.0版本,改动非常大,如果要使用 3.0 的话,建议先仔细了解一下新特性,否则会引起一些小问题,例如下面的代码 <html> <he...

    dys
  • 面向对象思想的引入

    前面我们讲过数组,当有多个数组都需要遍历时,我们可以将遍历的代码封装到方法中,需要遍历时,就调用相应的方法即可,提高代码的复用性。

    黑泽君
  • 35.Linux-分析并制作环形缓冲区

    在上章34.Linux-printk分析、使用printk调试驱动里讲述了:  printk()会将打印信息存在内核的环形缓冲区log_buf[]里, 可以通...

    张诺谦
  • Springboot 2.0打包与自定义launch.script

    今天和首架聊到springboot的配置参数问题。他说,这些配置的参数,开发人员拷贝来拷贝去的,很容易出错,不如我们屏蔽一下吧。

    xjjdog
  • 大数据时代,你的数据属于谁?

    在这个所谓的DT(数据科技)时代,数据的价值正在为人所知,由此而来的个人信息泄露事件也层出不穷。然而,当人们将矛头指向黑客入侵系统漏洞、撞库拖库等,却忽略了掌...

    灯塔大数据
  • [LeetCode] Longest Common Prefix 最长公共前缀 [LeetCode] Longest Common Prefix 最长公共前缀

    链接:https://leetcode.com/problems/longest-common-prefix/#/description 难度:Easy ...

    尾尾部落
  • 大数据时代做企业高管应了解哪些知识

      在大数据战略合作协议签约仪式上,国家统计局局长马建堂讲了这样一席话:“一个大规模生产、分享和利用大数据的时代正在来临。谁拥有了大数据,谁就占领了制高点,取...

    小莹莹
  • JavaScript设计模式--策略模式

    定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。 基于策略类模式的程序至少由两部分组成。第一个部分是一组策略类,策略类封装了具体的算法,并负...

    奋飛

扫码关注云+社区

领取腾讯云代金券