Linux CPU性能调优
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux CPU性能调优相关的知识,希望对你有一定的参考价值。
参考技术A CPU是影响linux性能的主要因素之一。vmstat命令:显示关于系统各种资源之间相关性能的简要信息。procs那栏中的r表示运行和等待CPU时间片的进程数,如果这个值长期大于系统CPU的个数那就说明CPU不足,需要增加CPU。memory那栏中:swapd表示切换到内存交换区的内存数量。free表示当前空闲的物理内存数量。buff表示块设备(/dev/sda)读写需要的缓冲。cache表示文件系统的缓存。如果值较大,说明缓存中的文件数较多。swap中si表示由磁盘调入内存。so表示由内存调入磁盘。在一般情况下,si和so的值都为0,如果这2个值长期不为0
的话,说明系统内存不足,需要添加内存。
www.zhishiwu.com
io:显示磁盘读写状况bi表示读磁盘数据的总量。bo表示写磁盘数据的总量。system:显示间隔内发生的中断数in表示在磨一时间间隔中每秒设备中断数。cs表示每秒产生的上下文切换次数。这2个值越大,则说明内核消耗CPU时间就越多。cpu:显示了CPU的使用状态us显示了用户进程消耗CPU时间百分比。如果us值越高则说明消耗CPU的时间越多,如果us的值长期大于50%则需要优化程序或算法。sy显示内核消耗CPU时间百分比。如果us+sy值大于80%,则可能存在CPU资源不足情况。id显示CPU处于空闲状态时间百分比。wa显示IO等待所占用CPU时间百分比。wa越高,则IO等待越严重,则考虑提高磁盘读写性能。wa参考值20%。sar命令:可以对每个方面进行单独的统计,但是增加了系统开销,但是对系统的统计结果不会有很大影响。
由上图可以看出我的系统只有一个CPU,如果有多个CPU的话会显示多个。在多个CPU的情况下,如果想对其中一个CPU进行信息统计的话,则使用sar
–P
0
2
3
对第一个CPU进行信息统计。%user显示用户进程消耗的CPU时间百分比%nice显示运行正常进程所消耗CPU时间百分比%system显示了系统进程消耗CPU时间百分比%iowait显示IO等待所占用CPU时间百分比%idle显示了CPU处在空闲时间百分比%steal显示在内存相对紧张的环境下pagein强制对不同的页面进行的steal操作。最后一行Average显示了上面统计的平均值。如果在一个多CPU的系统中,如果程序使用了单线程,会造成CPU整体使用率不高,导致一个CPU在使用,其他CPU处在闲置状态。
www.zhishiwu.com
iostat命令:主要用于统计磁盘IO状态,但是也能查看CPU使用情况,但是只能显示所有CPU的平均信息。
这里各列的意思与sar中的意思一样。uptime命令:主要统计系统当前的运行状况。
系统在1分钟内,5分钟内,15分钟内的平均负荷。上面的vmstat,sar,iostat,uptime命令主要是用于统计CPU信息的,还可以通过top,ps查看进程使用情况,来判断CPU负载过大的原因。
作者
alan9101
linux 性能测试与调优
CPU 性能评估
通过下面命令能了解到cpu是否出现性能瓶颈,再结合top、ps等命令进一步检查,就可以定位到哪些进程导致cpu负载过大。
vmstat查看cpu负载
[[email protected] ~]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 80 114428 120 332868 0 0 2864 106 682 1246 14 20 41 25 0 [[email protected] ~]# vmstat 2 3 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 5 0 80 114984 120 333164 0 0 2408 97 605 1091 12 17 50 21 0 0 0 80 114464 120 333164 0 0 0 0 110 194 3 1 96 0 0 0 0 80 114464 120 333164 0 0 0 0 99 182 2 2 96 0 0
sar统计cpu性能
在一个多cpu的系统中,cpu的整体使用率不高,但是系统响应缓慢,结果就是,单线程只使用一个cpu,导致这个cpu利用率百分之百,无法处理其他请求,而其他cpu闲置,导致整体cpu使用率不高,应用缓慢现象发生。
[[email protected] ~]# sar Linux 3.10.0-327.el7.x86_64 (zq) 2017年05月20日 _x86_64_ (1 CPU) 19时10分28秒 LINUX RESTART [[email protected] ~]# sar -p 0 3 5 用法: sar [ 选项 ] [ <时间间隔> [ <次数> ] ] 选项: [ -A ] [ -B ] [ -b ] [ -C ] [ -d ] [ -H ] [ -h ] [ -p ] [ -q ] [ -R ] [ -r ] [ -S ] [ -t ] [ -u [ ALL ] ] [ -V ] [ -v ] [ -W ] [ -w ] [ -y ] [ -I { <中断> [,...] | SUM | ALL | XALL } ] [ -P { <cpu> [,...] | ALL } ] [ -m { <关键词> [,...] | ALL } ] [ -n { <关键词> [,...] | ALL } ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ -f [ <文件名> ] | -o [ <文件名> ] | -[0-9]+ ] [ -i <间隔> ] [ -s [ <时:分:秒> ] ] [ -e [ <时:分:秒> ] ] [[email protected] ~]# sar -P 0 3 5 Linux 3.10.0-327.el7.x86_64 (zq) 2017年05月20日 _x86_64_ (1 CPU) 11时28分36秒 CPU %user %nice %system %iowait %steal %idle 11时28分39秒 0 2.36 0.00 0.67 0.00 0.00 96.97 11时28分42秒 0 2.35 0.00 1.34 0.00 0.00 96.31 11时28分45秒 0 2.69 0.00 1.01 0.00 0.00 96.30 11时28分48秒 0 10.03 0.00 3.11 0.00 0.00 86.85 11时28分51秒 0 10.65 0.00 3.09 1.72 0.00 84.54 平均时间: 0 5.57 0.00 1.83 0.34 0.00 92.26 [[email protected] ~]# sar -u 3 5 Linux 3.10.0-327.el7.x86_64 (zq) 2017年05月20日 _x86_64_ (1 CPU) 11时29分28秒 CPU %user %nice %system %iowait %steal %idle 11时29分31秒 all 2.02 0.00 1.35 0.00 0.00 96.63 11时29分34秒 all 3.02 0.00 3.02 0.00 0.00 93.96 11时29分37秒 all 2.36 0.00 1.35 0.00 0.00 96.28 11时29分40秒 all 1.34 0.00 1.00 0.00 0.00 97.66 11时29分43秒 all 2.34 0.00 1.67 0.00 0.00 95.99 平均时间: all 2.22 0.00 1.68 0.00 0.00 96.10
iostat查看cpu使用情况
[[email protected] ~]# iostat - Linux 3.10.0-327.el7.x86_64 (zq) 2017年05月20日 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 4.03 0.12 4.68 5.13 0.00 86.04 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 15.46 575.49 24.08 479490 20062 sdc 0.14 0.62 0.00 520 0 sdd 0.18 1.25 0.00 1044 0 sdb 0.15 0.92 0.00 764 0 scd0 0.02 0.06 0.00 54 0 dm-0 0.10 0.67 0.00 556 0 [[email protected] ~]# iostat -l 用法: iostat [ 选项 ] [ <时间间隔> [ <次数> ] ] 选项: [ -c ] [ -d ] [ -h ] [ -k | -m ] [ -N ] [ -t ] [ -V ] [ -x ] [ -y ] [ -z ] [ -j { ID | LABEL | PATH | UUID | ... } ] [ [ -T ] -g <用户组名> ] [ -p [ <设备> [,...] | ALL ] ] [ <设备> [...] | ALL ] [[email protected] ~]# iostat -c Linux 3.10.0-327.el7.x86_64 (zq) 2017年05月20日 _x86_64_ (1 CPU) avg-cpu: %user %nice %system %iowait %steal %idle 3.96 0.11 4.52 4.89 0.00 86.51
uptime查看负载
[[email protected] ~]# uptime 11:34:07 up 17 min, 2 users, load average: 0.06, 0.12, 0.13 #如果三个平均值大于cpu核数则负载很高
内存性能评估
free查看内存使用情况
[[email protected] ~]# free total used free shared buff/cache available Mem: 1001332 546424 113316 8416 341592 279120 Swap: 2047996 80 2047916 [[email protected] ~]# free -p free:无效选项 -- p Usage: free [options] Options: -b, --bytes show output in bytes -k, --kilo show output in kilobytes -m, --mega show output in megabytes -g, --giga show output in gigabytes --tera show output in terabytes -h, --human show human-readable output --si use powers of 1000 not 1024 -l, --lohi show detailed low and high memory statistics -t, --total show total for RAM + swap -s N, --seconds N repeat printing every N seconds -c N, --count N repeat printing N times, then exit -w, --wide wide output --help display this help and exit -V, --version output version information and exit For more details see free(1). [[email protected] ~]# free -m total used free shared buff/cache available Mem: 977 533 110 8 333 272 Swap: 1999 0 1999
vmstat 和 sar -r 都可以监控内存
[[email protected] ~]# vmstat procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 80 112032 120 342700 0 0 373 16 177 292 3 3 90 3 0 [[email protected] ~]# sar -r Linux 3.10.0-327.el7.x86_64 (zq) 2017年05月20日 _x86_64_ (1 CPU) 19时10分28秒 LINUX RESTART 11时20分01秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 11时30分01秒 111912 889420 88.82 120 270688 2353808 77.19 382172 199608 0 平均时间: 111912 889420 88.82 120 270688 2353808 77.19
磁盘i/o性能评估
sar -d统计磁盘io状态
[[email protected] ~]# sar -d Linux 3.10.0-327.el7.x86_64 (zq) 2017年05月20日 _x86_64_ (1 CPU) 19时10分28秒 LINUX RESTART 11时20分01秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util #正常svctm<await 11时30分01秒 dev8-0 0.82 27.24 8.62 43.81 0.03 34.70 6.77 0.55 11时30分01秒 dev8-32 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 #svctm接近await没有io等待,性能很好 11时30分01秒 dev8-48 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11时30分01秒 dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00#cpu内存过多会使svctm增加
11时30分01秒 dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11时30分01秒 dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00#%util接近100%表示满负荷 11时40分02秒 dev8-0 0.24 4.99 1.63 27.47 0.01 41.46 11.95 0.29 11时40分02秒 dev8-32 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11时40分02秒 dev8-48 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11时40分02秒 dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11时40分02秒 dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 11时40分02秒 dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均时间: dev8-0 0.53 16.12 5.12 40.09 0.02 36.24 7.95 0.42 平均时间: dev8-32 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均时间: dev8-48 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均时间: dev8-16 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均时间: dev11-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 平均时间: dev253-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
iostat -d
[[email protected] ~]# iostat -d #查看磁盘 Linux 3.10.0-327.el7.x86_64 (zq) 2017年05月20日 _x86_64_ (1 CPU) Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 7.15 262.94 11.39 480898 20839 sdc 0.06 0.28 0.00 520 0 sdd 0.08 0.57 0.00 1044 0 sdb 0.07 0.42 0.00 764 0 scd0 0.01 0.03 0.00 54 0 dm-0 0.05 0.30 0.00 556 0
以上是关于Linux CPU性能调优的主要内容,如果未能解决你的问题,请参考以下文章