Linux下性能分析工具汇总

CPU性能分析工具:

 

vmstat  

       vmstat 3 

       vmstat 3  5

 

[root@node202fuse-2.7.4]# vmstat 3 5

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  54736 34100 304276    0    0   48     5   80  38  1  2 97 0  0

 0 0      0  54736 34100 304276    0    0    0     0   89  30  0  0 100 0  0

 0 0      0  54736 34108 304268    0    0    0    11   85  33  0  1 99 0  0

 0 0      0  54736 34108 304276    0    0    0     0   73  37  0  0 100 0  0

 0 0      0  54736 34108 304276    0    0    0     0   74  24  0  0 100 0  0

 

ps -ef

 

sar

[root@node202 ~]# sar-u 3 5  //CPU

[root@node202 ~]# sar-P  0 3 5  //统计每个CPU的使用情况 # sar -P ALL  3   5   //统计所有内核

 

[root@node202 ~]# sar -r 3 5    //内存

 

[root@node202 ~]# sar-d 3  //磁盘的性能

 

[root@node202 ~]# sar-n DEV 3   //显示网络运行状态

 

 

 

 

time

 

strace

 

pstree

 

top

 

Memory性能分析工具

 

vmstat

 

free

 

strace

 

top

 

ipcs

 

ipcrm

 

cat /proc/meminfo

 

cat /proc/slabinfo

 

cat /proc//maps

 

I/O性能分析工具

iostat

[root@node202 ~]#iostat

Linux 2.6.18-8.el5xen(node202.com)     04/12/2013

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

           0.34    0.00   1.49    0.13    0.02  98.02

Device:            tps   Blk_read/s  Blk_wrtn/s   Blk_read   Blk_wrtn

sda               1.51        58.50         7.36     656227     82572

dm-0              2.73        58.21         7.36     652994     82568

dm-1              0.01         0.05         0.00        560          0

sdb               0.01         0.31         0.00       3529          0

sdc               0.00         0.05         0.00        539          0

[root@node202 ~]#iostat -c   //统计CPU

[root@node202 ~]#iostat -d 2 3 //查看磁盘性能 ,第二次输出的值才是检测时段的值

[root@node202 home]#iostat -x  //对所有磁盘的统计

 

 

vmstat

 

ipstat

 

repquota

 

quotacheck

 

Network性能分析工具:

 

ifconfig

 

ethereal

 

tethereal

 

iptraf

 

iwconfig

 

nfsstat

 

mrtg

 

ntop

 

netstat

 

cat /proc/sys/net

 

Linux 性能调优工具

 

当通过上述工具及命令,我们发现了应用的性能瓶颈以后,我们可以通过以下工具或者命令来进行性能的调整。

 

CPU性能调优工具:

 

nice / renic

 

sysctl

 

Memory性能调优工具:

 

swapon

 

ulimit

 

sysctl

 

I/O性能调优工具:

 

edquota

 

quoton

 

sysctl

 

boot line:

 

elevator=

 

Network性能调优工具:

 

ifconfig

 

iwconfig

 

sysctl

 

CPU性能调整

 

当一个系统的CPU空闲时间或者等待时间小于5%时,我们就可以认为系统的CPU资源耗尽,我们应该对CPU进行性能调整。

 

CPU性能调整方法:

 

编辑/proc/sys/kernel/中的文件,修改内核参数。

 

#cd/proc/sys/kernel/ 

# ls/proc/sys/kernel/  

acct hotplug panicreal-root-dev   cad_pid modprobepanic_on_oops sem   cap-bound msgmaxpid_max shmall   core_pattern msgmnbpowersave-nap shmmax   core_uses_pidmsgmni print-fatal-signals shmmni  ctrl-alt-del ngroups_max printk suid_dumpable   domainname osrelease printk_ratelimitsysrq   exec-shield ostypeprintk_ratelimit_burst tainted  exec-shield-randomize overflowgid pty threads-max   hostname overflowuid random version   一般可能需要编辑的是pid_maxthreads-max

如下:

# sysctlkernel.threads-max   kernel.threads-max =8192 

# sysctlkernel.threads-max=10000 kernel.threads-max = 10000  Memory性能调整

 

当一个应用系统的内存资源出现下面的情况时,我们认为需要进行Memory性能调整:

 

页面频繁换进换出;

 

缺少非活动页。

 

例如在使用vmstat命令时发现,memorycache使用率非常低,而swapsi或者so则有比较高的数据值时,应该警惕内存的性能问题。

[root@node201kernel]# 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      0  75116 23472 260280    0    0  102    23  529 171  2  7 85 5  0

 

Memory性能调整方法:

 

1。关闭非核心的服务进程。

 

相关的方法请见CPU性能调整部分。

 

2。修改/proc/sys/vm/下的系统参数

 

# ls/proc/sys/vm/  

block_dumplaptop_mode nr_pdflush_threads  dirty_background_ratio legacy_va_layout overcommit_memory   dirty_expire_centisecs lower_zone_protectionovercommit_ratio   dirty_ratiomax_map_count page-cluster  dirty_writeback_centisecs min_free_kbytes swappiness   hugetlb_shm_group nr_hugepagesvfs_cache_pressure 

# sysctlvm.min_free_kbytes   vm.min_free_kbytes =1024 

# sysctl -wvm.min_free_kbytes=2508  vm.min_free_kbytes= 2508 

# cat/etc/sysctl.conf    

 vm.min_free_kbytes=2058    

 

3。配置系统的swap交换分区等于或者2倍于物理内存。

 

# free

 

total used freeshared buffers cached

 

Mem: 987656 97024017416 0 63324 742400

 

-/+ buffers/cache:164516 823140

 

Swap: 1998840 1502721848568

 

I/O性能调整

 

系统出现以下情况时,我们认为该系统存在I/O性能问题:

 

系统等待I/O的时间超过50%;

 

一个设备的平均队列长度大于5

 

我们可以通过诸如vmstat等命令,查看CPUwa等待时间,以得到系统是否存在I/O性能问题的准确信息。

 

I/O性能调整方法:

 

1。修改I/O调度算法。

 

Linux已知的I/O调试算法有4种:

 

deadline - DeadlineI/O scheduler

 

as - Anticipatory I/Oscheduler

 

cfq - Complete FairQueuing scheduler

 

noop - Noop I/Oscheduler

 

可以编辑/etc/yaboot.conf文件修改参数elevator得到。

 

# vi /etc/yaboot.conf

 

image=/vmlinuz-2.6.9-11.EL

 

label=linux

 

read-only

 

initrd=/initrd-2.6.9-11.EL.img

 

root=/dev/VolGroup00/LogVol00

 

append="elevator=cfqrhgb quiet"

 

2。文件系统调整。

 

对于文件系统的调整,有几个公认的准则:

 

I/O负载相对平均的分配到所有可用的磁盘上;

 

选择合适的文件系统,Linux内核支持reiserfsext2ext3jfsxfs等文件系统;

 

# mkfs -t reiserfs -j/dev/sdc1   文件系统即使在建立后,本身也可以通过命令调优;

 

tune2fs(ext2/ext3)   reiserfstune(reiserfs)   jfs_tune (jfs)  

 

3。文件系统Mount时可加入选项noatimenodiratime

 

# vi /etc/fstab     /dev/sdb1 /backup reiserfs acl, user_xattr, noatime, nodiratime 1 1  

 

4。调整块设备的READAHEAD,调大RA值。

 

[root@overflowuid ~]#blockdev --report

 

RO RA SSZ BSZStartSec Size Device

 

 

rw 256 512 4096 071096640 /dev/sdb

 

rw 256 512 4096 3271094240 /dev/sdb1

 

[root@overflowuid ~]#blockdev --setra 2048 /dev/sdb1

 

[root@overflowuid ~]#blockdev --report

 

RO RA SSZ BSZStartSec Size Device

 

 

rw 2048 512 4096 071096640 /dev/sdb

 

rw 2048 512 4096 3271094240 /dev/sdb1

 

Network性能调整

 

一个应用系统出现如下情况时,我们认为该系统存在网络性能问题:

 

网络接口的吞吐量小于期望值;

 

出现大量的丢包现象;

 

出现大量的冲突现象。

 

Network性能调整方法:

 

1。调整网卡的参数。

 

# ethtool eth0

 

Settings for eth0:

 

Supported ports: [ TP]

 

Supported link modes:10baseT/Half 10baseT/Full

 

100baseT/Half100baseT/Full

 

1000baseT/Full

 

Supportsauto-negotiation: Yes

 

Advertised linkmodes: 10baseT/Half 10baseT/Full

 

100baseT/Half100baseT/Full

 

1000baseT/Full

 

Advertisedauto-negotiation: Yes

 

Speed: 100Mb/s

 

Duplex: Half

 

Port: Twisted Pair

 

PHYAD: 0

 

Transceiver: internal

 

Auto-negotiation: on

 

Supports Wake-on: d

 

Wake-on: d

 

Current messagelevel: 0x00000007 (7)

 

Link detected: yes

 

#ethtool -s eth0 duplexfull

 

#ifconfig eth0 mtu 9000up

 

2。增加网络缓冲区和包的队列。

 

# cat/proc/sys/net/ipv4/tcp_mem   196608262144 393216  

# cat/proc/sys/net/core/rmem_default  135168  

# cat/proc/sys/net/core/rmem_max   131071  

# cat/proc/sys/net/core/wmem_default  135168 

 # cat /proc/sys/net/core/wmem_max   131071  

# cat/proc/sys/net/core/optmem_max  20480  

# cat/proc/sys/net/core/netdev_max_backlog  300  

# sysctlnet.core.rmem_max   net.core.rmem_max =131071 

# sysctl -wnet.core.rmem_max=135168 net.core.rmem_max = 135168

 

  3。调整Webserving

 

# sysctlnet.ipv4.tcp_tw_reuse  net.ipv4.tcp_tw_reuse = 0 

# sysctl -wnet.ipv4.tcp_tw_reuse=1 net.ipv4.tcp_tw_reuse = 1 

# sysctlnet.ipv4.tcp_tw_recycle  net.ipv4.tcp_tw_recycle = 0 

# sysctl -wnet.ipv4.tcp_tw_recycle=1 net.ipv4.tcp_tw_recycle = 1 Linux下性能分析工具的汇总就讲到这里了。

 

 

 

分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS