一. CPU性能评估

1.vmstat [-V] [-n] [depay [count]]

-V : 打印出版本信息,可选参数

-n : 在周期性循环输出时,头部信息仅显示一次

delay : 两次输出之间的时间间隔

count : 按照delay指定的时间间隔统计的次数。默认是1

如:vmstat 1 3

user1@user1-desktop:~$ vmstat 1 3

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

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

0 0 0 1051676 139504 477028 0 0 46 31 130 493 3 1 95 2

0 0 0 1051668 139508 477028 0 0 0 4 377 1792 3 1 95 0

0 0 0 1051668 139508 477028 0 0 0 0 327 1741 3 1 95 0

r : 运行和等待CPU时间片的进程数(若长期大于CPU的个数,说明CPU不足,需要增加CPU)

b : 在等待资源的进程数(如等待I/O或者内存交换等)

swpd : 切换到内存交换区的内存数量,单位kB

free : 当前空闲物理内存,单位kB

buff : buffers cache的内存数量,一般对块设备的读写才需要缓存

cache : page cached的内存数量,一般作为文件系统cached,频繁访问的文件都会被cached

si : 由磁盘调入内存,即内存进入内存交换区的数量

so : 内存调入磁盘,内存交换区进入内存的数量

bi : 从块设备读入数据的总量,即读磁盘,单位kB/s

bo : 写入到块设备的数据总量,即写磁盘,单位kB/s

in : 某一时间间隔中观测到的每秒设备中断数

cs : 每秒产生的上下文切换次数

us :用户进程消耗的CPU时间百分比【注意】

sy : 内核进程消耗CPU时间百分比【注意】

id : CPU处在空闲状态的时间百分比【注意】

wa :IO等待所占用的CPU时间百分比

如果si、so的值长期不为0,表示系统内从不足,需要增加系统内存

bi+bo参考值为1000,若超过1000,且wa较大,表示系统IO有问题,应该提高磁盘的读写性能

in与cs越大,内核消耗的CPU时间就越多

us+sy参考值为80%,如果大于80%,说明可能存在CPU资源不足的情况

综上所述,CPU性能评估中重点注意r、us、sy和id列的值。

2. sar [options] [-o filename] [interval [count] ]

options:

-A :显示系统所有资源设备(CPU、内存、磁盘)的运行状态

-u : 显示系统所有CPU在采样时间内的负载状态

-P : 显示指定CPU的使用情况(CPU计数从0开始)

-d : 显示所有硬盘设备在采样时间内的使用状况

-r : 显示内存在采样时间内的使用状况

-b : 显示缓冲区在采样时间内的使用情况

-v : 显示进程、文件、I节点和锁表状态

-n :显示网络运行状态。参数后跟DEV(网络接口)、EDEV(网络错误统计)、SOCK(套接字)、FULL(显示其它3个参数所有)。可单独或一起使用

-q : 显示运行队列的大小,与系统当时的平均负载相同

-R : 显示进程在采样时间内的活动情况

-y : 显示终端设备在采样时间内的活动情况

-w : 显示系统交换活动在采样时间内的状态

-o : 将命令结果以二进制格式存放在指定的文件中

interval : 采样间隔时间,必须有的参数

count : 采样次数,默认1

如:sar -u 1 3

user1@user1-desktop:~$ sar -u 1 3

Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)

09时27分18秒 CPU %user %nice %system %iowait %steal %idle

09时27分19秒 all 1.99 0.00 0.50 5.97 0.00 91.54

09时27分20秒 all 3.90 0.00 2.93 5.85 0.00 87.32

09时27分21秒 all 2.93 0.00 1.46 4.39 0.00 91.22

平均时间: all 2.95 0.00 1.64 5.40 0.00 90.02

%user : 用户进程消耗CPU时间百分比

%nice : 运行正常进程消耗CPU时间百分比

%system : 系统进程消耗CPU时间百分比

%iowait : IO等待多占用CPU时间百分比

%steal : 内存在相对紧张坏经下pagein强制对不同页面进行的steal操作

%idle : CPU处在空闲状态的时间百分比

3. iostat [-c | -d] [-k] [-t] [-x [device]] [interval [count]]

-c :显示CPU使用情况

-d :显示磁盘使用情况

-k : 每秒以k bytes为单位显示数据

-t :打印出统计信息开始执行的时间

-x device :指定要统计的磁盘设备名称,默认为所有磁盘设备

interval :制定两次统计时间间隔

count : 统计次数

如: iostat -c

user1@user1-desktop:~$ iostat -c

Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)

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

2.51 0.02 1.27 1.40 0.00 94.81

(每项代表的含义与sar相同)

4uptime ,如:

user1@user1-desktop:~$ uptime

10:13:30 up 1:15, 2 users, load average: 0.00, 0.07, 0.11

显示的分别是:系统当前时间,系统上次开机到现在运行了多长时间,目前登录用户个数,系统在1分钟内、5分钟内、15分钟内的平均负载

注意:load average的三个值一般不能大于系统CPU的个数,否则说明CPU很繁忙

二 . 内存性能评估

1free

2.watch 与 free 相结合,在watch后面跟上需要运行的命令,watch就会自动重复去运行这个命令,默认是2秒执行一次,如:

Every 2.0s: free Sat Mar 5 10:30:17 2011

total used free shared buffers cached

Mem: 2060496 1130188 930308 0 261284 483072

-/+ buffers/cache: 385832 1674664

Swap: 3000316 0 3000316

(-n指定重复执行的时间,-d表示高亮显示变动)

3.使用vmstat,关注swpd、si和so

4. sar -r,如:

user1@user1-desktop:~$ sar -r 2 3

Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)

10时34分11秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit

10时34分13秒 923548 1136948 55.18 265456 487156 1347736 26.63

10时34分15秒 923548 1136948 55.18 265464 487148 1347736 26.63

10时34分17秒 923548 1136948 55.18 265464 487156 1347736 26.63

平均时间: 923548 1136948 55.18 265461 487153 1347736 26.63

kbmemfree : 空闲物理内存

kbmemused : 已使用物理内存

%memused : 已使用内存占总内存百分比

kbbuffers : Buffer Cache大小

kbcached : Page Cache大小

kbcommit : 应用程序当前使用内存大小

%commit :应用程序使用内存百分比

三 . 磁盘I/O性能评估

1sar -d ,如:

user1@user1-desktop:~$ sar -d 1 3

Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)

10时42分27秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

10时42分28秒 dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

10时42分28秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

10时42分29秒 dev8-0 2.00 0.00 64.00 32.00 0.02 8.00 8.00 1.60

10时42分29秒 DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

10时42分30秒 dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

平均时间: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util

平均时间: dev8-0 0.67 0.00 21.33 32.00 0.01 8.00 8.00 0.53

DEV : 磁盘设备名称

tps :每秒到物理磁盘的传送数,即每秒的I/O流量。一个传送就是一个I/O请求,多个逻辑请求可以被合并为一个物理I/O请求

rc_sec/s:每秒从设备读入的扇区数(1扇区=512字节)

wr_sec/s : 每秒写入设备的扇区数目

avgrq-sz : 平均每次设备I/O操作的数据大小(以扇区为单位)

avgqu-sz : 平均I/O队列的长度

await : 平均每次设备I/O操作的等待时间(毫秒)

svctm :平均每次设备I/O 操作的服务时间(毫秒)

%util :一秒中有百分之几的时间用用于I/O操作

正常情况下svctm应该小于await,而svctm的大小和磁盘性能有关,CPU、内存的负荷也会对svctm值造成影响,过多的请求也会简介导致svctm值的增加。

await的大小一般取决与svctm的值和I/O队列长度以及I/O请求模式。如果svctm与await很接近,表示几乎没有I/O等待,磁盘性能很好;如果await的值远高于svctm的值,表示I/O队列等待太长,系统上运行的应用程序将变慢,此时可以通过更换更快的硬盘来解决问题。

%util若接近100%,表示磁盘产生I/O请求太多,I/O系统已经满负荷地在工作,该磁盘可能存在瓶颈。长期下去,势必影响系统的性能,可通过优化程序或者通过更换更高、更快的磁盘来解决此问题。

2. iostat -d

user1@user1-desktop:~$ iostat -d 2 3

Linux 2.6.35-27-generic (user1-desktop) 2011年03月05日 _i686_ (2 CPU)

Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn

sda 5.89 148.87 57.77 1325028 514144

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 0.00 0.00 0.00 0 0

Blk_read/s : 每秒读取的数据块数

Blk_wrtn/s : 每秒写入的数据块数

Blk_read : 读取的所有块数

Blk_wrtn : 写入的所有块数

如果Blk_read/s很大,表示磁盘直接读取操作很多,可以将读取的数据写入内存中进行操作;如果Blk_wrtn/s很大,表示磁盘的写操作很频繁,可以考虑优化磁盘或者优化程序。这两个选项没有一个固定的大小,不同的操作系统值也不同,但长期的超大的数据读写,肯定是不正常的,一定会影响系统的性能。

3iostat -x /dev/sda 3 ,对指定磁盘的单独统计

4vmstat -d

四 . 网络性能评估

1ping

time值显示了两台主机之间的网络延时情况,若很大,表示网络的延时很大。packets loss表示网络丢包率,越小表示网络的质量越高。

2netstat -i ,如:

user1@user1-desktop:~$ netstat -i

Kernel Interface table

Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg

eth0 1500 0 6043239 0 0 0 87311 0 0 0 BMRU

lo 16436 0 2941 0 0 0 2941 0 0 0 LRU

Iface : 网络设备的接口名称

MTU : 最大传输单元,单位字节

RX-OK / TX-OK : 准确无误地接收 / 发送了多少数据包

RX-ERR / TX-ERR : 接收 / 发送数据包时产生了多少错误

RX-DRP / TX-DRP : 接收 / 发送数据包时丢弃了多少数据包

RX-OVR / TX-OVR : 由于误差而遗失了多少数据包

Flg :接口标记,其中:

L :该接口是个回环设备

B : 设置了广播地址

M : 接收所有的数据包

R :接口正在运行

U : 接口处于活动状态

O : 在该接口上禁用arp

P :表示一个点到点的连接

正常情况下,RX-ERR,RX-DRP,RX-OVR,TX-ERR,TX-DRP,TX-OVR都应该为0,若不为0且很大,那么网络质量肯定有问题,网络传输性能也一定会下降。

当网络传输存在问题时,可以检测网卡设备是否存在故障,还可以检查网络部署环境是否合理。

3. netstat -r (default行对应的值表示系统的默认路由)

4sar -n ,n后为DEV(网络接口信息)、EDEV(网络错误统计信息)、SOCK(套接字信息)、和FULL(显示所有)

wangxin@wangxin-desktop:~$ sar -n DEV 2 3

Linux 2.6.35-27-generic (wangxin-desktop) 2011年03月05日 _i686_ (2 CPU)

11时55分32秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

11时55分34秒 lo 2.00 2.00 0.12 0.12 0.00 0.00 0.00

11时55分34秒 eth0 2.50 0.50 0.31 0.03 0.00 0.00 0.00

11时55分34秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

11时55分36秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

11时55分36秒 eth0 1.50 0.00 0.10 0.00 0.00 0.00 0.00

11时55分36秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

11时55分38秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00

11时55分38秒 eth0 14.50 0.00 0.88 0.00 0.00 0.00 0.00

平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s

平均时间: lo 0.67 0.67 0.04 0.04 0.00 0.00 0.00

平均时间: eth0 6.17 0.17 0.43 0.01 0.00 0.00 0.00

IFACE : 网络接口设备

rxpck/s : 每秒接收的数据包大小

txpck/s :每秒发送的数据包大小

rxkB/s : 每秒接受的字节数

txkB/s : 每秒发送的字节数

rxcmp/s : 每秒接受的压缩数据包

txcmp/s : 每秒发送的压缩数据包

rxmcst/s : 每秒接受的多播数据包

linux性能问题(CPU,内存,磁盘I/O,网络)的更多相关文章

  1. AIX/Linux/HP-UX查看CPU/内存/磁盘/存储命令

    1.1    硬件环境验证方式 硬件环境主要包括CPU.内存.磁盘/存储.网络设备(如F5等).系统特有设备(如密押设备等)等,其中网络设备和系统特有设备由网络管理员或项目组提供为准,本节主要关注CP ...

  2. linux性能优化cpu 磁盘IO MEM

    系统优化是一项复杂.繁琐.长期的工作,优化前需要监测.采集.测试.评估,优化后也需要测试.采集.评估.监测,而且是一个长期和持续的过程,不 是说现在优化了,测试了,以后就可以一劳永逸了,也不是说书本上 ...

  3. linux性能监控 -CPU、Memory、IO、Network等指标的讲解

    [操作系统-linux]linux性能监控 -CPU.Memory.IO.Network等指标的讲解(转) 一.CPU 1.良好状态指标 CPU利用率:User Time <= 70%,Syst ...

  4. 【转】一文掌握 Linux 性能分析之内存篇

    [转]一文掌握 Linux 性能分析之内存篇 前面我们已经学习了 CPU 篇,这篇来看下内存篇. 01 内存信息 同样在分析内存之前,我们得知到怎么查看系统内存信息,有以下几种方法. 1.1 /pro ...

  5. linux Java项目CPU内存占用高故障排查

    linux Java项目CPU内存占用高故障排查 top -Hp 进程号 显示进程中每个线程信息,配合jstack定位java线程运行情况 # 线程详情 jstack 线程PID # 查看堆内存中的对 ...

  6. linux系统CPU,内存,磁盘,网络流量监控脚本

    前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat ...

  7. Linux性能监测:内存篇

    在操作系统里,虚拟内存被分成页,在 x86 系统上每个页大小是 4KB.Linux 内核读写虚拟内存是以 “页” 为单位操作的,把内存转移到硬盘交换空间(SWAP)和从交换空间读取到内存的时候都是按页 ...

  8. 一文掌握 Linux 性能分析之内存篇

    本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. 前面我们已经学 ...

  9. linux查看系统CPU,内存,硬盘使用情况

    top查看CPU,内存使用情况 free查看硬盘使用情况

  10. Linux系统管理和调优(内存、CPU、磁盘IO、网络)

    系统管理 Author:Rich七哥 查看 CPU 负载相关工具,找出系统中使用 CPU 最多的进程 查看 Memory 运行状态相关工具,找出系统中使用内存最多的进程 查看 IO 运行状态相关工具, ...

随机推荐

  1. 12 Useful “df” Commands to Check Disk Space in Linux

    On the internet you will find plenty of tools for checking disk space utilization in Linux. However, ...

  2. org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml

    org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml at org.hibernate ...

  3. Python3 学习第一弹:基本数据类型

    本人学习主要从<python基础教程第二版>,<dive into python3>等书籍,及一些网上大牛的博客中学习特别是Python官方文档<Python Tutor ...

  4. 函数lock_rec_set_nth_bit

    lock 分配内存 lock = mem_heap_alloc(trx->lock_heap, sizeof(lock_t) + n_bytes); 内存分配图 0xxx 2 xxx 0xxx3 ...

  5. Nlog Layout

    Nlog.config <targets>     <target type="Console" name="trace" layout=&q ...

  6. bzoj1312

    忘写题解了,经典的最大密度子图 可以类似分数规划的做,二分密度,然后转化为最大权闭合子图做,判断是否大于0 注意方案的输出 const eps=1e-6; lim=1e-12; inf=; type ...

  7. UVa 1658 (拆点法 最小费用流) Admiral

    题意: 给出一个有向带权图,求从起点到终点的两条不相交路径使得权值和最小. 分析: 第一次听到“拆点法”这个名词. 把除起点和终点以外的点拆成两个点i和i',然后在这两点之间连一条容量为1,费用为0的 ...

  8. GridView CommandArgument 绑定多个参数

    我们在使用GridView的时候 有时会需要绑定多个参数 <asp:GridView ID="gvwVoxListAll" runat="server"  ...

  9. codevs 3290 华容道

    HAHAHA BFS+SPFA. #include<iostream> #include<cstdio> #include<cstring> #include< ...

  10. qtcreator cannot find -lts

    /********************************************************************* * qtcreator cannot find -lts ...