前言
在极客时间上学习的Linux性能优化实战
这里把自己实践的过程记录下,文章会援引很多课程中的资料,详情还是建议点击上面的链接去购买课程
什么是平均负载
平均负载
是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。
所谓可运行状态的进程
,是指正在使用 CPU 或者正在等待 CPU 的进程,也就是我们常用 ps 命令看到的,处于 R 状态(Running 或 Runnable)的进程。
而不可中断状态的进程
,则是正处于内核态关键流程中的进程,并且这些流程是不可打断的,比如最常见的是等待硬件设备的 I/O 响应,也就是我们在 ps 命令中看到的 D 状态(Uninterruptible Sleep,也称为 Disk Sleep)的进程。
比如,当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程或者中断打断的,这个时候的进程就处于不可中断状态。如果此时的进程被打断了,就容易出现磁盘数据与进程数据不一致的问题。
所以,不可中断状态实际上是系统对进程和硬件设备的一种保护机制。
查看平均负载
[root@localhost /]# uptime
08:18:23 up 9:10, 2 users, load average: 0.44, 0.68, 0.86
[root@localhost /]# date
2019年 07月 31日 星期三 08:18:57 CST
[root@localhost /]# who
root tty1 2019-07-30 23:08
root pts/0 2019-07-30 23:08 (192.168.1.5)
[root@localhost /]# who -b
系统引导 2019-07-30 23:08
uptime的结果:
08:18:23 //当前时间
up 9:10 //系统运行时间
2 users //登录用户数
0.44 //过去1分钟的平均负载
0.68 //过去5分钟的平均负载
0.86 //过去15分钟的平均负载
平均负载是否合理
平均负载可以理解为平均活跃进程数,即平均负载等于CPU个数的时候,是比较理想的,CPU被充分利用.超过CPU个数则负载高
查看CPU个数
[root@localhost ~]# grep 'model name' /proc/cpuinfo | wc -l
1
[root@localhost ~]# grep 'model name' /proc/cpuinfo
model name : AMD Ryzen 5 2600X Six-Core Processor
网上看的另一种查看的方法:
[root@localhost ~]# cat /proc/cpuinfo
processor : 0
vendor_id : AuthenticAMD
cpu family : 23
model : 8
model name : AMD Ryzen 5 2600X Six-Core Processor
stepping : 2
microcode : 0x800820b
cpu MHz : 3599.994
cache size : 512 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm constant_tsc rep_good nopl tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw arat xsaveopt fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap
bogomips : 7199.98
TLB size : 2560 4K pages
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:
其中physical id代表第几个CPU,cpu cores代表CPU的核数.即1个CPU
与实际一致:
根据网上说的,平均负载超出70%就需要重视了,可以排查下导致负载高的原因.
模拟测试
需要两个2个工具:
安装stress:
yum install -y epel-release
yum install -y stress
第二部安装的时候报错了:
[root@localhost ~]# yum install -y stress
已加载插件:fastestmirror
base | 3.6 kB 00:00:00
One of the configured repositories failed (未知),
and yum doesn't have enough cached data to continue. At this point the only
safe thing yum can do is fail. There are a few ways to work "fix" this:
1. Contact the upstream for the repository and get them to fix the problem.
2. Reconfigure the baseurl/etc. for the repository, to point to a working
upstream. This is most often useful if you are using a newer
distribution release than is supported by the repository (and the
packages for the previous distribution release still work).
3. Disable the repository, so yum won't use it by default. Yum will then
just ignore the repository until you permanently enable it again or use
--enablerepo for temporary usage:
yum-config-manager --disable <repoid>
4. Configure the failing repository to be skipped, if it is unavailable.
Note that yum will try to contact the repo. when it runs most commands,
so will have to try and fail each time (and thus. yum will be be much
slower). If it is a very temporary problem though, this is often a nice
compromise:
yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true
Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again
网上找了种解决方法:
vim /etc/yum.repos.d/epel.repo
修改,让baseurl生效,注释掉metalink
baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
#metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
然后,就可以了:
[root@localhost ~]# stress
`stress' imposes certain types of compute stress on your system
Usage: stress [OPTION [ARG]] ...
-?, --help show this help statement 显示帮助信息
--version show version statement 显示版本号
-v, --verbose be verbose
-q, --quiet be quiet 不显示运行信息
-n, --dry-run show what would have been done 显示已完成的指令情况
-t, --timeout N timeout after N seconds 指定运行N秒后停止
--backoff N wait factor of N microseconds before work starts 等待N微妙后开始运行
-c, --cpu N spawn N workers spinning on sqrt() 产生n个进程 每个进程都反复不停的计算随机数的平方根
-i, --io N spawn N workers spinning on sync() 产生n个进程 每个进程反复调用sync(),sync()用于将内存上的内容写到硬盘上
-m, --vm N spawn N workers spinning on malloc()/free() 产生n个进程,每个进程不断调用内存分配malloc和内存释放free函数
--vm-bytes B malloc B bytes per vm worker (default is 256MB) 指定malloc时内存的字节数 (默认256MB)
--vm-stride B touch a byte every B bytes (default is 4096)
--vm-hang N sleep N secs before free (default none, 0 is inf) 指定在free时的秒数
--vm-keep redirty memory instead of freeing and reallocating
-d, --hdd N spawn N workers spinning on write()/unlink()
--hdd-bytes B write B bytes per hdd worker (default is 1GB)
Example: stress --cpu 8 --io 4 --vm 2 --vm-bytes 128M --timeout 10s
Note: Numbers may be suffixed with s,m,h,d,y (time) or B,K,M,G (size).
安装sysstat:
yum install sysstat
安装完后可以用到这个包的两个命令: mpstat pidstat
mpstat
mpstat是Multiprocessor Statistics的缩写,是实时监控工具,报告与cpu的一些统计信息这些信息都存在/proc/stat文件中,在多CPU系统里,其不但能查看所有的CPU的平均状况的信息,而且能够有查看特定的cpu信息,mpstat最大的特点是:可以查看多核心的cpu中每个计算核心的统计数据;而且类似工具vmstat只能查看系统的整体cpu情况。
详解mpstat、iostat、sar、vmstat命令的使用
[root@localhost ~]# mpstat
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 2019年08月01日 _x86_64_ (1 CPU)
[root@localhost ~]# mpstat --help
用法: mpstat [ 选项 ] [ <时间间隔> [ <次数> ] ]
选项:
[ -A ] [ -u ] [ -V ] [ -I { SUM | CPU | SCPU | ALL } ]
[ -P { <cpu> [,...] | ON | ALL } ]
pidstat
pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备IO、任务切换、线程等。pidstat首次运行时显示自系统启动开始的各项统计信息,之后运行pidstat将显示自上次运行该命令以后的统计信息。用户可以通过指定统计的次数和时间来获得所需的统计信息
[root@localhost ~]# pidstat
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 2019年08月01日 _x86_64_ (1 CPU)
06时58分02秒 UID PID %usr %system %guest %CPU CPU Command
06时58分02秒 0 1 0.01 0.05 0.00 0.06 0 systemd
06时58分02秒 0 2 0.00 0.00 0.00 0.00 0 kthreadd
06时58分02秒 0 3 0.00 0.00 0.00 0.00 0 ksoftirqd/0
06时58分02秒 0 6 0.00 0.01 0.00 0.01 0 kworker/u256:0
06时58分02秒 0 137 0.00 0.02 0.00 0.02 0 rcu_sched
06时58分02秒 0 138 0.00 0.04 0.00 0.04 0 rcuos/0
06时58分02秒 0 266 0.00 0.00 0.00 0.00 0 watchdog/0
06时58分02秒 0 274 0.00 0.00 0.00 0.00 0 khubd
06时58分02秒 0 280 0.00 0.02 0.00 0.02 0 khugepaged
06时58分02秒 0 292 0.00 0.00 0.00 0.00 0 kworker/u256:1
06时58分02秒 0 812 0.00 0.00 0.00 0.00 0 scsi_eh_0
06时58分02秒 0 2024 0.00 0.01 0.00 0.01 0 kworker/0:1H
06时58分02秒 0 2025 0.00 0.02 0.00 0.02 0 xfsaild/dm-1
06时58分02秒 0 2098 0.00 0.00 0.00 0.00 0 systemd-journal
06时58分02秒 0 2133 0.01 0.00 0.00 0.01 0 systemd-udevd
06时58分02秒 0 3729 0.00 0.00 0.00 0.00 0 auditd
06时58分02秒 81 3762 0.00 0.00 0.00 0.00 0 dbus-daemon
06时58分02秒 0 3763 0.00 0.00 0.00 0.00 0 systemd-logind
06时58分02秒 0 3769 0.00 0.00 0.00 0.00 0 rsyslogd
06时58分02秒 70 3770 0.00 0.00 0.00 0.00 0 avahi-daemon
06时58分02秒 0 3771 0.01 0.01 0.00 0.02 0 tuned
06时58分02秒 0 4633 0.00 0.00 0.00 0.00 0 iprinit
06时58分02秒 0 4635 0.00 0.00 0.00 0.00 0 iprupdate
06时58分02秒 0 5078 0.00 0.00 0.00 0.00 0 login
06时58分02秒 0 5171 0.00 0.00 0.00 0.00 0 master
06时58分02秒 0 5727 0.00 0.01 0.00 0.01 0 sshd
06时58分02秒 0 8944 0.00 0.01 0.00 0.01 0 sshd
06时58分02秒 0 8946 0.00 0.00 0.00 0.00 0 bash
06时58分02秒 999 15236 0.00 0.00 0.00 0.00 0 polkitd
06时58分02秒 0 15644 0.00 0.01 0.00 0.01 0 kworker/0:0
06时58分02秒 0 15901 0.00 0.01 0.00 0.01 0 kworker/0:1
06时58分02秒 0 16170 0.00 0.00 0.00 0.00 0 kworker/0:2
06时58分02秒 0 16346 0.00 0.00 0.00 0.00 0 pidstat
CPU密集型进程/大量使用CPU进程
stress
:
[root@localhost ~]# stress -c 1 -t 600
stress: info: [17214] dispatching hogs: 1 cpu, 0 io, 0 vm, 0 hdd
uptime
:
[root@localhost ~]# uptime
07:17:32 up 1:05, 6 users, load average: 1.05, 0.54, 0.42
mpstat
:
[root@localhost ~]# mpstat -P ALL 5 3
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 2019年08月01日 _x86_64_ (1 CPU)
07时16分51秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
07时16分56秒 all 99.40 0.00 0.60 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07时16分56秒 0 99.40 0.00 0.60 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07时16分56秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
07时17分01秒 all 99.60 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07时17分01秒 0 99.60 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07时17分01秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
07时17分06秒 all 99.20 0.00 0.80 0.00 0.00 0.00 0.00 0.00 0.00 0.00
07时17分06秒 0 99.20 0.00 0.80 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
平均时间: all 99.40 0.00 0.60 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: 0 99.40 0.00 0.60 0.00 0.00 0.00 0.00 0.00 0.00 0.00
pidstat
:
[root@localhost ~]# pidstat -u 5 3
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 2019年08月01日 _x86_64_ (1 CPU)
07时16分54秒 UID PID %usr %system %guest %CPU CPU Command
07时16分59秒 0 2025 0.00 0.20 0.00 0.20 0 xfsaild/dm-1
07时16分59秒 0 16706 0.00 0.20 0.00 0.20 0 sshd
07时16分59秒 0 17215 98.61 0.00 0.00 98.61 0 stress
07时16分59秒 0 17429 0.00 0.20 0.00 0.20 0 top
07时16分59秒 0 17532 0.00 0.20 0.00 0.20 0 pidstat
07时16分59秒 UID PID %usr %system %guest %CPU CPU Command
07时17分04秒 0 17215 99.20 0.00 0.00 99.20 0 stress
07时17分04秒 0 17532 0.00 0.40 0.00 0.40 0 pidstat
07时17分04秒 UID PID %usr %system %guest %CPU CPU Command
07时17分09秒 0 1 0.00 0.20 0.00 0.20 0 systemd
07时17分09秒 0 17215 98.80 0.00 0.00 98.80 0 stress
07时17分09秒 0 17429 0.20 0.20 0.00 0.40 0 top
07时17分09秒 0 17532 0.00 0.20 0.00 0.20 0 pidstat
平均时间: UID PID %usr %system %guest %CPU CPU Command
平均时间: 0 1 0.00 0.07 0.00 0.07 - systemd
平均时间: 0 2025 0.00 0.07 0.00 0.07 - xfsaild/dm-1
平均时间: 0 16706 0.00 0.07 0.00 0.07 - sshd
平均时间: 0 17215 98.87 0.00 0.00 98.87 - stress
平均时间: 0 17429 0.07 0.13 0.00 0.20 - top
平均时间: 0 17532 0.00 0.27 0.00 0.27 - pidstat
选项 | 说明 |
---|---|
%usr | 在统计周期内,用户态任务和其子任务耗时统计(ms),包括或者不包括调优时间,注意不包括运行虚拟处理器时间 |
%system | 在统计周期内,内核态任务和其子任务耗时统计(ms) |
%guest | 在统计周期内,虚拟态任务和其子任务耗时统计(ms) |
top
:
Tasks: 349 total, 3 running, 346 sleeping, 0 stopped, 0 zombie
%Cpu(s):100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 3869020 total, 775460 used, 3093560 free, 1232 buffers
KiB Swap: 4079612 total, 0 used, 4079612 free. 563764 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17215 root 20 0 7260 96 0 R 99.4 0.0 3:17.02 stress
1 root 20 0 49904 4180 2472 S 0.0 0.1 0:01.68 systemd
CPU密集型进程:使用大量CPU导致平均负载升高
IO密集型
stress
[root@localhost ~]# stress -i 1 --hdd 1 -t 600
stress: info: [23947] dispatching hogs: 0 cpu, 1 io, 0 vm, 1 hdd
uptime
[root@localhost ~]# uptime
08:09:24 up 1:57, 9 users, load average: 2.78, 1.84, 1.80
mpstat
[root@localhost sysstat-12.1.5]# mpstat -P ALL 5 3
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 2019年08月01日 _x86_64_ (1 CPU)
08时07分33秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
08时07分38秒 all 0.21 0.00 35.48 50.83 0.00 13.49 0.00 0.00 0.00 0.00
08时07分38秒 0 0.21 0.00 35.48 50.83 0.00 13.49 0.00 0.00 0.00 0.00
08时07分38秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
08时07分43秒 all 0.21 0.00 25.51 61.73 0.00 12.55 0.00 0.00 0.00 0.00
08时07分43秒 0 0.21 0.00 25.51 61.73 0.00 12.55 0.00 0.00 0.00 0.00
08时07分43秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
08时07分48秒 all 0.21 0.00 25.47 68.63 0.00 5.68 0.00 0.00 0.00 0.00
08时07分48秒 0 0.21 0.00 25.47 68.63 0.00 5.68 0.00 0.00 0.00 0.00
平均时间: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
平均时间: all 0.21 0.00 28.83 60.36 0.00 10.60 0.00 0.00 0.00 0.00
平均时间: 0 0.21 0.00 28.83 60.36 0.00 10.60 0.00 0.00 0.00 0.00
pidstat
[root@localhost wang]# pidstat -u 5 3
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 2019年08月01日 _x86_64_ (1 CPU)
08时07分35秒 UID PID %usr %system %guest %CPU CPU Command
08时07分40秒 0 3 0.00 0.83 0.00 0.83 0 ksoftirqd/0
08时07分40秒 0 137 0.00 0.21 0.00 0.21 0 rcu_sched
08时07分40秒 0 2024 0.00 0.21 0.00 0.21 0 kworker/0:1H
08时07分40秒 0 23777 0.00 0.21 0.00 0.21 0 kworker/0:1
08时07分40秒 0 23805 0.00 0.41 0.00 0.41 0 kworker/0:3
08时07分40秒 0 23807 0.00 11.41 0.00 11.41 0 kworker/u256:2
08时07分40秒 0 23942 0.21 0.21 0.00 0.41 0 top
08时07分40秒 0 23948 0.00 2.49 0.00 2.49 0 stress
08时07分40秒 0 23949 0.00 25.73 0.00 25.73 0 stress
08时07分40秒 0 24011 0.00 0.41 0.00 0.41 0 pidstat
08时07分40秒 UID PID %usr %system %guest %CPU CPU Command
08时07分45秒 0 3 0.00 0.61 0.00 0.61 0 ksoftirqd/0
08时07分45秒 0 266 0.00 0.20 0.00 0.20 0 watchdog/0
08时07分45秒 0 23777 0.00 0.61 0.00 0.61 0 kworker/0:1
08时07分45秒 0 23805 0.00 0.41 0.00 0.41 0 kworker/0:3
08时07分45秒 0 23806 0.00 0.82 0.00 0.82 0 kworker/0:4
08时07分45秒 0 23807 0.00 15.95 0.00 15.95 0 kworker/u256:2
08时07分45秒 0 23942 0.61 0.82 0.00 1.43 0 top
08时07分45秒 0 23948 0.00 6.13 0.00 6.13 0 stress
08时07分45秒 0 23949 0.00 36.40 0.00 36.40 0 stress
08时07分45秒 0 24011 0.20 0.20 0.00 0.41 0 pidstat
08时07分45秒 UID PID %usr %system %guest %CPU CPU Command
08时07分50秒 0 3 0.00 0.21 0.00 0.21 0 ksoftirqd/0
08时07分50秒 0 138 0.00 0.21 0.00 0.21 0 rcuos/0
08时07分50秒 0 23806 0.00 0.42 0.00 0.42 0 kworker/0:4
08时07分50秒 0 23807 0.00 1.49 0.00 1.49 0 kworker/u256:2
08时07分50秒 0 23942 0.21 0.00 0.00 0.21 0 top
08时07分50秒 0 23948 0.00 0.21 0.00 0.21 0 stress
08时07分50秒 0 23949 0.00 4.67 0.00 4.67 0 stress
08时07分50秒 0 23955 0.21 0.00 0.00 0.21 0 watch
08时07分50秒 0 24011 0.00 0.21 0.00 0.21 0 pidstat
平均时间: UID PID %usr %system %guest %CPU CPU Command
平均时间: 0 3 0.00 0.55 0.00 0.55 - ksoftirqd/0
平均时间: 0 137 0.00 0.07 0.00 0.07 - rcu_sched
平均时间: 0 138 0.00 0.07 0.00 0.07 - rcuos/0
平均时间: 0 266 0.00 0.07 0.00 0.07 - watchdog/0
平均时间: 0 2024 0.00 0.07 0.00 0.07 - kworker/0:1H
平均时间: 0 23777 0.00 0.28 0.00 0.28 - kworker/0:1
平均时间: 0 23805 0.00 0.28 0.00 0.28 - kworker/0:3
平均时间: 0 23806 0.00 0.42 0.00 0.42 - kworker/0:4
平均时间: 0 23807 0.00 9.71 0.00 9.71 - kworker/u256:2
平均时间: 0 23942 0.35 0.35 0.00 0.69 - top
平均时间: 0 23948 0.00 2.98 0.00 2.98 - stress
平均时间: 0 23949 0.00 22.47 0.00 22.47 - stress
平均时间: 0 23955 0.07 0.00 0.00 0.07 - watch
平均时间: 0 24011 0.07 0.28 0.00 0.35 - pidstat
[root@localhost wang]# pidstat -d 5 3
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 2019年08月01日 _x86_64_ (1 CPU)
08时08分32秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
08时08分37秒 0 23948 0.00 0.00 33647.20 stress
08时08分37秒 0 23949 0.00 838860.80 150474.40 stress
08时08分37秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
08时08分42秒 0 292 0.00 6036.21 0.00 kworker/u256:1
08时08分42秒 0 23949 0.00 441505.68 236369.68 stress
08时08分42秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
08时08分47秒 0 292 0.00 34784.07 0.00 kworker/u256:1
08时08分47秒 0 23948 0.00 0.00 60896.44 stress
08时08分47秒 0 23949 0.00 439654.51 112327.88 stress
平均时间: UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
平均时间: 0 292 0.00 13401.65 0.00 kworker/u256:1
平均时间: 0 23948 0.00 0.00 31591.74 stress
平均时间: 0 23949 0.00 577727.82 166042.15 stress
top
[root@localhost ~]# top
top - 08:09:12 up 1:57, 9 users, load average: 2.74, 1.80, 1.79
Tasks: 361 total, 2 running, 359 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 28.2 sy, 0.0 ni, 0.0 id, 59.9 wa, 0.0 hi, 11.5 si, 0.0 st
KiB Mem: 3869020 total, 1910484 used, 1958536 free, 1232 buffers
KiB Swap: 4079612 total, 0 used, 4079612 free. 1653112 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
23949 root 20 0 8164 1124 32 D 21.6 0.0 0:35.57 stress
292 root 20 0 0 0 0 D 9.6 0.0 0:10.20 kworker/u256:1
以上大量IO导致平均负载升高,cpu占用并不高
大量等待CPU的进程
stress
[root@localhost ~]# stress -c 8 -t 600
stress: info: [24363] dispatching hogs: 8 cpu, 0 io, 0 vm, 0 hdd
uptime
[root@localhost ~]# uptime
08:15:23 up 2:03, 9 users, load average: 7.63, 4.09, 2.59
mpstat
[root@localhost sysstat-12.1.5]# mpstat -P ALL 5 3
Linux 3.10.0-123.el7.x86_64 (localhost.localdomain) 2019年08月01日 _x86_64_ (1 CPU)
08时15分27秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
08时15分32秒 all 99.80 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08时15分32秒 0 99.80 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08时15分32秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
08时15分37秒 all 99.40 0.00 0.60 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08时15分37秒 0 99.40 0.00 0.60 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08时15分37秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
08时15分42秒 all 99.60 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00
08时15分42秒 0 99.60 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle
平均时间: all 99.60 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00
平均时间: 0 99.60 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 0.00
pidstat
wait值为0,明天再定位
-c 40,wait也是0,不知道什么原因.cpu性能太好?先不管了,以后再说.
top
[root@localhost ~]# top
top - 08:21:56 up 2:10, 4 users, load average: 7.72, 5.76, 3.78
Tasks: 355 total, 10 running, 345 sleeping, 0 stopped, 0 zombie
%Cpu(s):100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 3869020 total, 820136 used, 3048884 free, 1232 buffers
KiB Swap: 4079612 total, 0 used, 4079612 free. 604588 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
25022 root 20 0 7260 92 0 R 12.6 0.0 0:19.44 stress
25023 root 20 0 7260 92 0 R 12.6 0.0 0:19.44 stress
25024 root 20 0 7260 92 0 R 12.6 0.0 0:19.44 stress
25025 root 20 0 7260 92 0 R 12.6 0.0 0:19.44 stress
25026 root 20 0 7260 92 0 R 12.6 0.0 0:19.44 stress
25020 root 20 0 7260 92 0 R 12.3 0.0 0:19.43 stress
25021 root 20 0 7260 92 0 R 12.3 0.0 0:19.43 stress
25027 root 20 0 7260 92 0 R 12.3 0.0 0:19.43 stress
问题
- pidstat不显示%wait
安装新版本的sysstat:下载地址
- iowait无法升高
stress -i 时刷新内存缓冲区数据到磁盘,新装的虚拟机缓冲区比较小,没有那么大的压力.只是系统调用导致的cpu升高
可以用stress -i 1 –hdd 1 -t 600 //–hdd表示读写临时文件