发布新日志

  • 磁盘性能指标--IOPS 理论-zt

    2015-03-16 14:40:07

    转自:http://elf8848.iteye.com/blog/1731274

    机械硬盘的连续读写性很好, 但随机读写性能很差。这是因为磁头移动至正确的磁道上需要时间,随机读写时,磁头不停的移动,时间都花在了磁头寻道上,所以性能不高。  如下图:

    在存储小文件(图片)、OLTP数据库应用时,随机读写性能(IOPS)是最重要指标。

    学习它,有助于我们分析存储系统的性能互瓶颈。
    下面我们来认识随机读写性能指标--IOPS(每秒的输入输出次数)。

     


    磁盘性能指标--IOPS
    ----------------------------------------------------------
            IOPS (Input/Output Per Second)即每秒的输入输出量(或读写次数),是衡量磁盘性能的主要指标之一。IOPS是指单位时间内系统能处理的I/O请求数量,一般以每秒处理的I/O请求数量为单位,I/O请求通常为读或写数据操作请求。

        随机读写频繁的应用,如小文件存储(图片)、OLTP数据库、邮件服务器,关注随机读写性能,IOPS是关键衡量指标。

        顺序读写频繁的应用,传输大量连续数据,如电视台的视频编辑,视频点播VOD(Video On Demand),关注连续读写性能。数据吞吐量是关键衡量指标。

    IOPS和数据吞吐量适用于不同的场合:
    读取10000个1KB文件,用时10秒  Throught(吞吐量)=1MB/s ,IOPS=1000  追求IOPS
    读取1个10MB文件,用时0.2秒  Throught(吞吐量)=50MB/s, IOPS=5  追求吞吐量

    磁盘服务时间
    --------------------------------------
    传统磁盘本质上一种机械装置,如FC, SAS, SATA磁盘,转速通常为5400/7200/10K/15K rpm不等。影响磁盘的关键因素是磁盘服务时间,即磁盘完成一个I/O请求所花费的时间,它由寻道时间、旋转延迟和数据传输时间三部分构成。

    寻道时间 Tseek是指将读写磁头移动至正确的磁道上所需要的时间。寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms。
    旋转延迟 Trotation是指盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间。旋转延迟取决于磁盘转速,通常使用磁盘旋转一周所需时间的1/2表示。比如,7200 rpm的磁盘平均旋转延迟大约为60*1000/7200/2 = 4.17ms,而转速为15000 rpm的磁盘其平均旋转延迟为2ms。
    数据传输时间 Ttransfer是指完成传输所请求的数据所需要的时间,它取决于数据传输率,其值等于数据大小除以数据传输率。目前IDE/ATA能达到133MB/s,SATA II可达到300MB/s的接口数据传输率,数据传输时间通常远小于前两部分消耗时间。简单计算时可忽略。

     

    常见磁盘平均物理寻道时间为:
    7200转/分的STAT硬盘平均物理寻道时间是9ms
    10000转/分的STAT硬盘平均物理寻道时间是6ms
    15000转/分的SAS硬盘平均物理寻道时间是4ms

     

    常见硬盘的旋转延迟时间为:

    7200   rpm的磁盘平均旋转延迟大约为60*1000/7200/2 = 4.17ms

    10000 rpm的磁盘平均旋转延迟大约为60*1000/10000/2 = 3ms,

    15000 rpm的磁盘其平均旋转延迟约为60*1000/15000/2 = 2ms。



    最大IOPS的理论计算方法
    --------------------------------------
    IOPS = 1000 ms/ (寻道时间 + 旋转延迟)。可以忽略数据传输时间。

    7200   rpm的磁盘 IOPS = 1000 / (9 + 4.17)  = 76 IOPS
    10000 rpm的磁盘IOPS = 1000 / (6+ 3) = 111 IOPS
    15000 rpm的磁盘IOPS = 1000 / (4 + 2) = 166 IOPS


    影响测试的因素
    -----------------------------------------
    实际测量中,IOPS数值会受到很多因素的影响,包括I/O负载特征(读写比例,顺序和随机,工作线程数,队列深度,数据记录大小)、系统配置、操作系统、磁盘驱动等等。因此对比测量磁盘IOPS时,必须在同样的测试基准下进行,即便如此也会产生一定的随机不确定性。


    队列深度说明 
    NCQ、SCSI TCQ、PATA TCQ和SATA TCQ技术解析 
    ----------------------------------------
        是一种命令排序技术,一把喂给设备更多的IO请求,让电梯算法和设备有机会来安排合并以及内部并行处理,提高总体效率。
    SCSI TCQ的队列深度支持256级
    ATA TCQ的队列深度支持32级 (需要8M以上的缓存)
    NCQ最高可以支持命令深度级数为32级,NCQ可以最多对32个命令指令进行排序。
        大多数的软件都是属于同步I/O软件,也就是说程序的一次I/O要等到上次I/O操作的完成后才进行,这样在硬盘中同时可能仅只有一个命令,也是无法发挥这个技术的优势,这时队列深度为1。
        随着Intel的超线程技术的普及和应用环境的多任务化,以及异步I/O软件的大量涌现。这项技术可以被应用到了,实际队列深度的增加代表着性能的提高。
    在测试时,队列深度为1是主要指标,大多数时候都参考1就可以。实际运行时队列深度也一般不会超过4.


    IOPS可细分为如下几个指标:
    -----------------------------------------
    数据量为n字节,队列深度为k时,随机读取的IOPS
    数据量为n字节,队列深度为k时,随机写入的IOPS


    IOPS的测试benchmark工具
    ------------------------------------------
             IOPS的测试benchmark工具主要有Iometer, IoZone, FIO等,可以综合用于测试磁盘在不同情形下的IOPS。对于应用系统,需要首先确定数据的负载特征,然后选择合理的IOPS指标进行测量和对比分析,据此选择合适的存储介质和软件系统。

  • 多浏览器兼容性测试-yc

    2011-06-22 11:43:22

    我们目前的项目,很多都要求支持多浏览器
    浏览器按内核,可以分为以下几大类:
    1)IE(IE6/IE7/IE8/IE9)及IE内核的浏览器(TT/傲游/世界之窗/360/sougou)
    2)Firefox(FF3.5/FF4)
    3)谷歌/safari/sougou

    测试某个功能对多浏览器的兼容时,不要支持10个,就10个一个个测过去,这样,测一个功能,就要花费很多的时间;
    如果测试一个浏览器要2分钟,那10个,就是20分钟了

    可以在:IE/FF/GOOGLE这三个类中,每个类挑一个,通常我的做法是:一个IE,一个FF,一个谷歌;
    先测试一遍,问题基本处理的差不多的时候,再去看别的浏览器,或者开发在修复BUG,你在等待时,看别的浏览器
    如,一个浏览器2分钟,2*3=6分钟,后面的等改的差不多时,再看就只要每个1分钟,6+7=13分钟,这样就节约时间了

    那三大类,每类挑一个测试,就可以发现那个功能里的90%的问题,其它10%得看不同浏览器的特殊处了;
    这样做的好处,我们可以在一开始最短的时间内,发现最多的问题
    这样,开发也比较有时间修复BUG

    另外,要注意:IE6/IE7/IE8/IE9/TT/傲游/世界之窗/360,虽然都是IE内核,但后面还是要认真些,再过一遍
    因为这些浏览器,都会有一些自己特别的地方,导致一些别的浏览器不会有的问题;
    一些JS上面的处理,还有一些样式上的处理都不一样;

    sougou浏览器在这里比较特殊,是采用IE和google使用的webkit两种内核隔合而成的;

     

    这个是个人在测试多浏览器兼容性上的一些经验;
    大家还有什么别的一些好方法,都共享下哈!

  • 性能测试操作流程-yc

    2009-09-18 13:16:41

    性能测试操作流程

     

    大家有什么看法或不同意见的,都可以说出来,共同进步啊!

     

    1、测试设计阶段

    1)了解被测系统的性能需求,定义测试目标和范围;

    2)了解系统的技术信息,如系统架构等;

    3)确定测试方案、进度安排,并制定测试计划;

    进度安排;

    测试模块;

    场景设置方案;

    需要收集的测试数据;

    4)同相关人员协商讨论测试方案;

    5)准备数据收集模板;

    不同项目的性能测试,需要收集的数据不同;

    针对性的制定一个模板,更符合需要;

     

    2、测试环境准备

    1)技术准备;

    选择性能测试工具;

    测试方案中涉及到的技术问题;

    测试数据的收集方案实现;如:如何监控系统资源等;

    2)搭建测试环境;

    3)创建初始数据;

    如虚拟用户使用的账号等;

     

    3、测试执行阶段

    1)录制脚本;

    2)调试脚本;

    3)执行场景;

    4)收集测试数据,并简单整理;

     

    4、测试分析阶段

    1)分析测试数据;

     

    5、提交测试报告

  • 性能测试学习流程-yc

    2009-09-18 13:08:47

    性能测试学习流程

     

    因部门成员反馈学习性能测试时:

    (1)常常没有方向感,不知道自己要做哪些事;

    (2)学习时,不知道哪些要先学,哪些后学;

    (3)当学到一定程度时,不知道还要学习哪些东西;

    希望能有一个总体流程或思路做参考,所以编写了如下内容;

    以下只是个人的一些想法,仅供参考,希望大家发表自己的看法,共同探讨,共同进步;

     

    1、准备知识

    1)什么是性能测试;

    2)为什么做性能测试;

    3)选择一款适合的工具;——推荐LR

     

    2LR的学习

    1)了解LR能够做些什么;

    2)了解LR整体流程,有个大概认识;

    选择协议——录制脚本——调试脚本——场景设置——运行场景——分析结果

    3)了解流程中的每一步应该怎么做;

    选择协议:了解几个常用协议,一个一个来学习;(目前最常用的是WEBHTTP协议;这个是重点学习对象,以后有时间时,再学习win socket协议及其它协议)主要还是根据自己公司的被测系统类型来选择;

    录制脚本:如何录制、录制时参数怎么配置等;

    调试脚本:运行时设置、集合点、事务、脚本参数化、关联等;

    场景设置:了解不同场景设置的区别;

    运行场景:如何查看运行日志,分析错误,各种监控器的使用(事务响应时间、系统资源等等)

    分析结果:对各种监控器监控的数据进行分析;(这个较多要靠个人经验,不同的项目有自己的特殊性,不能一概而论);

                      这个阶段,很考查个人知识的全面性;知识越全面,分析的越到位;

                      需要了解的知识:网络知识、操作系统知识、硬件知识、软件知识(WEB服务器配置、数据库知识、底层架构使用到的各软件)等等;

                      一开始我们只能做一个粗略的分析,后面再慢慢的积累经验;通常会由项目经理或系统配置管理人员来配合做结果分析;

    4)推荐一些资料:

    陈绍英的FLASH教程

    LoadRunner文档资料大全.chm

    LR 227个问题.CHM

    这三个是比较全面的学习资料;

    其它大部份为一些针对性的资料,根据当前学习的进度来选择查看;

     

    3、最最最重点的是:多操作

    有操作才会遇到各种各样的问题;解决问题是一种很好的积累经验的方法;

     

    遇到问题时:

    1)首先自己先尝试解决(这个就是一个摸索的过程,可以发现很多以前没注意到的东西);

    2)自己确实无法解决时(不要一个人闷着头在那想半天),网上查找资料;

    大部份你会遇到的问题,别人也会遇到,网上可能已有解决方案;

    查找的过程,也会学到很多东西;

    3)还是没解决的话,问身边的同事,朋友;吸收别人的经验;

     

    4、有一定的理论和实践基础后,可以考虑学习别的性能测试工具;

    LR不是万能的,单单靠它来实现所有的性能测试是不可能的;使用多了,会发现很多力不从心的时候;

    所以需要了解别的性能测试工具,不同的时候使用不同的工具,选择适合的才是最好的;

     

     

Open Toolbar