发布新日志

  • Mathematics Functions

    2012-06-05 11:45:02

    Mathematics functions allow you to perform. mathematical operations. Expand the category to view a list of the available functions.

     

    Function Name

    Description

    floor

    Gets the largest integral value that is less than x.

    rand

    Gets a random integer between 0 and RAND_MAX.

    sqrt

    Computes the square root of x.

    srand

    Seeds the pseudo-random number generator.

     

     

       例子:

      double sqrt(double x); //开平方根需要事先声明

        lr_output_message ("Square root of 9 = %f\n", sqrt(9));

        lr_output_message ("Square root of 8 = %f\n", sqrt(8));

        lr_output_message ("Square root of -8 = %f\n", sqrt(-8));

     

        例子:

        //调用rand之前先调用srand

        srand(time(NULL));

        //返回数值范围是0-RAND_MAX伪随机整数

        lr_output_message ("A number between (0,100): %d\n", rand() % 100);

        lr_output_message ("A number between (20,30): %d\n", rand() % 10+20);

        //调用rand之前先调用srand

             //返回数值范围是0-RAND_MAX伪随机整数

        srand(time(NULL));

        //返回数值范围是0-RAND_MAX伪随机整数0100

        lr_output_message

            ("A number between (0,100): %d\n", rand() % 100);

     

       例子:

        double floor(double x); //显示声明

             //整数部分取整,小数部分为零

        lr_output_message ("floor of 2.3 is %.1lf\n", floor(2.3));

        lr_output_message ("floor of 3.8 is %.1lf\n", floor(3.8));

             //负数往小取负整数

        lr_output_message ("floor of -2.3 is %.1lf\n", floor(-2.3));

        lr_output_message ("floor of -3.8 is %.1lf\n", floor(-3.8));

     

     

     

     

  • Linux性能评测工具nmon

    2011-04-17 22:27:07

    1. nmon概述
    1.1. 概述

    nmon是收集AIX或Linux主机的性能数据并分析的工具,使用简单易用。主要有两个,一个是nmon采集数据的工具,一般名称为nmon_**,例如 nmon_aix5.3,另一个是分析结果的工具,它是一个excel的文件,名称为:nmon analyser v33A.xls。

    nmon在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新。还可以将相同的数据捕获到一个文本文件,便于以后对报告进行分析和绘制图形。

    nmon_analyser 工具以 NMON 性能工具生成的文件作为输入,然后将它们转换为 Microsoft Excel 电子表格,并自动地生成相应的图形。

    nmon 工具可以为 AIX 和 Linux 性能专家提供监视和分析性能数据的功能,其中包括:

    l CPU 使用率

    l 内存使用情况

    l 内核统计信息和运行队列信息

    l 磁盘 I/O 速度、传输和读/写比率

    l 文件系统中的可用空间

    l 磁盘适配器

    l 网络 I/O 速度、传输和读/写比率

    l 页面空间和页面速度

    l 消耗资源最多的进程

    l 计算机详细信息和资源

    IBM 没有提供对该工具的正式支持,并且您在使用它的时候必须自己承担相应的风险,但是您可以从中获得大量有价值的性能统计信息。其中,nmon for linux版本已经在2009年7月27日开放源码。

    1.2. 适用范围

    本文档为使用nmon作为性能测试中监控linux服务器的应用,提供使用规范和帮助。

    1.3. 词汇表

    词汇
       

    解释

    Nmon
       

    性能数据收集分析工具

    Nmon analyser
       

    性能数据分析工具,excel文件

    nmon_x86_sles10
       

    Nmon在x86_sles10下二进制执行文件

    1.4. 参考资料

    Nmon在IBM的官方网站

    http://www.ibm.com/developerworks/wikis/display/WikiPtype/nmon

    nmon for linux的官方网站

    http://nmon.sourceforge.net/pmwiki.php

    文章一:《nmon 性能:分析 AIX 和 Linux 性能的免费工具》

    http://www.ibm.com/developerworks/cn/aix/library/analyze_aix/

    文章二:《nmon analyser——生成 AIX 性能报告的免费工具》

    http://www.ibm.com/developerworks/cn/aix/library/nmon_analyser/index.html:

    1.5. 获取该工具

    下载nmon工具的可执行文件nmon_x86_sles10。

    http://nmon.sourceforge.net/pmwiki.php?n=Site.Download

    也可以下载源码自己编译特定的版本。(推荐这个)

    http://nmon.sourceforge.net/pmwiki.php?n=Site.CompilingNmon

    下载nmon Analyser V3.3

    http://www.ibm.com/developerworks/wikis/display/Wikiptype/nmonanalyser

    下载nmon Consolidator

    http://www.ibm.com/developerworks/wikis/display/WikiPtype/nmonconsolidator

    ibm的其他性能测试工具

    http://www.ibm.com/developerworks/wikis/display/WikiPtype/Performance+Other+Tools

    2. nmon
    2.1. 安装

    该工具是一个独立的二进制文件(不同的 AIX 或 Linux 版本中该文件也有所不同)。安装过程非常简单:

    1. 将 nmon_x86_sles10文件复制到计算机,rz—>在弹出框选择nmon_x86_sles10。

    2. 修改nmon_x86_sles10的文件权限,chmod 777 ./nmon_x86_sles10

    3. 要启动 nmon 工具,输入 ./ nmon_x86_sles10。
    2.2. 运行

    Nmon可以交互式运行

    l 启动该工具 ./ nmon_x86_sles10

    l 使用单键命令来查看您所需要的数据。例如,要获取 CPU、内存和磁盘统计信息,启动 nmon 并输入: c m d

    l 获取相关的帮助信息,按 h 键。

    使用下面这些键来切换显示状态:

    c = CPU l = CPU Long-term  - = Faster screen updates  

    m = Memory j = Filesystems + = Slower screen updates 

    d = Disks n = Network V = Virtual Memory

    r = Resource N = NFS v = Verbose hints

    k = kernel t = Top-processes . = only busy disks/procs

    h = more options q = Quit   
    2.3. 捕获数据到文件

    捕获数据到文件,只要运行带 -f 标志的 nmon 命令。执行nmon –f ***后,nmon 将转为后台运行。要查看该进程是否仍在运行,可以输入: ps -ef | grep nmon。

    示例:

    每1秒捕获数据快照,捕获20次

    nmon –f -s 1 -c 20

    每30秒捕获数据快照,捕获120次,包含进程信息

    nmon –ft -s 30 -c 120

    命令将在当前目录中创建输出文件,其名称为: <hostname>_date_time.nmon。该文件采用逗号分隔值 (CSV) 的格式,并且可以将其直接导入到电子表格中,可进行分析和绘制图形

       3. nmon_analyser

    nmon_analyser 工具以 NMON 性能工具生成的文件作为输入,然后将它们转换为 Microsoft Excel 电子表格,并自动地生成相应的图形。

    使用wps未能正确执行脚本生成*.xls文件。建议Excel?? 2000 或更高版本,必须在打开nmon_analyser选择启用宏。

    nmon_analyser 工具设计用于最新版本的 nmon,但出于向后兼容性的考虑,也使用旧版本对其进行了测试。每当在对 nmon 进行更新时,同时也将对该工具进行更新.

    本文来自:http://blog.csdn.net/stanjiang2010/archive/2010/06/08/5655150.aspx

    安装下载:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download

  • LoadRunner自带飞机订票系统脚本

    2010-05-22 23:02:58

    这个脚本中我加了一些Transaction语句和Message输出语句,参数化了部分数据,运行前请确保Flight查询页面无记录项。

    只需要在File中选择Zip Operation下的Import from zip file导入即可

     

  • LoadRunner工具和业务

    2010-05-20 22:13:49

        Loadrunner无疑是一个强大有力的压力测试工具。它的脚本可以录制生成,自动关联;测试场景可以面向指标,多方监控;测试结果图表显示,拆分组合。但loadrunner它本身是个工具,那么是否能够找到性能瓶颈就取决于使用工具的人,而不是工具本身。要做一个成功的性能测试,仅读懂和精通了loadrunner的使用手册是不够的,还需要对被测软件系统的方方面面都要有了解,比如软件体系构架,网络拓扑,业务等知识。有一个比喻很是形象,这就如同一个技艺高超的木匠,并不是因为他背熟了凿子,锤子的说明书,而是他能结合木材的质地和尺寸,用凿子和锤子这些工具做出一把精巧的椅子来。

       loadrunner VUGen生成脚本,脚本的生成方式就两种,一种是自写或嵌入源代码,一种是录制生成。有人认为手写的脚本更优,可读性好,流程清晰,还可建立脚本库统一管理。但我认为并不绝对,对于项目性的录制的方式更适合,成本是第一考虑的因素。另一方面,录制的脚本搭配业务系统模块的划分及测试数据的构造使得脚本的开发周期更短,更为灵活。脚本开发难度也更低点。提倡手写脚本者可能认为录制生成的代码大多没有维护的价值,属于现炒现卖。我认为能达到性能测试目标,现炒现卖又如何呢?以业务知识和逻辑为主,辅以RoadRunner工具功能模拟真实业务场景才是性能测试的正确方向,而不是追求脚本的复杂度和漂亮度,实用性才是王道!

       脚本开发流程,推荐步骤如下,摘自loadrunner 帮助文档VuGen中。遵循的原则是单用户单循环到多用户多循环的脚本增强过程,主要涉及的是参数化的部分。

    1. 确认在VUSUSI(单用户单循环次数single user & single iteration
    2.
    确认在VUSUMI(单用户多循环次数single user & multi iteration

    3.
    确认在controllerMUSI(多用户单循环次数multi user & single iteration

    4.
    确认在controllerMUMI(多用户多循环次数 multi user & multi iteration

      场景设置,这里着重考虑得还是真实的业务场景。看到有个比喻很是生动。脚本像演员,场景就像表演的舞台,而测试工程师是导演,多少个演员,怎么在舞台上演出,都由导演说了算,而剧情又不能离谱,脱离现实,否则就要砸锅了。注意,导演的职责不光是确保演出能顺利结束,而且还要同时观察和收集观众的反馈信息,以确认这次演出是否成功。

       结果分析包含两个方面,loadrunner 生成的数据结果分析和服务器后台资源监控,相辅相成,互为验证!

  • Concurrent Group函数

    2010-05-18 22:38:44

    Concurrent Group就是并发组的函数

    在URL-based的录制方式下,每条从客户端发出的请求录制成一条语句,一条语句只建立一个到服务器的连接,web_concurrent_start和web_concurrent_end函数模拟了LoadRunner在URL-based下的工作方式,而非HTML-based模式。

    HTML-based支持web_url,web_link,web_image,web_submit_form

    URL-based支持web_url,web_submit_data

    那什么是“并发”?按照我的理解就是同时进行,比如一个页面含有web_url,web_submit_data等可用函数,在所有数据都录入完成之后,点击提交,这个提交的动作我认为可以理解为“并发”。

    例如:

    web_concurrent_start(NULL);

        web_add_header(...); 

        web_url(..., "URL=http://...url1", ...);

        web_add_header(...);

        web_add_header(...);

        web_url(..., "URL=http://...url2", ...);

    ...

    web_concurrent_end(NULL);

    语法说明:

    web_concurrent_start 语法: int web_concurrent_start ( [char * ConcurrentGroupName,] NULL );
    参数: ConcurrentGroupName:可选的,并发组的标识符。
    NULL:参数列表结束的标记符。
    返回值 整型。返回LR_PASS (0)表示成功,返回LR_FAIL (1)表示失败。


    说明 web_concurrent_start函数是并发组开始的标记。组中所有的函数是并发执行的。并发组的结束web_concurrent_end 函数。在并发组中,可以包含的函数有:web_url、web_submit_data、web_custom_request、web_create_html_param、web_create_html_param_ex、web_reg_save_param、web_add_header。


    在并发组中的函数不是立即执行的。在并发组开始时,所有的函数首先被记录下来,当并发组结束时,所有的函数并发执行。
    所有的Web 用户,HTTP模式下的WAP用户持本函数。运行在Wireless Session Protocol(WSP)回放模式下的WAP虚拟用户,不支持本函数。
    web_concurrent_end 语法: int web_concurrent_end ( reserved );
    参数: reserved:保留的供扩展的字段。
    返回值 整型。返回LR_PASS (0)表示成功,返回LR_FAIL (1)表示失败。
    说明 web_concurrent_end,并发组结束的标记。脚本执行时,碰到 web_concurrent_end函数时,开始并发执行所有记录的函数。
    在并发组中的函数不是立即执行的。在并发组开始时,所有的函数首先被记录下来,当并发组结束时,所有的函数并发执行。
    可以并发执行的函数的个数是有限制的,使用运行时设置-Netword
    标签页的Concurrent Connection来设置。

  • Linux性能监控工具

    2010-05-16 01:24:22

    工具介绍-vmstat
    vmstat是一个很全面的性能分析工具,可以观察到系统的进程状态、内存使用、虚拟内存使用、磁盘的IO、中断、上下间切换、CPU使用等。系统性能分析工具中,我使用最多的是这个,除了 sysstat 工具包外,这个工具能查看的系统资源最多.主要说明一下这个命令显示出的部分数据代表的含义,和它反映出系统相关资源的状况。输出内容共有 6 类,分别说明如下。

    Procs
    r:
    运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1)
    b:
    处于不可中断状态的进程数,常见的情况是由IO引起的

    Memory
    swpd: 切换到交换内存上的内存(默认以KB为单位)
    如果 swpd 的值不为0,或者还比较大,比如超过100M了,但是 si, so 的值长期为 0,这种情况我们可以不用担心,不会影响系统性能。
    free: 空闲的物理内存
    buff: 作为buffer cache的内存,对块设备的读写进行缓冲
    cache: 作为page cache的内存, 文件系统的cache
    如果 cache 的值大的时候,说明cache住的文件数多,如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi 会非常小。

    Swap
    si: 交换内存使用,由磁盘调入内存
    so: 交换内存使用,由内存调入磁盘
    内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。磁盘IO和CPU资源都会被消耗。
    我发现有些朋友看到空闲内存(free)很少或接近于0时,就认为内存不够用了,实际上不能光看这一点的,还要结合si,so,如果free很少,但是si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

    Io
    bi: 从块设备读入的数据总量(读磁盘) (KB/s),
    bo: 写入到块设备的数据总理(写磁盘) (KB/s)
    随机磁盘读写的时候,这2个 值越大(如超出1M),能看到CPU在IO等待的值也会越大

    System
    in: 每秒产生的中断次数
    cs: 每秒产生的上下文切换次数
    上面这2个值越大,会看到由内核消耗的CPU时间会越多

    Cpu
    us: 用户进程消耗的CPU时间百分比
    us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了(比如 PHP/Perl)
    sy: 内核进程消耗的CPU时间百分比
    sy 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。
    wa: IO等待消耗的CPU时间百分比
    wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。
    id: CPU处在空闲状态时间百分比

    情景分析
    这个vmstat的输出那些信息值得关注?
    Procs r: 运行的进程比较多,系统很繁忙
    Io bo: 磁盘写的数据量稍大,如果是大文件的写,10M以内基本不用担心,如果是小文件写2M以内基本正常
    Cpu us: 持续大于50,服务高峰期可以接受
    Cpu wa: 稍微有些高
    Cpu id:持续小于50,服务高峰期可以接受

    工具介绍-top
    这个命令可以查看系统中运行的进程的状况,CPU使用状况,系统负载,内存使用等。它是检查系统进程运行状况最方便的工具了,它默认显示部分活动的进程,并且按照进程使用CPU的多少排序。它可以显示全部CPU的使用状况,也可以显示每个进程都运行在那个CPU上面。
    我习惯使用这个命令查看那些进程或者那类进程占用CPU和内存资源最多,以此迅速定位存在性能问题的进程,以及运行异常的进程。

    用 top 看到的内存的说明(Mem的第2行) actv active 活跃的内存页,正在映射给进程使用
    in_d
    inactive_dirty 非活跃的内存页,并且内存数据被修改,需要写回磁盘
    in_c
    inactive_clean 非活跃的内存页,干净的数据,可以被重新分配使用

    问题?
    in_d 和 in_c 以及 cache, buffer 的内存有何不同?
    我的理解:
    actv, in_d, in_c 是 VM 中对内存的管理组织形式,buffer是块设备读写缓冲,cache是文件系统缓存

    用 top 看到的进程所处的几种状态(STAT列)。
    D 不可中断休眠,通常是 IO 操作所处的状态
    R 正在执行的或者处在等待执行的进程队列中
    S 休眠中
    T 暂停刮起的(比如Ctrl+Z),也可能是被 strace 命令调用中的状态
    Z 僵尸进程,进程执行完成,但由于其父进程没有销毁该进程,而被init进程接管进行销毁。
    W 没有使用物理内存,所占用的物理内存被切换到交换内存
    < 高优先级的进程
    N 低优先级
    有时候一个进程会有多个状态的标志,比如SWN,SW

    情景分析
    前面两次top的输出那些信息值得关注?
    Load average: 系统负载有降低的趋势,但仍然较高
    Running: 有3个进程正在运行,正常,因为系统有4颗CPU
    Cpu user: 接近200%了,有些大,服务高峰时可以接受
    Cpu idle: 小于200%了,需要注意
    Cpu iowait:接近200%了,很大

    工具介绍-free
    free命令显示系统内存的使用状况(物理内存和交换内存)
    通过这个命令我们可以看到系统进程实际使用的物理内存,buffer和cache使用的物理内存

    free命令输出的第二行(Mem)
    这行分别显示了物理内存的总量(total)、已使用的(used)、空闲的(free)、共享的(shared)、buffer、cache的内存。

    free命令输出的第三行(-/+ buffers/cache)
    这行最容易让人迷惑。
    它显示的第一个值(used这一列)是这样得来的: Mem行used列 - Mem行buffers列 -Mem行cached列
    它显示的第二个值(free这一列)是这样得来的: Mem行free列 + Mem行buffers列 + Mem行cached列

    free命令输出的第四行(Swap)  这行显示交换内存的总量、已使用量、空闲量
    通常 buffer 和 cache 可以使用的内存空间越大,系统 IO 和 文件系统访问的性能越好。

    工具介绍-uptime
    最简便的查看系统负载的工具,系统负载越小,系统运行状况越好,对于系统负载处在什么范围内比较合适,我想是没有定论的,我介绍一下我的习惯。
    我一般以15分钟负载的值来评估系统的健康度,以10为这个值的临界点,如果系统负载持续高于10,通常是存在某个资源长期紧张的原因,我们需要重视,并且得开始着手解决这个问题了。
    如果偶尔高于10,应该开始留意它出现的频度,这往往是前面一种状况的先兆。


    工具介绍- sysstat工具包
    这个工具包提供了著名的 sar 命令,还有非常实用的 iostat, mpstat, sa1, sa2 等命令。  
    这几个命令可实现前面提及工具大多数的功能,除此之外,还能查看系统的网络带宽状况、每块磁盘使用状况、每个磁盘分区的使用状况等。

    sa1, sa2 这2个命令以配置在cron中定期执行,把系统当时的运行状况信息保存在磁盘上,每日存在一个文件中,因为有这个功能,因此 sar 工具不单是一个性能分析的工具,这2个命令的使用说明如下:
    sa1 配置在cron中可以实现系统状态收集,比如10分钟运行一次
    sa2 配置在cron中可以实现每日状态的汇总报告
    你可以在系统crontab中添加如下配置:
    */10 * * * * root /usr/lib/sa/sa1 1 1
    53 23 * * * root /usr/lib/sa/sa2 -A

    工具介绍-其他
    Iozone
    IO和文件系统性能测试的工具,我也习惯用它作存储系统的性能分析。
    Strace
    如果我们知道一个程序执行效率很差,需要分析这个程序执行时的某个阶段或者某个系统调用的性能状况,可以使用 strace 命令。

Open Toolbar