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性能调优的主要内容,如果未能解决你的问题,请参考以下文章

linux 性能测试与调优

linux性能查看调优

Linux服务器性能查看分析调优

linux 性能调优

Linux服务器性能分析与调优

linux编译c 优化,Linux性能优化——CPU性能调优