linux监控硬件使用状态

linux下常用的监控查看硬件信息工具命令

top命令

top是最常用的用来观察系统运行状况的命令

top - 11:00:25 up  2:18,  1 user,  load average: 1.45, 1.20, 0.94
Tasks: 380 total,   2 running, 378 sleeping,   0 stopped,   0 zombie
%Cpu(s):  7.1 us,  2.6 sy,  0.0 ni, 90.1 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
MiB Mem :  15707.4 total,   1366.8 free,   5742.7 used,   8597.9 buff/cache
MiB Swap:  16384.0 total,  16384.0 free,      0.0 used.   8795.1 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                              
   3533 root      20   0 1029000 118584  79800 S   9.6   0.7   2:50.17 Xorg                                                 
   3581 root      20   0 2139720  33196  16284 S   3.7   0.2   0:35.10 dde-system-daem                                      
   2879 root      20   0  406432  16948  12980 S   3.3   0.1   0:16.63 udisksd    

第一行 概览信息

系统当前时间,系统从开机到现在运行了多久,几个用户在使用,平均负载压力。平均负载压力分别取最近1分钟,5分钟,10分钟的平均值。

load average

平均负载压力,是cpu的指标,表示平均系统的进程数。这个是所有的进程数,那么需要对比你有几个cpu内核。比如这个值是4,有4个cpu,那么每个进程一个内核,正好使用;如果这个数超过cpu内核数,就表示cpu压力增大,有可能会有进程不能及时获得cpu资源。

第二行 进程相关

总共多少进程,正在运行的进程个数,休眠的进程个数,停止的进程个数,僵尸进程个数

第三行 cpu相关

用户使用cpu的比例,系统使用cpu的比例,改变优先级的进程使用cpu的比例,空闲的cpu的比例,等待IO的cpu的比例,硬中断cpu的比例,软终端cpu的比例,虚拟cpu的比例

wa等待io的cpu比例,如果出现,就表示硬盘或其他io影响了系统性能了,如果比例比较高,比如个人占用7%,则wa占用3%,就会感觉到卡顿

第四行 物理内存相关

内存总大小,空闲大小,使用大小,用作buff和cache的大小

第五行 swap相关

内存总大小,空闲大小,使用大小,可用大小

下面整体

  • PID 进程ID
  • USER 进程所属用户
  • PR 优先级
  • NI 对优先级的修正
  • VIRT 虚拟内存
  • RES 常驻内存
  • SHR 共享内存
  • S 进程状态 D不可中断的睡眠状态,R运行,S睡眠,T跟踪/停止,Z僵尸进程
  • %CPU cpu使用率
  • %MEM 内存使用率
  • TIME+ 进程总共使用cpu的时间
  • COMMAND 进程名称

Cpu(s)

Cpu0  :  0.0%us,  4.0%sy,  0.0%ni,  0.0%id, 96.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :100.0%us,  0.0%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu2  : 14.0%us, 77.4%sy,  0.0%ni,  0.0%id,  8.6%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  : 14.3%us, 80.3%sy,  0.0%ni,  0.0%id,  5.3%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu4  : 17.9%us, 82.1%sy,  0.0%ni,  0.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  : 14.6%us, 77.2%sy,  0.0%ni,  0.0%id,  8.3%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  :  0.3%us,  0.7%sy,  0.0%ni, 48.8%id, 50.2%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  0.8%us, 10.9%sy,  0.0%ni, 63.2%id, 25.2%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu8  :  3.0%us,  1.0%sy,  0.0%ni, 68.9%id, 27.1%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu9  :  2.7%us,  0.3%sy,  0.0%ni, 18.2%id, 78.8%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu10 :  0.7%us,  0.0%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu11 :  1.7%us,  1.0%sy,  0.0%ni,  0.0%id, 97.3%wa,  0.0%hi,  0.0%si,  0.0%st

在top界面,摁下1,会把Cpu一行的信息按照每一个cpu内核分别显示出来
这里可以间接推测cpu是否绑核,因为cpu绑核后会一直以100%的使用率运行,所以如果cpux的使用率一直是100%,说明被绑核了。这里会有点误差,可能是99%或者98%,都是正常的。

%CPU

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                        
18683 root      20   0 5044m 2.9g 136m D 253.2 18.7   0:10.87 aaa    

在这个示例钟,可以看到进程aaa占用的%CPU超过了100%,达到了253.2%,这是为什么呢?
%CPU表示的是这个进程每个线程占用cpu比例的总和,也就是多线程的情况下,有可能会超过100%。多个线程使用了多个cpu内核,占用比例加起来超过了100%。
在top界面摁下H可以按照线程显示,同一个进程会多出很多条记录,这种情况下,%CPU就不会超过100%

查看指定进程信息

top -p 进程id

Tasks:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombie
Cpu(s): 14.3%us, 28.2%sy,  0.0%ni, 16.6%id, 40.9%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16303084k total, 16128104k used,   174980k free,     2584k buffers
Swap: 33554428k total, 18446744073677550216k used, 65555828k free,   223788k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                        
20922 root      20   0 5044m 3.0g 219m R 468.3 19.5  34:46.25 xxx

查看指定进程每一个线程的信息

top -H -p 进程id

top - 13:46:42 up 54 days, 21:00,  1 user,  load average: 11.91, 11.58, 11.26
Tasks:   6 total,   3 running,   3 sleeping,   0 stopped,   0 zombie
Cpu(s): 13.8%us, 26.4%sy,  0.0%ni, 33.9%id, 25.9%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  16303084k total, 16148348k used,   154736k free,     2008k buffers
Swap: 33554428k total, 18446744073677594628k used, 65511416k free,   232648k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                        
20922 root      20   0 5044m 3.0g 234m R 100.0 19.6   9:32.22 aaa                                                       
20953 root      20   0 5044m 3.0g 234m R 100.0 19.6   9:15.18 aaa                                                       
20952 root      20   0 5044m 3.0g 234m R 90.0 19.6   7:47.75 aaa                                                        
20954 root      20   0 5044m 3.0g 234m D 88.3 19.6   8:33.62 aaa                                                        
20951 root      20   0 5044m 3.0g 234m D 68.7 19.6   7:52.99 aaa                                                        
20926 root      20   0 5044m 3.0g 234m S  0.0 19.6   0:00.00 eal-intr-thread

切换内存单位

在top界面摁eE可以分别切换显示下面进程和上面总览的内存单位,从b->k->m->g->t->p进行循环

更多操作

在top界面按下f,可以到一个选择界面,选择哪些信息显示,可以调整顺序,也可以设置按照哪一个选项排序。界面最上面有介绍如何使用,设置完,按q退到top界面,就可以立即生效

htop nmon glances s-tui

类似于top,支持鼠标操作,提供的信息更丰富

htop

htop会默认显示一个进程的所有线程,可以在界面摁下H进行切换

iotop

监控系统的磁盘读写状态。
在iotop界面也可以使用快捷键切换功能

  • < > 键盘方向键切换排序字段
  • r 切换排序方式
  • o 切换是否只显示io操作的进程
  • p 切换按照进程显示还是按照线程显示
  • a 切换是否累加流量

指定进程

iotop -p 进程id

指定用户

iotop -u root

sar

安装对应的包是sysstat
一般使用命令sar 参数 隔几秒采集一次 采集几次
参数经常用的是-u表示cpu,-d表示磁盘,r表示内存

sar -d 3 5 采集硬盘信息,3秒一次,一共5次

$ sar -d 3 4
Linux 5.15.45-amd64-desktop    2022年12月07日  _x86_64_        (8 CPU)

15时12分53秒       DEV       tps     rkB/s     wkB/s   areq-sz    aqu-sz     await     svctm     %util
15时12分56秒    dev7-0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15时12分56秒    dev7-1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15时12分56秒    dev7-2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15时12分56秒    dev7-3      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15时12分56秒    dev7-4      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15时12分56秒    dev7-5      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
15时12分56秒  dev259-0      4.67      0.00    530.67    113.71      0.03      6.00      2.29      1.07

但是统计硬盘这里DEV到底与磁盘分区如何对应,还不清楚

除此之外,sar还可以统计网络,IO,队列等很多信息

iostat

iostat可以查看cpu,硬盘等IO信息

$ iostat -d 2 3
Linux 5.15.45-amd64-desktop   2022年12月07日  _x86_64_        (8 CPU)

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
loop0             0.00         0.05         0.00       1083          0
loop1             0.00         0.00         0.00         14          0
loop2             0.00         0.01         0.00        349          0
loop3             0.00         0.05         0.00       1073          0
loop4             0.00         0.05         0.00       1081          0
loop5             1.41        68.64         0.00    1625141          0
nvme0n1          30.45       350.15       670.59    8290193   15876985

vmstat

Virtual Meomory Statistics 虚拟内存统计
虽然是虚拟内存统计,但是可以对内存,cpu和硬盘等做统计

$ vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
       total merged sectors      ms  total merged sectors      ms    cur    sec
loop0     53      0    2166      10      0      0       0       0      0      0
loop1     11      0      28       0      0      0       0       0      0      0
loop2     45      0     698       6      0      0       0       0      0      0
loop3     54      0    2146      13      0      0       0       0      0      0
loop4     54      0    2162      12      0      0       0       0      0      0
loop5  33303      0 3250282    3782      0      0       0       0      0      8
loop6      0      0       0       0      0      0       0       0      0      0
loop7      0      0       0       0      0      0       0       0      0      0
nvme0n1 178652  48915 16580475   55878 544167 432976 31823850 2455743      0    526

统计硬盘信息

  • total 读写总数
  • merged 分组读写
  • sectors 读写扇区数
  • ms 读写消耗的毫秒数
  • cur 正在进行的I/O数
  • sec I/O所花费的秒数

mpstat

监控cpu信息
mpstat -P ALL 2 5监控所有cpu信息,每2秒一次,一共5次

pidstat

监控各种资源信息
pidstat -p 16008 -d 2 3 统计16008进程的磁盘信息,每2秒一次,统计3次

lsof

列出当前系统中哪些端口进程等打开了哪些文件

iftop

监控系统流量和带宽

fio

io性能测试

posted @ 2022-12-07 15:41  秋来叶黄  阅读(370)  评论(0编辑  收藏  举报