......

LoadRunner压力测试时监控服务器Linux的资源情况(转)

上一篇 / 下一篇  2011-12-29 14:08:19

在进行负载测试(Load Test)是要监控服务器的CPU、内存、磁盘、网络的情况。如何监控Ubuntu的情况呢。

1、安装rstatd,sudo apt-get install rstatd,如果无法apt安装,可以下载安装。

2、启动rpc.rstatd

查看是否正常启动,用如下命令
rpcinfo -p

[root@localhost ~]# rpcinfo -p
program vers proto port
100000 2 tcp 111 portmapper
100000 2 udp 111 portmapper
100024 1 udp 676 status
100024 1 tcp 679 status
100001 3 udp 691 rstatd
100001 2 udp 691 rstatd
100001 1 udp 691 rstatd

3、在LoadRunner Controller的run界面中,添加System Resource Graphs下的Unix Resource,在Unix Resource图上右键Add Measurements,然后点击Add,填写ip如192.168.1.99,默认只有三个指标,在下面的Add中可以添加其他指标。

4、下面说一下各种指标的情况



CPU指标
Average load
上一分钟同时处于“就绪”状态的平均进程数,< CPU个数 * 核心数 * 0.7
CPU utilization
CPU 的使用时间百分比,如果在75%以上,则可以考虑换CPU了
Swap-in rate
正在交换的进程数
Swap-out rate
正在交换的进程数
Context switches rate
每秒钟在进程或线程之间的切换次数
System mode CPU utilization
在系统模式下使用 CPU 的时间百分比
User mode CPU utilization
在用户模式下使用 CPU 的时间百分比
Interrupt rate
每秒内的设备中断数

内存
Page-in rate
每秒钟读入到物理内存中的页数
Page-out rate
每秒钟写入页面文件和从物理内存中删除的页数
Paging rate
每秒钟读入物理内存或写入页面文件的页数,如果持续在几百,可能要加大内存了
LoadRunner采集的数据中,内存的使用情况是没有的,可以装sar,然后用sar来观察:
可以使用该命令sar -n DEV -u -r 3 120 > perform.log
这个命令3秒采样一次,共采样120次 360秒=6分钟,可以根据自己的需要调整 3 和 120 这两个值。perform.log是保存的文件名



磁盘
Collision rate
每秒钟在以太网上检测到的冲突数
Disk rate
磁盘传输速率

网络
Incoming packets error rate
接收以太网数据包时每秒钟接收到的错误数
Incoming packets rate
每秒钟传入的以太网数据包数
Outgoing packets errors rate
发送以太网数据包时每秒钟发送的错误数
Outgoing packets rate
每秒钟传出的以太网数据包数

pps是

以太网传输最小包长是64字节。包转发线速的衡量标准是以单位时间内发送64byte的数据包(最小包)的个数作为计算基准的。

对于千兆以太网来说,计算方法如下:
1000Mbps/((64B+8B+12B)×8bit)=1.488095pps
说明:当以太网帧为64Byte时,需考虑8Byte的前导符和12Byte的帧间隙的固定开销。
在以太网中,每个帧头都要加上了8个字节的前导符,前导符的作用在于告诉监听设备数据将要到来。然后,以太网中的每个帧之间都要有帧间隙,即每发完一个帧之后要等待一段时间再发另外一个帧,在以太网标准中规定最小是12个字节,然而帧间隙在实际应用中有可能会比12个字节要大,在这里我用了最小值。每个帧都要有20个字节的固定开销。(另外这20字节的信息是不能通过抓包软件抓下来的)
因此一个全双工线速的千兆以太网端口在转发64Byte包时的包转发率为1.488Mpps。

以下是常用以太网端口的包转发率:

1、万兆以太网:14.88Mpps
2、千兆以太网:1.488Mpps
3、百兆以太网:0.1488Mpps

4、十兆以太网:0.01488Mpps(14.88Kpps)


linux cpu相关性能指标

Run Queue Statistics
在linux中,process有两种状态:
1.runnable
2.blocked waiting for an event to complete
一个blocked状态的process可能在等待一个I/O操作获取的数据,或者是一个系统调用的结果
如 果一个process在runnable状态,这就意味着它将同其他runnable状态的process等待CPU时间,而不是立即获得CPU时间,一 个runnable状态的process不需要消耗CPU时间,只有当Linux调度进程从runnable队列中选择哪个process下次执行.当 process在runnable状态,当时等待CPU时间时,他们形成的等待队列称作Run Queue.Run Queue越大,表示等待的队列越长.
性能工具通常显示runnable processes的数目和blocked processes的数目.还有一个很常见的系统状态是load average,系统的load是指running和runnable process的总和.例如:如果有两个processes在running和有三个在等待运行(runnable),那么系统的load为五.load average是指在指定时间内load的平均值.一般load average显示的三个数字的时间分别为1分钟,五分钟和十五分钟.

Context Switches

大部分现在的CPU在同一时间只能运行一个process.虽然也有一些CPU,例如超线程技术的CPU,能实现同时运行超过一个process,linux把这种CPU看作多个单线程CPU.
linux内核不断的在不同process间切换,造成一个错觉,让人感觉一个单CPU同时处理多个任务.不同process之间的切换称作 Context Switch.当系统做Context Switch时,CPU保存所有old process的context信息并获得new process的所有context信息.Context信息包括大量的linux追踪每个process信息,尤其是一些资源:那些process正在 执行,被分配了哪些内存,它打开了那些文件,等等.切换Context会触发大量的信息移动,这是比较高的开销.如果可能的话尽量保持很小的 context switches.

为了尽可能的减小context switches,你首先需要知道它们是怎么产生的.首先,kernel调度触发context switches.为了保证每个process平等的共享CPU时间,kernel周期性中断running的process,如果合适,kernel调 度器会开始一个其他的process而不是让当前的process继续执行,每次的周期性中断或者定时中断都可能触发context switch.每秒定时中断的次数因不同架构和不同的kernel版本而不同.获取每秒中断次数的一个简单办法是通过监控 /proc/interrupts文件,看下面的例子:
root@localhost asm-i386]# cat /proc/interrupts | grep timer; sleep 10 ; cat /proc/interrupts | grep timer
0: 24060043 XT-PIC timer
0: 24070093 XT-PIC timer
上面可以看到在指定的时间内timer次数的变化,每秒产生的中断次数为1000次.如果你的context switch比timer中断大很多.那么context switch更多的可能是I/O请求或者其他长时间的系统调用(比如sleep)产生.当一个应用请求一个操作不能立即实现时,kernel开始 context switch操作:存入请求的process并且试着切换到其他runnable process.这将使得CPU保持工作状态.

Interrupts
其他方面,CPU接收硬件驱动发出的中断请求.这种中断通常被触发当一个驱动器有一个时间需要被kernel操作时.例如:如果一个磁盘控制器从磁盘上取 得了一个数据块和kernel需要读取使用这个块,那么磁盘控制器会触发一个中断.kernel接收每个中断,一个中断处理器运行如果这个中断被注册,否 则,这个中断被忽略.在系统中,中断处理器的优先级非常高,而且执行速度非常快.很多时候,有些中断处理并不需要很高的处理优先级,所以也有soft- interrupt handler.如果有很多的中断,kernel需要花费大量的时间去处理中断.可以检查/proc/interrupts能够知道中断发生在哪个CPU 上.

CPU Utilization
CPU Utilization,一个很直观的概念,在任意时间内,CPU有7个状态:
1.idle,表示CPU闲置并等待工作分配.
2.user,表示CPU在运行用户的进程
3.system,表示CPU在执行kernel工作
4.nice,表示CPU花费在被nice改变过优先级的process上的时间(注意:被nice命令改变优先级的process仅指那些nice值为 负的process.花费在被nice命令改变优先级的任务上的时间也将被计算在系统和用户时间内,因此整个时间加起来可能会超过百分之百)
5.iowait,表示CPU等待IO操作完成的时间
6.irq,表示CPU开销在响应硬中断上的时间
7.softirq,表示CPU开销在响应软中断上的时间.
我们一般用vmstat看到的都是四个状态:sy,us,id,wa,通过他和load avg结合,基本可以知道cpu的状态

大部分的性能工具用百分比表示CPU时间.当system时间占用很高的时候,你可以用"oprofile"工具发现时间都花费在哪里.当iowait很高的时候,你需要分析你的IO设备,比如磁盘,网卡.


TAG:

 

评分:0

我来说两句

Open Toolbar