一、影响Linux服务器性能的因素

1. 操作系统级

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

2. 程序应用级

二、系统性能评估标准

影响性能因素

影响性能因素 评判标准
糟糕
CPU user% + sys%< 70% user% + sys%= 85% user% + sys% >=90%
内存 Swap In(si)=0

Swap Out(so)=0

Per CPU with 10 page/s More Swap In & Swap Out
磁盘 iowait % < 20% iowait % =35% iowait % >= 50%

其中:

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

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

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

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

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

三、系统性能分析工具

1.常用系统命令

Vmstat、sar、iostat、netstat、free、ps、top等

2.常用组合方式

o 用vmstat、sar、iostat检测是否是CPU瓶颈

o 用free、vmstat检测是否是内存瓶颈

o 用iostat检测是否是磁盘I/O瓶颈

o 用netstat检测是否是网络带宽瓶颈

四、Linux性能评估与优化

1. 系统整体性能评估(uptime命令)

[root@server ~]# uptime

16:38:00 up 118 days, 3:01, 5 users, load average: 1.22, 1.02, 0.91

这里需要注意的是:load average这个输出值,这三个值的大小一般不能大于系统CPU的个数,例如,本输出中系统有8个CPU,如果load average的三个值长期大于8时,说明CPU很繁忙,负载很高,可能会影响系统性能,但是偶尔大于8时,倒不用担心,一般不会影响系统性能。相反,如果load average的输出值小于CPU的个数,则表示CPU还有空闲的时间片,比如本例中的输出,CPU是非常空闲的。

2. CPU性能评估

(1)利用vmstat命令监控系统CPU

该命令可以显示关于系统各种资源之间相关性能的简要信息,这里我们主要用它来看CPU一个负载情况。

下面是vmstat命令在某个系统的输出结果:

[root@node1 ~]# 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

0 0 0 162240 8304 67032 0 0 13 21 1007 23 0 1 98 0 0

0 0 0 162240 8304 67032 0 0 1 0 1010 20 0 1 100 0 0

0 0 0 162240 8304 67032 0 0 1 1 1009 18 0 1 99 0 0

Procs

r列表示运行和等待cpu时间片的进程数,这个值如果长期大于系统CPU的个数,说明CPU不足,需要增加CPU。

b列表示在等待资源的进程数,比如正在等待I/O、或者内存交换等。

Cpu

us列显示了用户进程消耗的CPU 时间百分比。us的值比较高时,说明用户进程消耗的cpu时间多,但是如果长期大于50%,就需要考虑优化程序或算法。

sy列显示了内核进程消耗的CPU时间百分比。Sy的值较高时,说明内核消耗的CPU资源很多。

根据经验,us+sy的参考值为80%,如果us+sy大于 80%说明可能存在CPU资源不足。

(2)利用sar命令监控系统CPU

sar功能很强大,可以对系统的每个方面进行单独的统计,但是使用sar命令会增加系统开销,不过这些开销是可以评估的,对系统的统计结果不会有很大影响。

下面是sar命令对某个系统的CPU统计输出:

[root@webserver ~]# sar -u 3 5

Linux 2.6.9-42.ELsmp (webserver) 11/28/2008 _i686_ (8 CPU)

11:41:24 AM CPU %user %nice %system %iowait %steal %idle

11:41:27 AM all 0.88 0.00 0.29 0.00 0.00 98.83

11:41:30 AM all 0.13 0.00 0.17 0.21 0.00 99.50

11:41:33 AM all 0.04 0.00 0.04 0.00 0.00 99.92

11:41:36 AM all 90.08 0.00 0.13 0.16 0.00 9.63

11:41:39 AM all 0.38 0.00 0.17 0.04 0.00 99.41

Average: all 0.34 0.00 0.16 0.05 0.00 99.45

对上面每项的输出解释如下:

%user列显示了用户进程消耗的CPU 时间百分比。%nice列显示了运行正常进程所消耗的CPU 时间百分比。%system列显示了系统进程消耗的CPU时间百分比。%iowait列显示了IO等待所占用的CPU时间百分比%steal列显示了在内存相对紧张的环境下pagein强制对不同的页面进行的steal操作 。%idle列显示了CPU处在空闲状态的时间百分比。

问题

1.你是否遇到过系统CPU整体利用率不高,而应用缓慢的现象?

在一个多CPU的系统中,如果程序使用了单线程,会出现这么一个现象,CPU的整体使用率不高,但是系统应用却响应缓慢,这可能是由于程序使用单线程的原因,单线程只使用一个CPU,导致这个CPU占用率为100%,无法处理其它请求,而其它的CPU却闲置,这就导致了整体CPU使用率不高,而应用缓慢现象的发生。

3. 内存性能评估

(1)利用free指令监控内存

free是监控linux内存使用状况最常用的指令,看下面的一个输出:

[root@webserver ~]# free -m

total used free shared buffers cached

Mem: 8111 7185 926 0 243 6299

-/+ buffers/cache: 643 7468

Swap: 8189 0 8189

一般有这样一个经验公式:应用程序可用内存/系统物理内存>70%时,表示系统内存资源非常充足,不影响系统性能,应用程序可用内存/系统物理内存<20%时,表示系统内存资源紧缺,需要增加系统内存,20%<应用程序可用内存/系统物理内存<70%时,表示系统内存资源基本能满足应用需求,暂时不影响系统性能。

(2)利用vmstat命令监控内存

[root@node1 ~]# 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

0 0 0 162240 8304 67032 0 0 13 21 1007 23 0 1 98 0 0

0 0 0 162240 8304 67032 0 0 1 0 1010 20 0 1 100 0 0

0 0 0 162240 8304 67032 0 0 1 1 1009 18 0 1 99 0 0

memory

swpd列表示切换到内存交换区的内存数量(以k为单位)。如果swpd的值不为0,或者比较大,只要si、so的值长期为0,这种情况下一般不用担心,不会影响系统性能。

free列表示当前空闲的物理内存数量(以k为单位)

buff列表示buffers cache的内存数量,一般对块设备的读写才需要缓冲。

cache列表示page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached,如果cache值较大,说明cached的文件数较多,如果此时IO中bi比较小,说明文件系统效率比较好。

swap

si列表示由磁盘调入内存,也就是内存进入内存交换区的数量。

so列表示由内存调入磁盘,也就是内存交换区进入内存的数量。

一般情况下,si、so的值都为0,如果si、so的值长期不为0,则表示系统内存不足。需要增加系统内存。

4.磁盘I/O性能评估

(1)磁盘存储基础

熟悉RAID存储方式,可以根据应用的不同,选择不同的RAID方式。尽可能用内存的读写代替直接磁盘I/O,使频繁访问的文件或数据放入内存中进行操作处理,因为内存读写操作比直接磁盘读写的效率要高千倍。将经常进行读写的文件与长期不变的文件独立出来,分别放置到不同的磁盘设备上。对于写操作频繁的数据,可以考虑使用裸设备代替文件系统。

使用裸设备的优点有:

数据可以直接读写,不需要经过操作系统级的缓存,节省了内存资源,避免了内存资源争用。避免了文件系统级的维护开销,比如文件系统需要维护超级块、I-node等。避免了操作系统的cache预读功能,减少了I/O请求。

使用裸设备的缺点是:

数据管理、空间管理不灵活,需要很专业的人来操作。

(2)利用iostat评估磁盘性能

[root@webserver ~]# iostat -d 2 3

Linux 2.6.9-42.ELsmp (webserver) 12/01/2008 _i686_ (8 CPU)

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 1.87 2.58 114.12 6479462 286537372

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 0.00 0.00 0.00 0 0

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 1.00 0.00 12.00 0 24

对上面每项的输出解释如下:

Blk_read/s表示每秒读取的数据块数。Blk_wrtn/s表示每秒写入的数据块数。Blk_read表示读取的所有块数。Blk_wrtn表示写入的所有块数。可以通过Blk_read/s和Blk_wrtn/s的值对磁盘的读写性能有一个基本的了解,如果Blk_wrtn/s值很大,表示磁盘的写操作很频繁,可以考虑优化磁盘或者优化程序,如果Blk_read/s值很大,表示磁盘直接读取操作很多,可以将读取的数据放入内存中进行操作。对于这两个选项的值没有一个固定的大小,根据系统应用的不同,会有不同的值,但是有一个规则还是可以遵循的:长期的、超大的数据读写,肯定是不正常的,这种情况一定会影响系统性能。

(3)利用sar评估磁盘性能

通过“sar -d”组合,可以对系统的磁盘IO做一个基本的统计,请看下面的一个输出:
[root@webserver ~]# sar -d 2 3
Linux 2.6.9-42.ELsmp (webserver) 11/30/2008 _i686_ (8 CPU)

11:09:33 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11:09:35 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

11:09:35 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11:09:37 PM dev8-0 1.00 0.00 12.00 12.00 0.00 0.00 0.00 0.00

11:09:37 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
11:09:39 PM dev8-0 1.99 0.00 47.76 24.00 0.00 0.50 0.25 0.05

Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util
Average: dev8-0 1.00 0.00 19.97 20.00 0.00 0.33 0.17 0.02
需要关注的几个参数含义:

  • await表示平均每次设备I/O操作的等待时间(以毫秒为单位)。
  • svctm表示平均每次设备I/O操作的服务时间(以毫秒为单位)。
  • %util表示一秒中有百分之几的时间用于I/O操作。

对以磁盘IO性能,一般有如下评判标准:
正常情况下svctm应该是小于await值的,而svctm的大小和磁盘性能有关,CPU、内存的负荷也会对svctm值造成影响,过多的请求也会间接的导致svctm值的增加。
await值的大小一般取决与svctm的值和I/O队列长度以及I/O请求模式,如果svctm的值与await很接近,表示几乎没有I/O等待,磁盘性能很好,如果await的值远高于svctm的值,则表示I/O队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题。
%util项的值也是衡量磁盘I/O的一个重要指标,如果%util接近100%,表示磁盘产生的I/O请求太多,I/O系统已经满负荷的在工作,该磁盘可能存在瓶颈。长期下去,势必影响系统的性能,可以通过优化程序或者通过更换更高、更快的磁盘来解决此问题。

5. 网络性能评估

(1)通过ping命令检测网络的连通性
(2)通过netstat -i组合检测网络接口状况
(3)通过netstat -r组合检测系统的路由表信息

(4)通过sar -n组合显示系统的网络运行状态

---------------------------------------------------------------------------------------------------------------------------------

Linux下的一些I/O统计工具

作为一个Linux系统管理员,统计各类IO是一项必不可少的工作。其统计工具中iostat显然又是最重要的一个统计手段。但是这里iostat不是本文的重点,因为这个工具的使用在网络上已经有大量的教程,可以供大家参考。这里主要是想介绍一些其他统计工具以来满足不同的需求。

iostat

iostat的功能异常强大,输出项也特别多,比如下面这个例子:

1
2
3
Device: rrqm/s  wrqm/s  r/s     w/s    rkB/s    wkB/s    avgrq-sz avgqu-sz   await r_await w_await  svctm  %utilsda     0.00     0.50  173.50   73.50  3076.00   604.00    29.80   149.93    676.58   74.36 2098.15  4.05 100.00

其各项的含义分别是:

rrqm/s: 每秒进行 merge 的读操作数目.即 delta(rmerge)/swrqm/s: 每秒进行 merge 的写操作数目.即 delta(wmerge)/sr/s: 每秒完成的读 I/O 设备次数.即 delta(rio)/sw/s: 每秒完成的写 I/O 设备次数.即 delta(wio)/srsec/s: 每秒读扇区数.即 delta(rsect)/swsec/s: 每秒写扇区数.即 delta(wsect)/srkB/s: 每秒读K字节数.是 rsect/s 的一半,因为每扇区大小为512字节.(需要计算)wkB/s: 每秒写K字节数.是 wsect/s 的一半.(需要计算)avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区).delta(rsect+wsect)/delta(rio+wio)avgqu-sz: 平均I/O队列长度.即 delta(aveq)/s/1000 (因为aveq的单位为毫秒).await: 平均每次设备I/O操作的等待时间 (毫秒).即 delta(ruse+wuse)/delta(rio+wio)svctm: 平均每次设备I/O操作的服务时间 (毫秒).即 delta(use)/delta(rio+wio)%util: 一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的.即 delta(use)/s/1000 (因为use的单位为毫秒)

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈.

idle小于70% IO压力就较大了,一般读取速度有较多的wait.

同时可以结合vmstat查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)

另外 await 的参数也要多和 svctm 来参考。差的过高就一定有 IO 的问题.

avgqu-sz 也是个做 IO 调优时需要注意的地方,这个就是直接每次操作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小.如果数据拿的大,才IO 的数据会高.也可以通过 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s.也就是讲,读定速度是这个来决定的.

svctm 一般要小于 await (因为同时等待的请求的等待时间被重复计算了),svctm 的大小一般和磁盘性能有关,CPU/内存的负荷也会对其有影响,请求过多也会间接导致 svctm 的增加.await 的大小一般取决于服务时间(svctm) 以及 I/O 队列的长度和 I/O 请求的发出模式.如果 svctm 比较接近 await,说明 I/O 几乎没有等待时间;如果 await 远大于 svctm,说明 I/O 队列太长,应用得到的响应时间变慢,如果响应时间超过了用户可以容许的范围,这时可以考虑更换更快的磁盘,调整内核 elevator 算法,优化应用,或者升级 CPU.

队列长度(avgqu-sz)也可作为衡量系统 I/O 负荷的指标,但由于 avgqu-sz 是按照单位时间的平均值,所以不能反映瞬间的 I/O 洪水.

有时间的话,我会单独写几个帖子来说说iostat。

iodump

iodump 是一个统计每一个进程(线程)所消耗的磁盘I/O工具。这个一个perl脚本,其原理时打开有关I/O的内核记录消息开关,而后读取消息然后分析输出。简单使用步骤如下:

首先下载这个工具

wget http://aspersa.googlecode.com/svn/trunk/iodump

然后打开有关I/O内核消息的开关

echo 1 >/proc/sys/vm/block_dump

上述开关打开后,内核会记录下每一个I/O操作的消息。我们只需要定时获取并分析就好了,比如下面这样

while true; do sleep 1; dmesg -c ; done |perl iodump

等待一段时间,然后通过ctrl+c来结束上述脚本,你将获得下面类似的信息:

1
2
3
4
5
6
7
TASK                   PID      TOTAL       READ      WRITE      DIRTY DEVICES
postgres              5799       1919       1919          0          0 sda7
jbd2/sda7-8           1572         35          0         35          0 sda7
jbd2/sda2-8            250         32          0         32          0 sda2
flush-8:0             2229         31          0         31          0 sda2, sda7
postgres              4308          2          0          2          0 sda7
bash                  5804          1          0          1          0 sda2

上述输出的单位为块(block),每块的大小取决于创建文件系统时指定的块大小。比如我这个里的sda7的block大小是1KB。

iotop

iotop是一个Python编写的工具,有类似top工具的UI,包括一些参数也和top类似。不过它对系统有一些要求,分别是:

Python ≥ 2.5 or Python ≥ 2.4 with the ctypes moduleKernel ≥ 2.6.20Kernel uses options:TASK_DELAY_ACCTCONFIG_TASKSTATSTASK_IO_ACCOUNTINGCONFIG_VM_EVENT_COUNTERS

如果是基于RPM包的系统,可以直接下载编译好的二进制包(here)或者二进制源代码包(here)

如果是Debian/Ubuntu系统,直接使用

sudo apt-get install iotop

即可(不得不说,Debian系统提供的软件真的是相当丰富呀),其他系统则可以通过下面的指令下载源代码,然后编译

git clone git://repo.or.cz/iotop.git

具体的使用方法可以参考iotop(8)手册,下面是在我机器上的一个显示:

1
2
3
4
5
6
iotop -o -u wgzhao
Total DISK READ:       2.15 M/s | Total DISK WRITE:    1601.15 K/sTID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND5984 be/4 wgzhao      2.15 M/s   70.55 K/s  0.00 % 83.67 % postgres: wgzhao pgbench [local] UPDATE4305 be/4 wgzhao      0.00 B/s  227.34 K/s  0.00 %  0.00 % postgres: writer process4308 be/4 wgzhao      0.00 B/s   90.15 K/s  0.00 %  0.00 % postgres: stats collector process

iopp

iopp是另外一个统计每一个进程I/O的工具,使用C语言编写,理论上应该比上述两个重狙效率都要高。安装方法很简单,首先通过下面的指令下载源代码:

git://github.com/markwkm/iopp.git

然后分别通过下面的指令编译安装

1
2
3
cmake CMakeLists.txt
make
make install DESTDIR=/usr

下面是一个使用例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
iopp -i -c 2pid    rchar    wchar    syscr    syscw   rbytes   wbytes  cwbytes command2144        0      296       40        8        0        0        0 /usr/sbin/LCDd2284        0        0        2        0        0        0        0 ha_logd: read process2299        0        0        2        0        0        0        0 ha_logd: write process2520        3        3        3        3        0        0        0 /usr/lib/virtualbox/vboxwebsrv2599        2        2        2        2        0        0        0 /usr/lib/virtualbox/VBoxSVC2675        0        0        1        0        0        0        0 runsvdir3177       16       16        4        2        0        0        0 /usr/bin/gnome-shell3192       16       16        4        2        0        0        0 nautilus3305      180      340      100       60        0        0        0 /usr/lib/icedove/icedove-bin3623     1393     1440        1        1        0        0        0 sshd: wgzhao@pts/04305        0  4603904        0      562        0  4603904        0 postgres: writer process   6257  2064384  1892352      252      215  3719168   139264        0 postgres: wgzhao pgbench [local] UPDATE

上述输出的各项含义是:

pid 进程IDrchar 将要从磁盘读取的字节数wchar 已经写入或应该要写入磁盘的字节数syscr 读I/O数syscw 写I/O数rbytes 真正从磁盘读取的字节数wbytes 真正写入到磁盘的字节数cwbytes 因为清空页面缓存而导致没有发生操作的字节数command 执行的命令

其中rbytes,wbytes,cwbytes会因给出-k或者-m参数,而显示为rkb,wkb,cwkb或rmb,wmb,cwmb。command一列如果给出-c的参数则显示完整的命令名而不仅仅只是命令本身。这些参数的使用和top类似。

更具体的可以参考iopp(8)手册。

dstat

dstat 号称各种资源统计工具,其目的是想替代vmstat,iostat,netstat,ifstat等各种单一统计工具,从而做到All in one。 dstat用Python语言编写。

dstat能够清晰显示每列的信息,特别是单位及大小很明确,不会在单位换算上犯迷糊和失误。最重要的是,因为它是基于模块化设计,因此我们可以很容易的写一个插件来收集我们需要的统计信息。

另外,dstat的输出还可以导出为CSV格式文件,从而可以在电子表格工具里分方便的生成统计图形。

目前dstat的插件已经相当多了,这是我机器上目前的输出:

1
2
3
4
5
6
7
8
9
10
11
12
$ dstat  --list
internal:aio, cpu, cpu24, disk, disk24, disk24old, epoch, fs, int, int24, io, ipc, load, lock, mem, net, page, page24, proc, raw, socket, swap, swapold, sys, tcp, time, udp, unix, vm
/usr/share/dstat:battery, battery-remain, cpufreq, dbus, disk-tps, disk-util, dstat, dstat-cpu, dstat-ctxt, dstat-mem, fan, freespace, gpfs, gpfs-ops, helloworld, innodb-buffer, innodb-io, innodb-ops, lustre, memcache-hits, mysql-io, mysql-keys, mysql5-cmds, mysql5-io, mysql5-keys, net-packets, nfs3, nfs3-ops, nfsd3, nfsd3-ops, ntp, postfix, power, proc-count, qmail, rpc, rpcd, sendmail, snooze, squid, test, thermal, top-bio, top-bio-adv, top-childwait, top-cpu, top-cpu-adv, top-cputime, top-cputime-avg, top-int, top-io, top-io-adv, top-latency, top-latency-avg, top-mem, top-oom, utmp, vm-memctl, vmk-hba, vmk-int, vmk-nic, vz-cpu, vz-io, vz-ubc, wifi

下面给出几个使用的列子(实际输出是带彩色的,很容易识别)

dstat的缺省输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
wgzhao-nb:~# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 2   1  87  10   0   0| 816k  385k|   0     0 |   0     0 |2279  7048 5   1  78  16   0   0|2600k    0 | 140B  940B|   0     0 |5952    13k5   3  80  12   0   0|2896k  182k|  70B  358B|   0     0 |6074    14k4   2  78  16   0   0|2724k    0 |  70B  374B|   0     0 |5703    15k4   2  81  14   0   0|3008k    0 |  70B  358B|   0     0 |5924    13k5   1  80  14   0   0|1976k   17k|  70B  358B|   0     0 |5819    13k5   2  79  14   0   0|2056k    0 | 198B  374B|   0     0 |5618    13k4   2  79  15   0   0|2416k    0 |  70B  358B|   0     0 |5866    15k5   2  78  15   0   0|2528k    0 |  70B  358B|   0     0 |6356    14k5   2  78  16   0   0|2288k    0 |  70B  358B|   0     0 |6515    15k5   2  79  14   0   0|2656k 8192B|  70B  358B|   0     0 |6490    15k3   2  81  13   0   0|2296k    0 |  70B  374B|   0     0 |5573    15k4   3  76  17   0   1|2224k    0 |  70B  358B|   0     0 |5366    12k5   1  81  13   0   0|2208k    0 | 508B  358B|   0     0 |5403    13k4   2  79  15   0   0|2024k  182k|  70B  358B|   0     0 |5583    13k5   2  79  15   0   0|2148k   17k| 186B  490B|   0     0 |5400    12k

指定需要显示的列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
wgzhao-nb:~# dstat  -c --top-cpu -d --top-bio --top-latency
Module dstat_top_latency failed to load. (Kernel has no scheduler statistics, use at least 2.6.12)
----total-cpu-usage---- -most-expensive- -dsk/total- ----most-expensive----
usr sys idl wai hiq siq|  cpu process   | read  writ|  block i/o process   2   1  87  10   0   0|gnome-shell  0.7| 826k  384k|postgres    692k   52k4   2  79  16   0   0|postgres: wgz3.0|1744k  776k|postgres: w1744k   72k5   3  78  15   0   0|postgres: wgz5.0|3120k    0 |postgres: w3064k  136k6   2  73  19   0   0|postgres: wgz4.2|2608k  285k|postgres: w2608k  136k4   2  77  17   0   0|postgres: wgz3.5|2112k  848k|postgres: w2112k   88k3   2  71  25   0   0|postgres: wgz2.0| 944k 1049k|postgres: w 936k   48k3   2  58  37   0   0|postgres: wgz2.0| 920k 2070k|postgres: w 928k   64k3   2  62  34   0   0|postgres: wgz2.2|1496k  992k|postgres: w1608k   72k3   2  56  38   0   0|postgres: wgz3.0|1840k  645k|postgres: w1856k   88k3   2  78  17   0   0|postgres: wgz3.0|1420k 1200k|postgres: w1292k   80k5   2  80  12   0   1|postgres: wgz4.2|2628k    0 |postgres: w2636k  112k4   3  69  25   0   0|postgres: wgz3.8|2168k  576k|postgres: w2224k  104k

指定需要显示的列,并同时将结果导出到文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
wgzhao-nb:~# dstat  --disk --mem --proc --io --sys --filesystem --tcp --vm --output dstat.csv
-dsk/total- ------memory-usage----- ---procs--- --io/total- ---system-- --filesystem- ----tcp-sockets---- -----virtual-memory----read  writ| used  buff  cach  free|run blk new| read  writ| int   csw |files  inodes|lis act syn tim clo|majpf minpf alloc  free844k  404k| 829M 19.4M 2920M  124M|  0 0.0 0.7|47.5  38.4 |2336  7185 | 4928  12286 | 11   3   0   0   2|   1   620   602   605
2128k 1526k| 828M 19.4M 2915M  130M|  0 2.0   0| 111   157 |4588    14k| 4928  12285 | 11   3   0   0   2|   0  1859   995  2278 920k 2151k| 826M 19.4M 2917M  129M|  0 2.0   0|52.0   237 |3091  7540 | 4928  12284 | 11   3   0   0   2|   0  4448  2330  2144
2124k 1003k| 826M 19.4M 2921M  126M|1.0 1.0   0| 135   106 |4705    14k| 4928  12284 | 11   3   0   0   2|   0   331   865     1
2344k 1024k| 826M 19.4M 2924M  122M|1.0 2.0   0| 121   118 |4074    13k| 4928  12284 | 11   3   0   0   2|   0   249   953     1
1572k 1624k| 827M 19.4M 2926M  120M|1.0 2.0   0|87.0   190 |3231    11k| 4928  12284 | 11   3   0   0   2|   0    98   530     1 916k  788k| 827M 19.4M 2928M  119M|  0 2.0   0|68.0  92.0 |3452  8709 | 4928  12284 | 11   3   0   0   2|   0   128   383     4
2452k 1665k| 826M 19.4M 2931M  116M|1.0 1.0   0| 132   197 |4779    14k| 4928  12284 | 11   3   0   0   2|   0   208   822     1
1552k 1328k| 827M 19.4M 2933M  114M|  0 2.0   0|97.0   156 |3762  9117 | 4928  12284 | 11   3   0   0   2|   0   133   473     1
1192k 2024k| 827M 19.4M 2934M  112M|  0 2.0   0|81.0   239 |4068    11k| 4928  12284 | 11   3   0   0   2|   0   135   414     2
2668k  584k| 827M 19.4M 2937M  109M|  0 2.0   0| 148  71.0 |4415    10k| 4928  12284 | 11   3   0   0   2|   0   174   870     4
1712k  960k| 827M 19.4M 2940M  106M|  0 2.0   0| 122   113 |4454    14k| 4928  12284

Linux服务器性能评估相关推荐

  1. 性能服务器如何放进ppt,Linux服务器性能评估与优化.ppt

    <Linux服务器性能评估与优化.ppt>由会员分享,可在线阅读,更多相关<Linux服务器性能评估与优化.ppt(29页珍藏版)>请在装配图网上搜索. 1.1 南非蚂蚁 20 ...

  2. Linux服务器性能评估与优化--转

    http://www.itlearner.com/article/4553 一.影响Linux服务器性能的因素 1. 操作系统级 Ø       CPU Ø       内存 Ø       磁盘I/ ...

  3. 【转】Linux服务器性能评估与优化(一)

    转自:https://blog.csdn.net/hguisu/article/details/39373311 1.前言简介 1.1.影响Linux服务器性能的因素 1. 操作系统级 性能调优是找出 ...

  4. Linux服务器性能评估与优化(一)

    1.前言简介 一.影响Linux服务器性能的因素 1. 操作系统级 性能调优是找出系统瓶颈并消除这些瓶颈的过程. 很多系统管理员认为性能调优仅仅是调整一下内核的参数即可解决问题, 事实上情况并不是这样 ...

  5. Linux服务器性能评估(转)

    工作这么久了,主要就是服务器端的开发,由于业务性质,对于性能的考虑是每天不得不面对的问题,每次出方案,都是以预估总pv.单机支持最大并发.预计机器资源......等等一系列问题开始,所以程序运行中单个 ...

  6. Linux服务器性能优化

    Linux服务器性能优化 一 linux服务器性能查看 1.1 cpu性能查看 1.查看物理cpu个数: cat /proc/cpuinfo |grep "physical id" ...

  7. php 获取服务器进程数,PHP 获取linux服务器性能CPU、内存、硬盘、进程等使用率...

    数据库配置文件: conn.php define("MONITORED_IP", "172.16.0.191"); //被监控的服务器IP地址 也就是本机地址 ...

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

    一 linux服务器性能查看 1.1 cpu性能查看 1.查看物理cpu个数: cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc ...

  9. Linux服务器性能查看分析

    一 linux服务器性能查看 1.1 cpu性能查看 1.查看物理cpu个数: cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc ...

最新文章

  1. php多选框怎么传值,tp3.2如何处理多选框传参和判断状态
  2. 如何在Keras中检查深度学习模型(翻译)
  3. getchar()和EOF
  4. 网易严选Java开发三面面经:java读文件内容
  5. 常用中后台交互设计控件使用场景与规范总结
  6. CVPR 2019 CLIC 图像压缩挑战赛冠军方案解读
  7. 微信小程序DAU超4.5亿 小程序开发者突破300万
  8. JSON 格式化成视图模式
  9. win7 ie11版本安装报此更新不适用于计算机问题
  10. ffmpeg 简单教程
  11. 零基础 Java 学习笔记
  12. 计算机软件安装流程,计算机软件系统快速安装流程简介
  13. app上架需要哪些资料
  14. DuckDuckGo + Alfred
  15. PHP:pack、unpack用法大全
  16. 通俗理解TIM定时器并简单使用
  17. 仿真软件测试基尔霍夫定律,实验三 基尔霍夫定律的验证(仿真实验)
  18. Configuring the Salt Minion - Salt Minion配置参数的完全说明
  19. android x86 最新手机,Android-x86 9.0-r2 稳定版发布:底层升级至Android 9.0
  20. 什么是云计算的基本原理?具体的核心技术有哪些?

热门文章

  1. android 车载app怎么开发,Android开发智能车载App(1)---android控件及属性介绍
  2. Windows下如何将文件打包压缩成 .tar.gz格式
  3. 市场调研-船用离合器市场现状及未来发展趋势
  4. ALLEGRO模块无法移动解决方案
  5. 剖析 SPI 在 Spring 中的应用
  6. 2021.06.29【R语言】丨png转pdf批量生成
  7. 谭浩强《C语言》学习1
  8. 码字 层映射 预编码的概念总结
  9. 电脑快捷键你知道多少个?QQ截图快捷键ctrl加什么
  10. openlayers官方教程(三)Basics——Zooming to your location