Linux 系统性能监控命令详解
来源:互联网 发布:mysql 查询近一年数据 编辑:程序博客网 时间:2024/06/11 03:25
- Linux 系统性能监控命令详解
- CPU
- MEMORY
- IO
- NETWORK
- LINUX进程内存占用查看方法
系统负载过重时往往会引起其它子系统的问题,比如:
->大量的读入内存的IO请求(page-in IO)会用完内存队列;
->大量的网络流量会造成CPU的过载;
->CPU的高使用率可能正在处理空闲内存队列;
->大量的磁盘读写会消耗CPU和IO资源。
我们测试的系统,总的来说可分为二类:
第一,IO Bound,这类系统会大量消耗内存和底层的存储系统,它并不消耗过多的CPU和网络资源(除非系统是网络的)。IO bound系统消耗CPU资源用来接受IO请求,然后会进入休眠状态。数据库通常被认为是IO bound系统。
第二,CPU Bound,这类系统需要消耗大量的CPU资源。他们往往进行大量的数学计算。高吞吐量的Web server,Mail Server通常被认为是CPU Bound系统。
在性能测试中首先要做的是建立基线(Baseline),这样后续的调整才会有一个参考标准。值得注意的是,在测试基线的时候,一定要保证系统工作在正常的状态下。
CPU
常用的监视工具有:mpstat,vmstat,top。
1.mpstat
mpstat是 Multiprocessor Statistics的缩写,是实时系统监控工具。其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中。在多CPUs系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。下面只介绍 mpstat与CPU相关的参数,mpstat的语法如下:
mpstat [-P {cpu|ALL}] [internal [count]]
参数的含义如下:
当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段的平均信息。与CPU有关的输出的含义如下:
CPU总的工作时间:total_cur = user + system + nice + idle + iowait + irq + softirq
total_pre = pre_user + pre_system + pre_nice + pre_idle + pre_iowait + pre_irq + pre_softirq
user = user_cur – user_pre
total = total_cur - total_pre
其中_cur 表示当前值,_pre表示interval时间前的值。上表中的所有值可取到两位小数点。
范例1 average mode (粗略信息)
当mpstat不带参数时,输出为从系统启动以来的平均值。
[work@jx-testing-ps1933.jx.baidu.com ~]$ mpstat
Linux 2.6.9-52bs (jx-testing-ps1933.jx.baidu.com) 07/30/2008
10:06:32 AM CPU %user %nice %system %iowait %irq %soft %idle intr/s
10:06:32 AM all 0.71 0.00 0.19 0.01 0.00 0.04 99.05 271.64
范例2 每2秒产生了4个处理器的统计数据报告
下面的命令可以每2秒产生了4个处理器的统计数据报告,一共产生三个interval 的信息,然后再给出这三个interval的平均信息。默认时,输出是按照CPU 号排序。第一个行给出了从系统引导以来的所有活跃数据。接下来每行对应一个处理器的活跃状态。
[work@jx-testing-ps1933.jx.baidu.com ~]$ mpstat -P ALL 2 3
Linux 2.6.9-52bs (jx-testing-ps1933.jx.baidu.com) 07/30/2008
10:11:04 AM CPU %user %nice %system %iowait %irq %soft %idle intr/s
10:11:06 AM all 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1013.13
10:11:06 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 100.00 253.54
10:11:06 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 100.00 252.53
10:11:06 AM 2 0.00 0.00 0.00 0.00 0.00 0.00 100.00 254.55
10:11:06 AM 3 0.00 0.00 0.00 0.00 0.00 0.00 100.00 252.53
10:11:06 AM CPU %user %nice %system %iowait %irq %soft %idle intr/s
10:11:08 AM all 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1015.15
10:11:08 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 100.00 252.53
10:11:08 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 100.00 253.03
10:11:08 AM 2 0.00 0.00 0.00 0.00 0.00 0.00 99.49 257.58
10:11:08 AM 3 0.00 0.00 0.00 0.00 0.00 0.00 100.00 252.53
10:11:08 AM CPU %user %nice %system %iowait %irq %soft %idle intr/s
10:11:10 AM all 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1016.16
10:11:10 AM 0 0.00 0.00 0.00 0.00 0.00 0.00 100.00 252.53
10:11:10 AM 1 0.00 0.00 0.00 0.00 0.00 0.00 100.00 252.53
10:11:10 AM 2 0.00 0.00 0.00 0.00 0.00 0.00 100.00 258.08
10:11:10 AM 3 0.00 0.00 0.00 0.00 0.00 0.00 100.00 252.53
Average: CPU %user %nice %system %iowait %irq %soft %idle intr/s
Average: all 0.00 0.00 0.00 0.00 0.00 0.00 100.00 1014.81
Average: 0 0.00 0.00 0.00 0.00 0.00 0.00 100.00 252.86
Average: 1 0.00 0.00 0.00 0.00 0.00 0.00 100.00 252.69
Average: 2 0.00 0.00 0.00 0.00 0.00 0.00 99.83 256.73
Average: 3 0.00 0.00 0.00 0.00 0.00 0.00 100.00 252.53
2.vmstat
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写, 是实时系统监控工具。该命令通过使用knlist子程序和/dev/kmen伪设备驱动器访问这些数据,输出信息直接打印在屏幕。vmstat反馈的与CPU相关的信息包括:
(1)多少任务在运行
(2)CPU使用的情况
(3)CPU收到多少中断
(4)发生多少上下文切换
下面只介绍 Vmstat与CPU相关的参数
vmstat的语法如下:
vmstat [delay [count]]
参数的含义如下:
当没有参数时,vmstat则显示系统启动以后所有信息的平均值。有delay时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个delay时间段的平均信息。当系统有多个CPU时,输出为所有CPU的平均值。
total_cur = user + system + nice + idle + iowait + irq + softirq
total_pre = pre_user + pre_system + pre_nice + pre_idle + pre_iowait + pre_irq + pre_softirq
total = total_cur - total_pre
3.iostat
iostat [-t] [-c] [interval [count]]
参数的含义如下:
当没有参数时,iostat则显示系统启动以后所有信息的平均值。与CPU有关的输出的含义
total_cur = user + system + nice + idle + iowait + irq + softirq
total_pre = pre_user + pre_system + pre_nice + pre_idle + pre_iowait + pre_irq + pre_softirq
total = total_cur - total_pre
有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,输出为前一个interval时间段的平均信息。
示例1
[work@jx-testing-ps1933.jx.baidu.com ~]$ iostat -c 1
Linux 2.6.9-52bs (jx-testing-ps1933.jx.baidu.com) 07/30/2008
avg-cpu: %user %nice %sys %iowait %idle
0.71 0.00 0.22 0.01 99.05
avg-cpu: %user %nice %sys %iowait %idle
0.00 0.00 0.00 0.00 100.00
avg-cpu: %user %nice %sys %iowait %idle
0.00 0.00 0.00 0.00 100.00
4.sar
sar是System Activity Reporter(系统活跃情况报告)的缩写。顾名思义,sar工具将对系统当前的状态进行采样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统采样,获得大量的采样数据;采样数据和分析的结果都可以存入文件,所需的负载很小。这些是检查历史数据和一些近来的系统事件。sar 用于检查的性能数据类似于vmstat, mpstat和 iostat的显示。 sar的数据是一段时间保存的内容,因此可以察看过去的信息。 lastcomm可以现在系统最近被执行的命令。这些可以用在系统审计中。sar可以在*BSD和Linux中找到,它给用户在系统审计中更多的选项来收集信息。
在反馈CPU整体信息方面,sar 反馈的与CPU相关的信息包括:
(1)多少任务在运行
(2)CPU使用的情况
(3)CPU收到多少中断
(4)发生多少上下文切换
sar的语法如下:
sar [-options] [interval [count]]
其中,internal是两次采样的间隔时间;count是指采样的次数;与CPU相关的options有:
参数的含义如下:
范例
首先在后台运行一个创建2GB文件的任务,然后输入:“sar -c -q -w 3 2”,表示每3秒采样一次,采样两次,可以看到系统有58个任务,但是在10时47分01秒时有一个任务在运行,在下一次采样10时47分04秒时,没有任务在运行。
[work@jx-testing-ps1933.jx.baidu.com ~]$ dd if=/dev/zero of=./1.img bs=2048 count=1000000&
[1] 22332
[work@jx-testing-ps1933.jx.baidu.com ~]$ sar -c -q -w -I SUM 3 2
Linux 2.6.9-52bs (jx-testing-ps1933.jx.baidu.com) 07/30/2008
1000000+0 records in
1000000+0 records out
10:46:58 AM proc/s
10:47:01 AM 0.00
10:46:58 AM cswch/s
10:47:01 AM 166.44
10:46:58 AM INTR intr/s
10:47:01 AM sum 1172.15
10:46:58 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
10:47:01 AM 1 58 0.04 0.01 0.00
10:47:01 AM proc/s
10:47:04 AM 0.00
10:47:01 AM cswch/s
10:47:04 AM 57.91
10:47:01 AM INTR intr/s
10:47:04 AM sum 1142.09
10:47:01 AM runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
10:47:04 AM 0 58 0.11 0.03 0.01
Average: proc/s
Average: 0.00
Average: cswch/s
Average: 112.27
Average: INTR intr/s
Average: sum 1157.14
Average: runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
Average: 0 58 0.07 0.02 0.01
与CPU有关的输出的含义
下面输入命令“sar 3 2”,表示每隔3秒显示CPU的状态,共显示2次。此时创建2GB文件的任务还在后台进行。
[work@jx-testing-ps1933.jx.baidu.com ~]$ sar 3 2
Linux 2.6.9-52bs (jx-testing-ps1933.jx.baidu.com) 07/30/2008
1000000+0 records in
1000000+0 records out
10:59:22 AM CPU %user %nice %system %iowait %idle
10:59:25 AM all 0.76 0.00 18.01 29.46 51.77
10:59:28 AM all 0.00 0.00 1.69 19.81 78.50
Average: all 0.38 0.00 9.86 24.64 65.12
与CPU有关的输出的含义
MEMORY
首先说说虚拟内存和物理内存:
虚拟内存就是采用硬盘来对物理内存进行扩展,将暂时不用的内存页写到硬盘上而腾出更多的物理内存让有需要的进程来用。当这些内存页需要用的时候在从硬盘读回内存。这一切对于用户来说是透明的。通常在Linux系统说,虚拟内存就是swap分区。在X86系统上虚拟内存被分为大小为4K的页。
每一个进程启动时都会向系统申请虚拟内存(VSZ),内核同意或者拒就请求。当程序真正用到内存时,系统就它映射到物理内存。RSS表示程序所占的物理内存的大小。用ps命令我们可以看到进程占用的VSZ和RSS。
[work@jx-testing-ps1933.jx.baidu.com ~]$ ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 4752 544 ? S 2007 0:01 init [3]
root 2 0.0 0.0 0 0 ? S 2007 0:22 [migration/0]
root 3 0.0 0.0 0 0 ? SN 2007 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 2007 0:20 [migration/1]
root 5 0.0 0.0 0 0 ? SN 2007 0:00 [ksoftirqd/1]
root 6 0.0 0.0 0 0 ? S 2007 0:18 [migration/2]
root 7 0.0 0.0 0 0 ? SN 2007 0:00 [ksoftirqd/2]
root 8 0.0 0.0 0 0 ? S 2007 0:12 [migration/3]
root 9 0.0 0.0 0 0 ? SN 2007 0:00 [ksoftirqd/3]
在命令行使用“Free”命令可以监控内存使用情况
[work@tc-testing-ps5006.tc.baidu.com ~]$ free
total used free shared buffers cached
Mem: 8165816 8145048 20768 0 22920 5840236
-/+ buffers/cache: 2281892 5883924
Swap: 1024056 2316 1021740
输出的含义
在缺省的状态下,free命令以千字节(也就是1024字节为单位)来显示内存使用情况。可以使用—h参数以字节为单位显示内存使用情况,或者可以使用—m参数以兆字节为单位显示内存使用情况。还可以通过—s参数使用命令来不间断地监视内存使用情况。
使甩vmstat命令监视虚拟内存使用情况
[work@jx-testing-ps1933.jx.baidu.com ~]$ ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 4752 544 ? S 2007 0:01 init [3]
root 2 0.0 0.0 0 0 ? S 2007 0:22 [migration/0]
root 3 0.0 0.0 0 0 ? SN 2007 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S 2007 0:20 [migration/1]
root 5 0.0 0.0 0 0 ? SN 2007 0:00 [ksoftirqd/1]
root 6 0.0 0.0 0 0 ? S 2007 0:18 [migration/2]
root 7 0.0 0.0 0 0 ? SN 2007 0:00 [ksoftirqd/2]
root 8 0.0 0.0 0 0 ? S 2007 0:12 [migration/3]
root 9 0.0 0.0 0 0 ? SN 2007 0:00 [ksoftirqd/3]
与内存和IO相关的参数含义
IO
监控IO的常用命令为iostat
[work@jx-testing-ps1933.jx.baidu.com ~]$ iostat -x
Linux 2.6.9-52bs (jx-testing-ps1933.jx.baidu.com) 07/30/2008
avg-cpu: %user %nice %sys %iowait %idle
0.71 0.00 0.22 0.01 99.05
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.01 0.26 0.40 1.01 50.25 152.31 25.12 76.15 144.46 0.02 12.24 0.65 0.09
io相关的参数含义
NETWORK
网络是所有子系统中最难监控的了。首先是由于网络是抽象的,更重要的是许多影响网络的因素并不在我们的控制范围之内。这些因素包括,延迟、冲突、阻塞等等。
由于网络监控中,需要查看许多设备的状态和参数,需要root权限才可以,所以就不在这里进行介绍了。
LINUX进程内存占用查看方法
(1)top
可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:
$ top -u oracle
(2)pmap
可以根据进程查看进程相关信息占用的内存情况,(进程号可以通过ps查看)如下所示:
$ pmap -d 14596
(3)ps
如下例所示:
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' 其中rsz是是实际内存
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle | sort -nrk5
其中rsz为实际内存,上例实现按内存排序,由大到小
- 系统性能监控--linux top命令详解
- 系统性能监控--linux top命令详解
- 系统性能监控--linux top命令详解
- 系统性能监控--linux top命令详解
- 系统性能监控--linux top命令详解
- Linux 系统性能监控命令详解
- Linux系统性能监控命令详解
- Linux系统性能监控详解
- Linux系统整体性能监控工具详解
- Linux系统整体性能监控工具详解
- Linux系统整体性能监控工具详解
- Linux系统整体性能监控工具详解
- LR监控Linux系统性能计数器详解
- LR监控Linux系统性能计数器详解
- LR监控Linux系统性能计数器详解
- LR监控Linux系统性能计数器详解
- linux系统监控 sar命令详解
- Linux 系统监控负载top命令详解
- 奕新集团--RAC环境后续
- 标准CSV解析
- Android四大组件之:Activity组件
- Source Insight 有用设置配置
- Activity与fragment之间交互
- Linux 系统性能监控命令详解
- maven之伺服仓库
- 【深度学习介绍系列之三】——十个值得一试的开源深度学习框架
- PHP 删除数组第一个元素和最后一个元素
- 奕新集团---单实例GG环境搭建
- 关于学科的疑惑
- socket http文件下载器c语言实现
- log4net记录日志
- 总结linux下tomcat修改端口失败的原因