本文基于Linux 2.6.x内核

一、取得CPU信息(相关文件/proc/stat)

在一个系统中的/proct/stat文件内容如下

$ cat /proc/stat
cpu 1039426 17799 111249 40729024 65373 8133 0
cpu0 1039426 17799 111249 40729024 65373 8133 0
intr 430346008 419773883 78233 0 5 5 1047009 7 4 1 2 0 5407218 66 0 3776594 262981
ctxt 307543240
btime 1173244314
processes 73837
procs_running 1
procs_blocked 0其中以“cpu”开头的两行代表系统中有两个CPU核心(我的机子是P4双核的),每一行对应一个CPU核心。后面的数字表示从启动到现在CPU花费在执行各项任务上的时间,单位是USER_HZ(一般是每秒一百次)。各个数据项从左至右的函义如下:
user:普通进程在用户模下下执行的时间。
nice:被提高优先级的进程在用户模式下的执行时间。
system:进程在内核模式下的执行时间。
idle:空转时间。
iowait:等待I/O完成的时间。
irq:处理中断请求花费的时间。
softirq:处理软中断请求花费的时间。"intr"一行给出了从启动到现在的中断服务次数,每一次可能的系统中断。第一列是总的中断服务次数;其它后续的列是各种特殊的中断总数。
"ctxt"一行给出的是从启动到现在所有的CPU进行上下文切换的总次数。
"btime"一行给出的是系统启动的时间,从Unix纪元(1970年1月1日0时0秒)开始的秒数。
"processes"一行给出的是创建的进程和线程总数,包括(但不限于)通过调用fork()和clone()系统调用创建的那些进程和线程。
"procs_running"给出的是当前正在运行的进程数。
"procs_blocked"给出的是当前被阻塞的进程数,正在等待I/O完成。

二、取得虚拟内存统计信息(相关文件/proc/vmstat)

在一个系统中/proc/vmstat文件显示的是从内核导出的虚拟内存的统计信息。大多数参数在配置了VM_EVENT_COUNTERS选项后编译内核才有效。这是因为大多数参数对于内核本身是没用的,但对于调试和统计信息有用。

各行解释如下:

$ cat vmstatnr_dirty 3 #脏页数
nr_writeback 0 #回写页数
nr_unstable 0 #不稳定页数nr_page_table_pages 894 #分配到页表的页数
nr_mapped 86854 #映射到文件的页数
nr_slab 4492 #由内核切片器分配的页数pgpgin 2433258 #从启动到现在读入的内存页数
pgpgout 2157211 #从启动到现在换出的内存页数pswpin 43240 #从启动到现在读入的交换分区页数
pswpout 69525 #从启动到现在换出的交换分区页数#每个存储区分配的页数
pgalloc_high 0 #从启动到现在高址存储区分配的页数
pgalloc_normal 170951852 #从启动到现在普通存储区分配的页数
pgalloc_dma 1892977 #从启动到现在DMA存储区分配的页数pgfree 172846757 #从启动到现在释放的页数
pgactivate 504252 #从启动到现在激活的页数
pgdeactivate 421772 #从启动到现在去激活的页数pgfault 21166511 #从启动到现在二级页面错误数
pgmajfault 21868 #从启动到现在一级页面错误数pgrefill_high 0 #从启动到现在高址存储区再填充的页面数
pgrefill_normal 2280369 #从启动到现在普通存储区再填充的页面数
pgrefill_dma 153904 #从启动到现在DMA存储区再填充的页面数pgsteal_high 0 #从启动到现在回收高址存储区用于其它目的的页面数
pgsteal_normal 505128 #从启动到现在回收普通存储区用于其它目的的页面数
pgsteal_dma 53444 #从启动到现在回收DMA存储区用于其它目的的页面数pgscan_kswapd_high 0 #从启动到现在kswapd后台进程扫描的高址存储区页面数
pgscan_kswapd_normal 579051 #从启动到现在kswapd后台进程扫描的普通存储区页面数
pgscan_kswapd_dma 59593 #从启动到现在kswapd后台进程扫描的DMA存储区页面数pgscan_direct_high 0 #从启动到现在高址存储区被直接回收的页面数
pgscan_direct_normal 131406 #从启动到现在普通存储区被直接回收的页面数
pgscan_direct_dma 11526 #从启动到现在DMA存储区被直接回收的页面数pginodesteal 2191 #从启动到现在通过释放i节点回收的页面数slabs_scanned 498816 #从启动到现在被扫描的切片数
kswapd_steal 454737 #从启动到现在由kswapd回收用于其它目的的页面数
kswapd_inodesteal 204421 #从启动到现在由kswapd通过释放i节点回收的页面数
pageoutrun 13634 #从启动到现在通过kswapd调用来回收的页面数
allocstall 2513 #从启动到现在请求直接回收的页面数
pgrotated 69535 #从启动到现在轮换的页面数

参考: https://www.kernel.org/doc/Documentation/vm/transhuge.txt

As the system ages, allocating huge pages may be expensive as the
system uses memory compaction to copy data around memory to free a
huge page for use. There are some counters in /proc/vmstat to help
monitor this overhead.

compact_stall is incremented every time a process stalls to run
memory compaction so that a huge page is free for use.

compact_success is incremented if the system compacted memory and
freed a huge page for use.

compact_fail is incremented if the system tries to compact memory
but failed.

compact_pages_moved is incremented each time a page is moved. If
this value is increasing rapidly, it implies that the system
is copying a lot of data to satisfy the huge page allocation.
It is possible that the cost of copying exceeds any savings
from reduced TLB misses.

compact_pagemigrate_failed is incremented when the underlying mechanism
for moving a page failed.

compact_blocks_moved is incremented each time memory compaction examines
a huge page aligned range of pages.

#cat /proc/vmstat  | grep com
compact_migrate_scanned 0
compact_free_scanned 0
compact_isolated 0
compact_stall 0
compact_fail 0
compact_success 0

三、取得物理内存信息(相关文件/proc/meminfo)

/proc/meminfo文件是从内核导出的当前内存的使用情况。下面是一些关键项的解释。

$cat /proc/meminfo
MemTotal: 515668 kB #总的物理内存大小
MemFree: 2684 kB #可用物理内存大小,因为大量的内存被用于高速缓存,所以这个数比较小,这个值等于下面的HighFree + LowFree的值
Buffers: 8928 kB #缓冲区大小
Cached: 225684 kB #用于高速缓存的大小
SwapCached: 74196 kB #用于高速缓存的交换分区大小
Active: 412920 kB #活动内存量
Inactive: 73988 kB #不活动内存量
HighTotal: 0 kB #高阶内存总数,高阶内存是指超过860M(大约)物理内存以后的内存
HighFree: 0 kB #高阶内存可用内存总数
LowTotal: 515668 kB #低阶内存总数
LowFree: 2684 kB #低阶内存区域的可用内存总数,这是内核可以直接寻址的内存
SwapTotal: 522072 kB #交换分区大小
SwapFree: 365588 kB #可用交换分区大小
Dirty: 28 kB #脏内存,可能要写到磁盘或者交换分区的内存
Writeback: 0 kB
Mapped: 360956 kB
Slab: 17244 kB
Committed_AS: 947452 kB #最坏情况下使用的内存数的一个估计值
PageTables: 3704 kB #内存页表数
VmallocTotal: 499704 kB
VmallocUsed: 3088 kB
VmallocChunk: 496356 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 4096 kB

四、取得磁盘信息(相关文件/proc/diskstats或者/sys/block/hd?/stat)

从2.4.20(和某些更早的打补丁的版本)和2.5.45以来为了帮助测量磁盘作业引入了更多的磁盘统计信息。诸如sar和iostat这样的工具一般会说明这些和为你做这些工作,但是如果你有兴趣创建自己的工具,知道在哪里取到这些信息将会非常有用。

$cat /proc/diskstats
...
22 0 hdc 159807 57894 6328277 1476593 179991 467858 5184662 2664218 0 886604 4140851
...$cat /sys/block/hdc/stat
159807 57894 6328277 1476593 179989 467844 5184534 2664218 0 886604 4140851/proc/diskstats文件比/sys/block/hdc/stat文件多3个域,从左至右分别对应主设备号,次设备号和设备名称。后续的11个域在这两个文件里是相同的,它们的函义将在下面解释。除了第9个域,所有的域都是从启动时的累积值。
第1个域:读磁盘的次数,成功完成读的总次数。
第2个域:合并读次数, field 6 – 合并写次数。为了效率可能会合并相邻的读和写。从而两次4K的读在它最终被处理到磁盘上之前可能会变成一次8K的读,才被计数(和排队),因此只有一次I/O操作。这个域使你知道这样的操作有多频繁。
第3个域:读扇区的次数,成功读过的扇区总次数。
第4个域:读花费的毫秒数,这是所有读操作所花费的毫秒数(用__make_request()到end_that_request_last()测量)。
第5个域:写完成的次数,成功写完成的总次数。
第7个域:写扇区的次数,成功写扇区总次数。
第8个域:写花费的毫秒数,这是所有写操作所花费的毫秒数(用__make_request()到end_that_request_last()测量)。
第9个域:I/O的当前进度,只有这个域应该是0。当请求被交给适当的request_queue_t时增加和请求完成时减小。
第10个域:花在I/O操作上的毫秒数,这个域会增长只要field 9不为0。
第11个域:加权, 花在I/O操作上的毫秒数,在每次I/O开始,I/O结束,I/O合并时这个域都会增加。这可以给I/O完成时间和存储那些可以累积的提供一个便利的测量标准。

五、取各个网卡的流量统计信息(相关文件/proc/net/dev)

/proc/net/dev文件的每一行对应一个网卡的统计信息,各个域从左到右的内容如下:

网卡接口名(如eth0)

#接收
收到的字节数
收到的数据包总数
收到的误码数
收到的丢失误码数
收到的FIFO误码数
收到的帧误码
收到的压缩字节数
收到的多播误码数
#发送
传输的字节数
传输的数据包总数
传输误码总数
传输丢失误码
传输FIFO误码
传输冲突误码
传输载波误码
传输压缩字节数

六、取得系统的运行时间(相关文件/proc/uptime)

$ cat /proc/uptime
533263.88 519004.52

/proc/uptime文件里包含两个数字,第一个是系统正常运行的时间,第二个是从启动到现在系统空转的时间。从这里可以看到我的系统绝大部份时间都是空转,并不忙。

七、取得系统的负载信息(相关文件/proc/loadavg)

$cat /proc/loadavg
0.50 0.48 0.29 1/128 12250

从左至右的内容分别是系统过去1分钟的平均负载、过去5分钟的平均负载、过去15分钟的平均负载、正在运行的任务数/当前总任务数、上一次创建进程使用的PID号。

转载于:https://www.cnblogs.com/muahao/p/6768048.html

取得Linux系统的各种统计信息相关推荐

  1. 13 种在 Linux 系统上检测 CPU 信息的工具

    13 种在 Linux 系统上检测 CPU 信息的工具 问题: 我想要了解我的电脑关于CPU处理器的详细信息,查看CPU信息比较有效地方法是什么? 根据你的需要,有各种各样的关于你的CPU处理器信息你 ...

  2. linux 系统硬件信息检测工具,9种在Linux系统上检测CPU信息的工具

    在Linux中,有许多命令行或基于GUI的工具就能来展示你的CPU硬件的相关具体信息.下面是学习啦小编收集整理的9 种在 Linux 系统上检测 CPU 信息的工具,希望对大家有帮助~~ 9 种在 L ...

  3. linux系统查看机器硬件信息,linux系统查看硬件信息的方法

    用过Linux系统的人都知道这么一个情况,那就是Linux大部分操作是通过命令实现的,并不像Windows那么直观.linux查看硬件信息也是需要通过命令查询才可以看得到硬件的信息,那linux系统如 ...

  4. linux系统下查看cpu功耗,Linux系统下查看CPU信息

    Linux系统下查看CPU信息 查看CPU信息(型号): # cat /proc/cpuinfo| grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeon( ...

  5. linux系统下查看 显卡 信息

    linux系统下查看 显卡 信息 命令:lspci |grep -i vga 如果是Nvidia显卡 1.基本命令:nvidia-smi nvidia-smi(The Nvidia System Ma ...

  6. linux的pci文件是哪个,Linux系统查看PCI设备信息

    Linux系统查看PCI设备信息,基本是使用lspci命令,如果找不到该命令,那么需要先安装pciutils软件包. 列出系统的PCI设备: [root@os2 ~]# lspci00:00.0 Ho ...

  7. linux网卡没有显示link,以下显示是一个Linux系统的网络配置信息:eth0 Link encap:..._考试资料网...

    单项选择题以下显示是一个Linux系统的网络配置信息: eth0 Link encap:Ethernet HWaddr 00:0C:29:F5:B4:79 inet addr:192.168.2.38 ...

  8. linux内存硬件检测工具,13种在 Linux 系统上检测 CPU 信息的工具

    1. /proc/cpuinfo 最简单的方法就是查看 /proc/cpuinfo ,这个虚拟文件展示的是可用CPU硬件的配置.$ more/proc/cpuinfo 通过查看这个文件,你能识别出物理 ...

  9. Linux 系统查看硬件配置信息

    Windows下面查看硬件配置信息,通常我们会去下载相关软件,软件会给我们提供非常直观的方式.虽然在Linux下面也有这类的软件,但大家通常不这么做,习惯于使用内置的命令查看.原因大家都知道,因为作为 ...

最新文章

  1. 通过BeanFactory获取bean的几种方法
  2. id3决策树 鸢尾花 python_决策树算法——集成学的基础!
  3. XAF-Domain Components 技术 使用接口来定义ORM业务对象
  4. c++值传递,指针传递,引用传递以及指针与引用的区别
  5. 二分图的最大带权匹配
  6. python案例教程黄蔚答案_Python编程案例教程
  7. 《成为顶级JAVA架构师的必备书籍》
  8. OpenStack pike版 安装openstack服务(4) 续安装openstack服务(3)
  9. 如何干净的卸载Mac版VMware Fusion
  10. 【信息系统项目管理师】第十二十三章 项目采购合同管理(考点汇总篇)
  11. [学习IMU](MEMS 三轴加速计、三轴陀螺仪、三轴磁力计)6轴IMU+磁力计,9轴传感器讲解
  12. 制作一幅简单的ArcGIS故事地图
  13. 目标检测YOLO实战应用案例100讲-自动驾驶场景下的三维目标检测技术研究
  14. 数据结构-青蛙杯棒球比赛
  15. r6400 usb android,网件R6400路由器USB接口速率测试与总结
  16. python hank_python学习路线
  17. Leetcode 703. Kth Largest Element in a Stream
  18. 情人节程序员用HTML网页表白【粒子动画】 HTML5七夕情人节表白网页源码 HTML+CSS+JavaScript
  19. 用Pandas揭秘美国选民的总统喜好
  20. C#实战之CAD二次开发001:CAD和C#的环境配置

热门文章

  1. wi7家庭版安装 sqlserver2008
  2. 数据库入门浅析:ASP.NET与MySQL连接
  3. GridView跨行合并单元格
  4. 在ASP.Net2.0中使用UrlRewritingNet实现链接重写
  5. Apache Beam和BigQuery的错误处理(Java SDK)
  6. css之object-fit
  7. 响应式网页之媒体查询
  8. mysql binlog日志优化及思路
  9. (转)jQuery禁止右键菜单,全选
  10. H5进阶篇--实现微信摇一摇功能