Linux 查看系统资源的命令(CPU,内存,磁盘,网络)

Linux 查看系统资源的命令(CPU,内存,磁盘,网络)

Linux 查看系统资源的命令
  • 系统CPU命令
1.top 命令

​ d:指定更新的间隔,以秒计算。
​ q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。
​ c:显示进程完整的路径与名称。
​ S:累积模式,会将己完成或消失的子行程的CPU时间累积起来。
​ s:安全模式。
​ i:不显示任何闲置(Idle)或无用(Zombie)的行程。
​ n:显示更新的次数,完成后将会退出top。

显示说明:

​ PID(Process ID):进程标示号。
​ USER:进程所有者的用户名。
​ PR:进程的优先级别。
​ NI:进程的优先级别数值。
​ VIRT:进程占用的虚拟内存值。
​ RES:进程占用的物理内存值。
​ SHR:进程使用的共享内存值。
​ S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数。
​ %CPU:该进程占用的CPU使用率。
​ %MEM:该进程占用的物理内存和总内存的百分比。
​ TIME+:该进程启动后占用的总的CPU时间。
​ Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行。
top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。
​ <空格>:立刻刷新。
​ P:根据CPU使用大小进行排序。
​ T:根据时间、累计时间排序。
​ q:退出top命令。
​ m:切换显示内存信息。
​ t:切换显示进程和CPU状态信息。
​ c:切换显示命令名称和完整命令行。
​ M:根据使用内存大小进行排序。
​ W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法。

2.vmstat 命令
		vmstat [循环等待时间] [采集次数]				例如:vmstat 2 3

命令显示:

1、r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。

2、b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。

3、swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。

4、free 空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。

5、buff Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多M

6、cache cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)

7、si 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。

8、so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。

9、bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒

10、bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。

11、in 每秒CPU的中断次数,包括时间中断

12、cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。

13、us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。

14、sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

15、id 空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。

16、wt 等待IO CPU时间。

3、iostat 命令

  • iostat[参数][时间][次数]

  • 不加参数默认显示所有内容:

  • -C 显示CPU使用情况

  • -d 显示磁盘使用情况

  • -k 以 KB 为单位显示

  • -m 以 M 为单位显示

  • -N 显示磁盘阵列(LVM) 信息

  • -n 显示NFS 使用情况

  • -p[磁盘] 显示磁盘和分区的情况

  • -t 显示终端和CPU的信息

  • -x 显示详细信息

  • -V 显示版本信息

[youjun@node2 ~]$ iostat
Linux 3.10.0-957.10.1.el7.x86_64 (node2.ecreditpal.local) 2020年02月24日 x86_64 (16 CPU)

avg-cpu: %user %nice %system %iowait %steal %idle
7.45 0.00 3.81 0.48 0.00 88.26

Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
sdb 0.02 0.80 1.38 8945314 15391567
sda 0.03 0.63 3.21 7002402 35841455
sdd 1.58 198.58 79.93 2218807945 893052736
sdc 11.56 149.71 405.19 1672756074 4527476172

cpu属性值说明:
  • %user:CPU处在用户模式下的时间百分比。

  • %nice:CPU处在带NICE值的用户模式下的时间百分比。

  • %system:CPU处在系统模式下的时间百分比。

  • %iowait:CPU等待输入输出完成时间的百分比。

  • %steal:管理程序维护另一个虚拟处理器时,虚拟CPU的无意识等待时间百分比。

  • %idle:CPU空闲时间百分比。

  • 备注:如果%iowait的值过高,表示硬盘存在I/O瓶颈,%idle值高,表示CPU较空闲,如果%idle值高但系统响应慢时,有可能是CPU等待分配内存,此时应加大内存容量。%idle值如果持续低于10,那么系统的CPU处理能力相对较低,表明系统中最需要解决的资源是CPU。

  • disk属性值说明:

  • rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s

  • wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s

  • r/s: 每秒完成的读 I/O 设备次数。即 rio/s

  • w/s: 每秒完成的写 I/O 设备次数。即 wio/s

  • rsec/s: 每秒读扇区数。即 rsect/s

  • wsec/s: 每秒写扇区数。即 wsect/s

  • rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。

  • wkB/s: 每秒写K字节数。是 wsect/s 的一半。

  • avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。

  • avgqu-sz: 平均I/O队列长度。

  • await: 平均每次设备I/O操作的等待时间 (毫秒)。

  • svctm: 平均每次设备I/O操作的服务时间 (毫秒)。

  • %util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比

2.内存
free 命令, top 命令

free 命令参数
-b -k -m:分别以字节(KB、MB)为单位显示内存使用情况。
-s delay:显示每隔多少秒数来显示一次内存使用情况。
-t:显示内存总和列。
-o:不显示缓冲区调节列。

  1. 磁盘
    df -h 命令
    iostat 命令
  2. 网络
    ping 命令
  3. 查看其他系统资源命令
    uptime 命令
    uptime
    08:21:34 up 36 min, 2 users, load average: 0.00, 0.00, 0.00

#当前服务器时间: 08:21:34
#当前服务器运行时长 36 min
#当前用户数 2 users
#当前的负载均衡 load average 0.00, 0.00, 0.00,分别取1min,5min,15min的均值

load average 需要我们注意一些什么:

1、Load的数值是什么含义?

把CPU比喻成一条(单核)马路,进程任务比喻成马路上跑着的汽车,Load则表示马路的繁忙程度:

Load小于1:表示完全不堵车,汽车在马路上跑得游刃有余:

load0.5[ Load<1,单核]load0.5

Load等于1:马路已经没有额外的资源跑更多的汽车了:

load1[Load==1,单核]load1

Load大于1:汽车都堵着等待进入马路:

load5[Load>1,单核]load5

如果有两个CPU,则表示有两条马路,此时即使Load大于1也不代表有汽车在等待:

load2[Load==2,双核,没有等待]load2

2、什么样的Load值得警惕(单核)?

Load < 0.7时:系统很闲,马路上没什么车,要考虑多部署一些服务

0.7 < Load < 1时:系统状态不错,马路可以轻松应对

Load == 1时:系统马上要处理不多来了,赶紧找一下原因

Load > 5时:马路已经非常繁忙了,进入马路的每辆汽车都要无法很快的运行

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在进行性能测试时,可以使用各种工具和方法来查看系统资源的利用率,包括 CPU内存磁盘。下面是一些常用的方法: 1. 监控工具:使用系统监控工具可以实时监测系统资源的利用率。常见的监控工具包括: - Windows任务管理器:可以查看CPU内存磁盘的利用率。 - Linux系统监控命令(如top、htop、sar等):可以查看CPU内存磁盘的利用率,并提供更详细的信息。 - 第三方监控工具(如Zabbix、Nagios等):这些工具提供了更丰富的监控和报告功能,可以定期记录系统资源利用率,并生成图表和报告。 2. 性能测试工具:性能测试工具通常提供了系统资源监控的功能,可以在进行性能测试时同时监测系统资源的利用率。一些常见的性能测试工具包括: - Apache JMeter:这是一个功能强大的开源性能测试工具,可以监测CPU内存磁盘的利用率。 - LoadRunner:这是一款商业性能测试工具,也提供了系统资源监控的功能。 - Gatling:这是一个基于Scala开发的开源负载测试工具,也可以监测系统资源的利用率。 3. 编写脚本:使用编程语言,如Python,可以编写脚本来监测系统资源的利用率。通过调用操作系统的API或命令行工具,可以获取CPU内存磁盘的利用率,并进行自定义处理和记录。 无论使用哪种方法,重要的是在性能测试期间持续监测系统资源的利用率,以便发现潜在的性能瓶颈和资源耗尽问题,并进行适当的优化和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值