在linux下有一个strace命令,可以用来追踪程序或进程的执行过程,从中查找和追踪程序的bug,及运行中的瓶颈等。
命令用法,主要有两种方式:
- strace 程序
strace会运行这个程序,并追踪。
strace -p pid
这是追踪一个已经运行的程序。
另外还有一些参数也很有用,如-c可以生成一个统计结果,-o file可以把追踪信息输出到一个文件内。
有些网卡的中断没有用到多个cpu,只用到一个CPU,导致那个cpu的软中断是100%,系统缓慢。
[root@web ~]# cat /proc/interrupts
CPU0 CPU1
0: 939474003 0 IO-APIC-edge timer
1: 7 2 IO-APIC-edge i8042
6: 2 3 IO-APIC-edge floppy
7: 0 0 IO-APIC-edge parport0
8: 1 0 IO-APIC-edge rtc
9: 0 0 IO-APIC-level acpi
12: 0 116 IO-APIC-edge i8042
15: 47539568 94428 IO-APIC-edge ide1
51: 4557238 12181 IO-APIC-level ioc0
59: 0 0 IO-APIC-level vmci
75: 101314205 0 PCI-MSI eth0
NMI: 0 0
LOC: 998113903 999592029
ERR: 0
MIS: 0
抓哪个进程干坏事前要先停掉syslogservice syslog stop
打开block dump:echo 1 > /proc/sys/vm/block_dump
统计:
dmesg | egrep “READ|WRITE|dirtied” | egrep -o ‘([a-zA-Z]*)’ | sort | uniq -c | sort -rn | head
1423 kjournald
1075 pdflush
209 indexer
3 cronolog
1 rnald
1 mysqld
dstat 是一个用来替换 vmstat, iostat, netstat, nfsstat 和 ifstat 这些命令的工具,是一个全能系统信息统计工具。
- 安装:
yum install http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
yum install dstat
iostat
iostat用于输出CPU和磁盘I/O相关的统计信息. 命令格式:
iostat [ -c | -d ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ device [ … ] | ALL ] [ -p [ device | ALL ] ]
[ interval [ count ] ]
1)iostat的 简单使用
iostat可以显示CPU和I/O系统的负载情况及分区状态信息. 直接执行iostat可以显示下面内容:
如果你的linux kernel版本大于2.6.20,可以使用iotop这个工具,象windows 2008的任务管理器一样看到各个进程的IO读写。非常不错。
主页:http://guichaz.free.fr/iotop/
介绍:
Iotop is a Python program with a top like UI used to show of behalf of which process is the I/O going on. It requires Python >= 2.5 (or Python >= 2.4 with the ctypes module) and a Linux kernel >= 2.6.20 with the TASK_DELAY_ACCT and TASK_IO_ACCOUNTING options enabled.