您现在的位置是:网站首页> 编程资料编程资料

CentOS服务程序性能评估文档详解_RedHat/Centos_操作系统_

2024-02-20 297人已围观

简介 CentOS服务程序性能评估文档详解_RedHat/Centos_操作系统_

1概述

1.1影响Linux服务程序性能的因素

CPU、内存、磁盘I/O带宽、网络I/O带宽

1.2性能评判

CPU:user% + sys%< 70%; 程序在用户态和内核态的执行时间百分比。

内存:Swap In(si)=0; Swap Out(so)=0; 以不使用交换分区为准,如果频繁用到交换分区,内存可能不够了。

硬盘:iowait % < 20%;

网络:只要有足够带宽尽情的使用吧,达到网卡带宽linux系统表示毫无压力

其中:  %user:表示CPU处在用户模式下的时间百分比。

      %sys:表示CPU处在内核模式下的时间百分比。

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

      swap in:即si,表示虚拟内存的页导入,即从SWAP DISK交换到RAM

      swap out:即so,表示虚拟内存的页导出,即从RAM交换到SWAP DISK。

1.3性能分析工具

常用系统命令:top、free、ps、uptime、iotop、vmstat、iostat 、dstat、sar。
使用方法:top命令把握全局,使用特定命令深入分析

常用组合方式:

(1)CPU瓶颈:top、vmstat、iostat、sar –u、sar -q

(2)内存瓶颈:free、vmstat、sar -B、sar –r、sar -W

(3)磁盘I/O瓶颈:iotop、iostat、sar -b、sar –u、sar -d

(4)网络瓶颈: dstat

2 top

2.1功能

提供了实时的对系统处理器、内存、任务等状态监视;该命令可以按CPU使用、内存使用对任务进行排序;TOP是一个动态显示过程,可以通过用户按键来不断刷新当前状态,也可以在启动时指定刷新间隔。

2.2命令输出示意图

top - 10:16:29 up 38 days, 15:48,  5 users,  load average: 0.04, 0.10, 0.05

Tasks: 569 total,   2 running, 562 sleeping,   0 stopped,   5 zombie

Cpu(s):  2.6%us,  1.3%sy,  0.4%ni, 95.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   3839112k total,  3151560k used,   687552k free,   302944k buffers

Swap:  6078456k total,   631852k used,  5446604k free,   348548k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                

10603 zhixiang  20   0 1225m 284m  30m S  4.6  7.6 271:48.24 vs_exe                                                                

2473 xulun     20   0  118m  43m 6932 S  3.0  1.2 964:14.99 Xvnc                                                                  

1412 xulun     30  10  232m  12m 5216 S  2.3  0.3   0:04.59 floaters                                                              

14823 chujie    20   0 1112m 247m  17m S  2.0  6.6 363:51.38 vs_exe                                                                

17772 sihao     20   0 1101m 202m  10m S  1.7  5.4 631:21.17 vs_exe                                                                

11054 sihao     20   0  906m  65m 9412 S  1.0  1.7 410:06.55 vs_exe                                                                

20782 yongtao   20   0 1049m 173m 9996 S  1.0  4.6 196:05.10 vs_exe                                                                

14637 chujie    20   0 1274m 132m 2388 S  0.7  3.5  63:20.18 KugooPopMsgServ                                                      

1439 yanyun    20   0 15428 1600  940 R  0.3  0.0   0:00.01 top                                                                  

3491 zhixiang  20   0  129m  55m  17m S  0.3  1.5  10:57.25 Xvnc                                                                  

   1 root      20   0 19344 1200  984 S  0.0  0.0   0:00.89 init    

2.3命令输出解析

Top输出的信息很多基本囊括了所有的性能指标,前五行是统计信息区,表示的是系统整体的统计信息,包括:系统负载、任务、CPU、内存等;后面的是每个进程相关信息。

第一行是任务队列信息,同uptime命令的执行结果是一样的

[yanyun@~/test]$ uptime

10:20:17 up 38 days, 15:52,  5 users,  load average: 0.00, 0.04, 0.03

其内容如下:10:20:17:当前时间

38 days, 15:52:系统运行时间

5 users:当前登录用户数

load average: 0.00, 0.04, 0.03:系统负载,即任务队列的平均长度。三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值。

第二行为进程的信息

内容如下:569 total:进程总数

2 running,:正在运行的进程数

562 sleeping:睡眠的进程数

0 stopped:停止的进程数

5 zombie:僵尸进程数

第三行为CPU的信息

内容如下:2.6%us:用户空间占用CPU百分比

1.3%sy:内核空间占用CPU百分比

0.4%ni:用户进程空间内改变过优先级的进程占用CPU百分比

95.7%id:空闲CPU百分比

0.0%wa:等待输入输出的CPU时间百分比

第四、五行为内存信息;命令输出跟free相同

[yanyun@~]$ free

            total       used       free     shared    buffers     cached

Mem:       3839112    3256976     582136          0     143664     444992

-/+ buffers/cache:    2668320    1170792

Swap:      6078456     574772    5503684

内容如下:Mem :3839112k total:物理内存总量

3151560k used:使用的物理内存总量

687552k free:空闲内存总量

302944k buffers:用作缓冲的内存量

Swap: 6078456k total:交换区总量

631852k used:使用的交换区总量

5446604k free:空闲交换区总量

348548k cached:缓存总量。

注:buffer:可以认为是写出磁盘的缓冲区;

Cache:读出磁盘的缓存。

Linux系统使用内存的原则是:不用白不用,用了也白用;尽可能的缓存东西,所以往往看空闲内存很小,但是cache很大;Linux系统会定时启动内核线程kswapd进行缓存回收。

后面的是显示每个进程相关信息

%CPU:上次更新到现在的CPU时间占用百分比

TIME+:进程使用的CPU时间总计

%MEM:进程使用的物理内存百分比

VIRT:进程使用的虚拟内存总量,单位kb

RES:进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR:共享内存大小,单位kb

S:进程状态。(D=不可中断的睡眠状态       R=运行  S=睡眠  T=跟踪/停止  Z=僵尸进程)

2.4常用选项

top [-] [d][p][M][P]

参数说明:

d:指定每两次屏幕信息刷新之间的时间间隔。(top –d 1:每秒刷新一次)

p:指定进程ID来仅监控某个进程。(top –d 1234:只查看pid为1234的进程信息)

k:终止一个进程。Top运行时参数,系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。使用信号9强制结束该进程。

M:根据驻留内存大小进行排序。

P:根据CPU使用百分比大小进行排序。

注:在命令行执行过程中按下数字键‘1’,可以查看到CPU每个核的相关信息。

Tasks: 564 total,   3 running, 556 sleeping,   0 stopped,   5 zombie

Cpu0  :  2.9%us,  2.9%sy,  0.0%ni, 94.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu1  :  2.0%us,  2.0%sy,  0.0%ni, 96.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu2  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Cpu3  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:   3839112k total,  3445296k used,   393816k free,    48180k buffers

Swap:  6078456k total,   553876k used,  5524580k free,   976128k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                              

14823 chujie    20   0 1112m 245m  16m R  3.0  6.5 373:07.82 vs_exe                                                                

5589 sihao     20   0 1019m 267m  29m R  2.0  7.1   2:24.80 vs_exe                                                                

5674 zhixiang  20   0 1103m 253m  37m S  2.0  6.8   4:17.89 vs_exe

3 iotop:

3.1功能

是一个用来监视每个线程的磁盘 I/O 使用状况的类top 工具,

注:此命令需要自行安装(yum install iotop)

3.2命令输出示意图

Total DISK READ: 50.23 M/s | Total DISK WRITE: 34.25 K/s

 TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                            

61524 be/4 root       47.65 M/s    0.00 B/s  0.00 % 37.83 % ./relay_server

61539 be/4 root      121.77 K/s    0.00 B/s  0.00 % 26.73 % ./relay_server

61544 be/4 root      700.15 K/s    0.00 B/s  0.00 % 24.89 % ./relay_server

61543 be/4 root      528.92 K/s    0.00 B/s  0.00 % 21.29 % ./relay_server

61541 be/4 root      494.67 K/s    0.00 B/s  0.00 % 21.22 % ./relay_server

61540 be/4 root      323.44 K/s    0.00 B/s  0.00 %  8.62 % ./relay_server

61542 be/4 root      468.04 K/s    0.00 B/s  0.00 %  8.13 % ./relay_server

 480 be/3 root        0.00 B/s    0.00 B/s  0.00 %  0.02 % [jbd2/sda2-8]

   1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init

   2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]

3 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]

3.3命令输出解析

第一行:

Total DISK READ: 50.23 M/s :磁盘每秒读出数据量

Total DISK WRITE: 34.25 K/s :磁盘每秒写入数据量

下面的是每个线程的的IO情况:

比较简单;只解释一下IO:跟top的wa意义相同,只是此处表示的一个线程的wa。

3.4常用选项

iotop [-] [d] [p]

参数说明:

d:指定每两次屏幕信息刷新之间的时间间隔。(iotop –d 1:每秒刷新一次)

p:指定线程ID来仅监控某个线程。(iotop –d 1234:只查看pid为1234的进程信息)

注:在命令行执行过程中按下字母‘o’,可以只查看有IO的线程。

pstree -p:查看进程树,可以输出进程之间的关系。

ps –eLf:查看线程。ps –ef的高级版

4 vmstat:

4.1功能

查看虚拟内存(Virtual Memory)使用状况的工具

4.2命令输出示意图

[yanyun@~/test]$ vmstat

procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----

r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st

0  0 631376 834896  15108 452024    0    0     4     4    1    2  2  1 97  0  0

4.3命令输出解析

Memory:同top的第四、五行信息。

swap:内存到swap分区换入换出速率。

io:读写磁盘速率

system in:每秒的中断数,包括时钟中断

system cs:每秒的环境(上下文)切换数;频繁切换对系统性能有影响,linux提供了线程对cpu的亲和,可以将某个线程绑定到一个核运行。

cpu:同top输出的第三行

注:swap项不为零,都用到交换分区了,内存可能已经用完已经成为系统瓶颈的一项。

4.4常用选项

vmstat 1 10:每秒刷新一次,总共刷新十次退出。

注:下面的选项都是专业的查看某一特定项的信息,有几个输出一大堆信息,用到时google吧!

-a:显示活跃和非活跃内存

-f:显示从系统启动至今的fork数量

-m:显示slabinfo

-s:显示内存相关统计信息及多种系统活动数量。

-d:显示磁盘相关统计信息。

-p:显示指定磁盘分区统计信息

5 iostat

5.1功能

用于输出CPU和磁盘I/O相关的统计信息

5.2输出结果示意图

[root@ShanWei_119_134_255_208 ~]# iostat -x

Linux 2.6.32-279.el6.x86_64 (ShanWei_119_134_255_208)   07/30/2013      _x86_64_        (16 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle

          2.63    0.00    2.25    5.98    0.00   89.14

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util

sda             195.42   163.72  194.33  126.28 28464.35  2319.94    96.02     1.16    3.63   1.41  45.30

sdb               0.33    48.97  122.71    2.70 29603.37   413.38   239.34     0.27    2.15   1.00  12.52

5.3命令输出解释

avg-cpu段:

%user: 在用户级别运行所使用的CPU的百分比.

%nice: nice操作所使用的CPU的百分比.

%sys: 在系统级别(kernel)运行所使用CPU的百分比.

%iowait: CPU等待硬件I/O时,所占用CPU百分比.

%idle: CPU空闲时间的百分比.

Device段:

tps: 每秒钟发送到的I/O请求数

Blk_read /s: 每秒读取的block数

Blk_wrtn/s: 每秒写入的block数

Blk_read:   读入的block总数

Blk

-六神源码网