title: Linux常⽤系统性能测试命令(硬盘、内存、CPU)
categories: Linux
timezone: Asia/Shanghai
date: 2019-01-06
环境
REHL7
CentOS7
1.硬盘监控
为什么把硬盘性能查看放到最前边,因为现在服务起来说,⼀般CPU和内存都基本可以满⾜要求,但是由于很多服务器存储还是使⽤机械硬盘,所有往往瓶颈实在硬盘IO上,所以系统出现问题要重点查看硬盘IO占⽤。
1.简单粗暴的测试硬盘写⼊速度
[root@redhat73 ~]# dd if=/dev/zero of=/home/linshi.a bs=1024000000 count=2
2+0 records in
2+0 records out
2048000000 bytes (2.0 GB) copied, 4.67577 s, 438 MB/s
写⼊⼀个2GB的⽂件,⽤时4.67577秒,平均438 MB/s
2.iotop命令:简单的top类I/O监视器,可⽤来查看具体某进程所占⽤的硬盘IO情况。
iotop
左右箭头改变列
r 改变排序
a 切换累计还是当前实时速度
d 马上刷新。默认1秒刷新⼀次
q 退出
# 常⽤⽰例
iotop -d 0.1 # 刷新时间0.1秒
iotop -d 0.1 -n 10 # 刷新时间0.1秒,10次后退出
高周元-p pid 要监控的pid进程号,不加此参数默认监控所有
-o 仅显⽰执⾏I/O的进程,执⾏过程中可以按o切换
-u USERNAME 监控指定⽤户的IO
-a 显⽰累计,⽽不是当前IO
-b ⾮交互模式,⼀般⽤来记录⽇志
-k 使⽤kB单位,⽽不是对⼈友好的单位。在⾮交互模式下,脚本编程有⽤。
-
t 加时间戳,⾮交互模式下记录⽇志⾮常有⽤
-q 禁⽌头⼏⾏,⾮交互模式。有三种指定⽅式。
-q 只在第⼀次监测时显⽰列名
-qq 永远不显⽰列名。
-qqq 永远不显⽰I/O汇总。
# 各列说明:
PID 进程PID(按p切换)
PRIO
USER ⽤户
DISK READ 读取速度
DISK WRITE> 写⼊速度(>代表按当前列排序)
雅思托福怎么考SWAPIN 进程或者线程花费在交换内存时间的百分⽐。
如果出现SWAPIN百分⽐很⾼,可以肯定内存不⾜了,赶快通过free -h 查看⼀下内存情况,并合理优化内存相关配置。 IO 占⽤IO百分⽐
COMMAND 进程名
3.iostat命令:分硬盘统计所有进程写⼊和读取总速度
iostat -m 1 3 # 每1秒输出⼀次,执⾏3次后退出,并已MB为单位显⽰
# 输出说明
最上⾯指⽰系统版本、主机名和当前⽇期
Linux 3.10.0-514.el7.x86_64 (redhat73) 01/05/2019 _x86_64_ (1 CPU)
总体cpu使⽤情况统计信息,对于多核cpu,这⾥为所有cpu的平均值
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 100.00 0.00 0.00 0.00
%user CPU在⽤户态执⾏进程的时间百分⽐。
%nice CPU在⽤户态模式下,⽤于nice操作,所占⽤CPU总时间的百分⽐
%system CPU处在内核态执⾏进程的时间百分⽐
%iowait CPU⽤于等待I/O操作占⽤CPU总时间的百分⽐
%steal 管理程序(hypervisor)为另⼀个虚拟进程提供服务⽽等待虚拟CPU的百分⽐
%idle CPU空闲时间百分⽐
1. 若 %iowait 的值过⾼,表⽰硬盘存在I/O瓶颈
2. 若 %idle 的值⾼但系统响应慢时,有可能是CPU等待分配内存,此时应加⼤内存容量
3. 若 %idle 的值持续低于1,则系统的CPU处理能⼒相对较低,表明系统中最需要解决的资源是 CPU
各磁盘设备的IO统计信息
鲠Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 752.33 0.00 366.35 0 315
scd0 0.00 0.00 0.00 0 0
赵本山媳妇马丽娟dm-0 934.88 0.00 453.58 0 390
dm-1 0.00 0.00 0.00 0 0
Device 磁盘名称
tps 每秒向磁盘设备请求数据的次数,包括读、写请求,为rtps与wtps的和。
出于效率考虑,每⼀次IO下发后并不是⽴即处理请求,⽽是将请求合并(merge),这⾥tps指请求合并后的请求计数。 MB_read/s 读取速度(单位:MB/s)
MB_wrtn/s 写⼊速度(单位:MB/s)
MB_read 取样时间间隔内读取总数(单位:MB)
MB_wrtn 取样时间间隔内写⼊总数(单位:MB)
2.内存
[root@localhost home]# free -h
total used free shared buff/cache available
Mem: 974M 56M 818M 580K 99M 787M
Swap: 2.0G 37M 2.0G
# 参数解释
-m 以MB为单位输出
-g 以GB为单位输出
-h 以⼈类可读的单位输出,⾃动转换KB、MB或者GB为单位
-s N 每N秒打印⼀次
-c N 打印N次后退出
# 输出说明(Mem代表物理内存、Swap代表虚拟内存)
total 表⽰系统的总内存
used 表⽰应⽤程序已经使⽤的内存
free 表⽰当前还没有被使⽤的内存
shared 表⽰共享链接库使⽤的内存
buff/cache 表⽰系统的page cache和buffer使⽤到的内存
available 表⽰应⽤程序还可以申请到的内存
怎么判断是否需要加内存:
1.swap使⽤有多少
三好学生主要事迹怎么写2.available剩余是多少,⽽不是看free
cache是Linux系统为了提⾼系统运⾏效率⽽将⼀些程序或⽂件写⼊到cache,可提⾼程序运⾏和加载速度,如果程序需要会马上释放。所以判断系统内存是否⾜够和是否需要增加的时候不能简单的看free
Cache Pages:
A cache is the part of the memory which transparently stores data so that future requests for that data can be served faster.
费玉污This memory is utilized by the kernel to cache disk data and improve i/o performance.
系统当前使⽤到的内存是:used + buff/cache,used中包含了shared。
所以total = used + buff/cache + free = 56 + 99 + 818 = 973
available(787) <= free + buff/cache(818 + 99 = 917),为什么是⼩于呢?因为系统的⼀些page或cache是不能回收的。
3.CPU
查看CPU信息
# 总核数 = 物理CPU个数 X 每颗物理CPU的核数
# 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
# 查看CPU信息(型号)
cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
发布评论