一、IOmeter介绍

  Iometer是一款用于单系统和集群系统的I/O子系统度量(measurement)和特征化(characterization)工具,它是一个负载生成器(workloadgenerator),也是一个度量工具(measurement tool),可用于模拟任何程序或benchmark的磁盘或网络I/O操作,在单个或多个(联网)系统上生成并度量负载。

1.1 IOmeter组成

  Iometer由两个程序组成,Iometer和Dynamo。Iomter是控制程序/GUI,它告诉Dynamo需要做什么,收集数据结果并总结到一个输出文件。一次只应该运行一个Iometer,通常运行在服务器上。Dynamo是一个负载生成器,它没有GUI,在Iometer的命令下执行I/O操作并记录性能信息,然后返回数据给Iometer。一次可以运行多个Dynamo,通常是一个副本运行在服务器上,另一个副本运行在每一台客户端上。Dynamo是多线程的,每一个副本可以模拟多个客户端程序的工作(workload),每一个正在运行的Dynamo副本被称为是一个Manager,Dynamo中的每一个线程被称为worker。

1.2 IOmeter启动说明

  双击Iometer.exe运行Iometer,出现Iometer GUI(如下图所示),同时会在本地系统上启动Dynamo的一个副本。双击一个.icf设置文件、将icf或.txt文件拖拽到Iometer.exe也能启动Iometer,并且加载配置信息。命令行启动方式形如:c:\iometer myconfig.icf。如果需要在其他机器上启动Dynamo,将机器名作为Iometer的命令行参数,例如c:\dynamo IOServer。

磁盘IOPS测试指南_第1张图片

  如果Iometer和Dynamo在单个系统上运行,那么是不需要网络支持的,否则就需要配置TCP/IP网络。不需要在任何一台机器上启动多于一个的Dynamo的副本,要增加worker的数量,使用Iometer启动其他worker线程即可。

  蓝×××标的Targets代表物理驱动器(图中并没有物理驱动器),只有当物理驱动器上没有任何逻辑分区时才会被显示出来。黄×××标代表逻辑(已挂载,mounted)驱动器,只有当它们为可写(writable)时会被显示出来。黄×××标带有红色斜杠代表该驱动器在测试开始之前,需要先做准备(prepare)。单击选中一个或多个(shift)磁盘来做测试,被选中的磁盘将自动分发给Manager的worker。

  对逻辑驱动器的访问是通过对文件\iobw.tst的写入来完成的,如果该文件不存在,驱动器图标上会有一条红色斜杠,在测试开始之前,该文件会被创建并占满整个磁盘空间。

二、快速开始测试磁盘性能

  1、双击Iometer.exe,Iometer主窗口出现并自动运行一个Dynamo负载生成器。

  2、在Iometer窗口的左侧的拓扑面板点击一个Manager,你会在DiskTargets tab中看到可用的磁盘驱动器。

  3、在DiskTargets tab中,选择一个或多个磁盘

  4、切换到Access Specifications tab,在Global AccessSpecifications列表中双击“Default“,出现”Edit Access Specification“对话框。

  5、EditAccess Specification对话框告诉你磁盘将如何被访问,默认是2KB随机I/O,67%读+33%写,代表典型的数据库负载。你可以就使用默认设置或对其进行更改。点击OK关闭对话框。

  6、为了获得最大吞吐量(MB/s),尝试更改Transfer Request Size = 64KB,Percent Read/Write Distribution = 100% Read,PercentRandom/Sequential Distribution = 100% Sequential.

  7、为了获得最大的I/O速率(IOPS),尝试更改TransferRequest Size = 512Bytes,Percent Read/Write Distribution= 100% Read,Percent Random/Sequential Distribution =100% Sequential。

  8、切换到Results Display tab,设置Update Frequency = 10秒。

  9、点击StartTests按钮(绿色旗帜),一个标准的文件保存对话框出现,选择一个文件用以保存测试结果(默认是result.csv)

  10、10秒钟之后,第一个测试结果显示在Results Display tab并每隔10秒更新一次。点击每个bar左侧的chart可以选择你想要的显示结果,你也可以将一个worker或manager拖拽到一个barchart上来查看某一个worker或manager的结果。

  11、点击StopTest按钮(Stop标志),测试将停止,结果会被保存在results.csv文件中,这是一个逗号分隔的文本文件,可以用任何文本编辑器查看或导入电子表格。

三、测试计算机之间的网络性能

  1、在computer-a上,双击Iometer.exe

  2、在computer-b上,打开一个cmd并执行C:\dynamo computer-a

  3、在computer-a上,你将看到computer-b作为一个新的manager出现在Topology面板,点击它可以观察到其磁盘驱动器将出现在Disk Targetstab

  4、选中computer-b,点击Start Network Worker按钮(网线图示)早computer-b上创建一个网络服务器。

  5、切换到Network Targets tab,从列表中选择computer-a的一个接口,这将在computer-a上创建一个客户端并将客户端和服务器连接在一起。

  6、切换到Access Specifications tab,在Global AccessSpecifications列表中双击“Default“,出现”Edit Access Specification“对话框,指定TransferRequest Size = 512Bytes,点击OK。

  7、切换到Results Display tab,设置Update Frequency = 10秒。

  8、点击StartTests按钮(绿色旗帜)并选择一个文件用于保存结果。如果指定一个现有的文件,新的结果会被附加在已有结果后面。

  9、观察结果后,点击Stop Test按钮停止测试并将结果保存到文件。

四、IOmeter界面说明

4.1拓扑面板的“Disk Target tab”

  拓扑面板显示当前活动Manager(Dynamos)和Worker(线程)的一个层级列表。点击一个worker、manager、或AllManager可以在Disk Targets,NetworkTargets和Access Specification tab中查看并修改其设置。默认,manager的名称和其所在机器的名字是一样的,Worker的名字是“Worker n”,可以通过单击选中的manager或worker来修改名字。”All Manager”的名字是不可更改的。

磁盘IOPS测试指南_第2张图片

  点击某个worker,被选中的targets(磁盘或网络接口)将由该worker使用,其他的设置显示了当前该worker的设置,任何更改仅针对该worker。

  点击某个manager,被选中的targets将以轮询的方式分发给该manager下的所有worker。Disk Targets,NetworkTargets和Access Specification tab显示了该manager下所有worker的公共设置。如果所有worker的设置参数都相等,那么设置项会显示某一个值,否则将是空白的(说明该manager下的worker对该参数的设置不同),任何参数的更改会被应用到该manager下的所有worker。

  点击All Manager不会显示任何target,因为manager的target列表可能是不同的。其他设置显示了所有worker的公共参数,任何更改都会被应用到所有worker。

  Disk Targets tab允许查看并控制当前选中的worker所使用的磁盘。单击或shift-单击选择任意数量的驱动器供已选worker在测试时使用。Physical驱动器以蓝×××标显示,名称是“PHYSICALDRIVEn”(仅当它们不包含任何信息,除了空闲空间)。Worker直接读写raw disk来访问物理驱动器,而非使用iobw.tst文件。推荐用Physical驱动器进行测试。

  Worker通过读写\iobw.tst文件来访问逻辑驱动器,如果该文件不存在,驱动器的图标会有一条红色的斜线。在测试开始的时候,系统会被创建该文件并扩容直至磁盘空间撑满(该过程会在状态栏显示“Preparing Drives”)。当然,可以通过设置      Maximum DiskSize来设置该文件的大小,从而控制Iometer使用的磁盘空间。如果该文件存在但是不可写,那么该驱动器被认为是只读的,而且根本不会被显示出来。

  Maximum Disk Size– 表示已选worker所允许测试的sector数量。默认值是0,代表整个磁盘或\iobw.tst文件。如果指定一个非零值,Iometer使用指定数量的512-Bytes的扇区,(从Starting Disk Sector开始)。如果指定的值超过了磁盘或文件的范围,该值会被忽略并使用默认值0。举个例子:Starting Disk Sector = 5,Maximum Disk Size = 10,被选中的worker会使用磁盘或文件\iobw.tst的sector 5-14。

  Iometer使用Maximum Disk Size + Starting Disk Sector的加法和来控制iobw.tst文件的上限大小并以此大小来创建文件。如果该文件已经存在了,更改该值并不能resizeiobw.tst。如果两个worker被分配给同一个unprepared逻辑驱动器,那么第一个worker的Maximum Disk Size + Starting DiskSector的加法和会生效。

  Starting Disk Sector - 起始磁盘扇区(0=物理磁盘或iobw.tst文件的开始),指定lowest-numbered disk sector,默认是0,即磁盘或iobw.tst文件的首个512-byte扇区。

  # of Outstanding I/Os per target– 被选中worker的每个磁盘一次所允许的未处理的异步I/O的数量。(注意:如果操作完成的非常快,磁盘实际看到的队列深度可能更少,默认值是1)举个例子:假设选中了一个Manager,选中8个Disk,指定# of Outstanding I/O of =16,磁盘被分布到咯咯worker(每个worker分到2个disk),每个worker对其下的每一个disk生成最大16个未处理I/O,那么整个系统中该Manager每次将生成最多128个未处理I/O(4 worker* 2disk/worker * 16未处理I/O/disk)。

注意

  如果系统中未处理I/O的数量非常大,Iometer或Windows会hang、thrash或crash。这里所谓的”非常大“究竟是多少取决于磁盘驱动程序和可用的内存数量。这个问题是由于Windows和某些磁盘驱动程序的限制,并不是Iometer的问题。Iometer允许你设置未处理I/O的数量,而其他应用程序未必,所以其他应用程序对此问题并不常见。

  Test Connection Rate:控制worker多久打开和关闭磁盘一次。默认是Off,表示所有磁盘在测试开始的时候就是打开的,并在测试结束后被关闭。如果TestConnection Rate是打开的,worker会在测试开始的时候打开其所有的磁盘,当指定数量的事务在某个磁盘上执行完毕后,该磁盘就会被关闭,并在下一个I/O达到磁盘之前被重新打开(re-open),事务数量可以是0,意味着worker仅仅重复打开及关闭磁盘。事务是指一个I/O请求及其响应,是否有响应取决于Edit Access Specification对话框中的“Reply Size”设定。每个“打开+事务+关闭”的序列被称为一个连接(Connection),系统会为每个连接记录从打开到关闭所用的时间,系统会报告最大连接时间、平均连接时间以及每秒平均连接数。

4.2 Global AccessSpecifications列表

  Access Specifications tab允许用户控制每一个worker对其选中的target所执行的I/O类型。该Tab下主要包括GlobalAccess Specification和Assigned Access Specifications列表以及一些按钮。

磁盘IOPS测试指南_第3张图片

  Global Access Specifications列表列出了当前定义的所有访问规则(Access Specification),一个访问规则可以指定一种类型的I/O或多种类型的混合I/O。AssignedAccess Specifications列表显示了当前指派给选中的worker的访问规则,可以通过选中一个或多个访问规则并点击Add按钮将其指派给worker。每个访问规则由名称和图标组成,名称由用户定义,最好是能清楚的描述该访问规则的形态。图标指定了访问规则的Default Assignment,它决定了创建一个worker后会自动分配哪一个访问规则给它。一共有4种Default Assignment:All Workers、Disk Workers、Network Workers以及None。

  在Assigned AccessSpecifications列表中,每一个访问规则左侧的LED(带有颜色的圆圈)表示在测试时该访问规则所处的状态:

   蓝色:访问规则尚未运行

   绿色:正在运行的访问规则

   红色:运行完毕的访问规则

  如果Assigned AccessSpecifications列表中有多个访问规则,Iometer会执行一个系列测试(series of tests),访问规则将从上至下顺序执行,执行每一个访问规则期间,Iometer运行一个或多个测试(由Test Setup tab的设置决定),如果Test Setup tab没有指定运行时间,每个测试会一直运行直到你按了工具栏上的Stop按钮为止。

  可以分配不同的访问规则给不同的worker,例如,让磁盘worker执行类似数据库的I/O,同时让网络worker执行类似web-server的I/O(分别用不同的访问规则定义)。如果列表中存在多个访问规则,所有worker会同时执行它们的首个访问规则,然后执行第二个,等等。如果每一个worker的访问规则数量不同,拥有少量访问规则的worker在其他拥有较多访问规则的worker依然在工作的时候将处于空闲状态。你可以分配一个空闲访问规则来强制让一个worker在其他worker正在工作的时候处于空闲状态。

  单个访问规则可以多次指派给同一个worker。例如,如果有两个worker(1和2)以及两个访问规则(A和B),可以把访问规则A和B指派给worker1,为worker2指派访问规则A的两个副本。这种情况下将运行两个测试:在一个测试中,两个worker都将运行访问规则A,在第二个测试中,worker1运行访问规则B,同时worker2再次运行访问规则A。

  如果在Topology面板选中了一个manager或“All Managers”, Assigned AccessSpecifications列表将是空的,除非该manager或“All Managers”的worker都采用相同的访问规则列表。在选中了某个manager或“All Managers”的情况下对此列表进行更改,那么这种更改会被指派给该manager或“All Managers”下的所有worker。

4.3 Edit AccessSpecifications列表

  点击New将弹出Edit Access Specification对话框,用于创建一个新的访问规则,它显示了访问规则的定义并且允许对其进行修改。每个访问规则可以由多个I/O形态组成,每个I/O形态由Size、%Access、%Read、%Random、Delay、Burst、Alignment、Reply字段构成

磁盘IOPS测试指南_第4张图片

  在中间的表格内,每一行都是一个I/O形态。下面,我们将介绍其中的每一个字段的含义:

Transfer Request Size– 指定每个I/O请求的读写字节的大小,默认是2KB,取值范围是1字节(0MB+0KB+1Byte)到差不多1GB(1023MB+1023KB+1023Byte),仅受限于可用的虚拟内存。

  Percent of Access Specification– 指定每一种I/O形态(EditAccess Specification对话框中间表格内的每一行)所占一个访问规则的I/O百分比。默认是100%,取值范围是1%-100%,增量为1%。如果一个访问规则有多行(多个I/O形态),每一行的%Access字段决定了该行控制的I/O操作的执行几率,这些几率是%Read和%Random字段的几率结合后的结果。每一行的%Access字段的加法和必须等于100%,每一行的执行顺序是随机的,但随着测试时间的推移,访问规则中的每一行必然会以指定的几率执行。

注意

  访问规则越复杂,需要运行测试的时间足够久才能确保随机选择操作会尽可能的与所配置的百分比相当。

  Percent Read/Write Distribution– 指定读写操作的比例。(对于网络worker,写操作是发送,读操作是接收。当相应的服务器在“写”的时候,网络客户端总是“读”,反之亦然)。例如,指定%read = 40%,那么一个I/O有40%的可能性是“读”,60%的可能是“写”。这意味着读和写是随机的,但随着访问规则的执行,总的来看,Iometer会平均执行40%读和60%写(2:3的读写比例)

  Percent Random/Sequential Distribution– 指定随机访问率(默认是100%)。例如,%Random = 60%表示一个I/O有60%的机会是访问一个随机地址,40%的机会访问一个顺序地址。这个值对于网络worker是忽略的。

小提示:要以顺序的方式访问磁盘,选中该磁盘并指派一个worker,设置# of outstanding I/Os =1。

  Burstiness Length– 指定每个爆发的连续执行的I/O数量,可以输入任何非0值,默认是1。如果Reply字段为非0,这里指的就是事务数量(请求+响应),而不是I/O数量。

Transfer Delay– 指定在每一个I/O操作的爆发之前的延迟,默认是0,可以指定任何非负值,单位是毫秒(1000 = 1秒)。如果值为0,BurstLength是没意义的,因为在爆发之间没有任何延迟。

  Align I/O On– 指定每一个磁盘I/O的对齐,默认是“扇区边界”。如果该字段的值是n字节,则每一个I/O会在磁盘的n倍字节处开始执行。取值范围从1到1023MB+1023KB+1023Bytes,但指定的值必须是磁盘扇区大小的倍数。指定0值或选择“扇区边界“单选按钮会使得I/O在扇区边界对齐。网络worker忽略该值。

注意:

  如果Alignment字段不是”扇区边界“且Size字段并非Alignment字段值的倍数,那么连续I/O将不会是真正的连续。例如,如果Size = 3KB,Alignment = 2KB,那么每个3KB I/O在其下一个I/O之前会有一个1KB的”洞“。例如,假设扇区是1KB大小,那么I/O落到磁盘上的视图就是DDDXDDDXDDDX….(D代表1KB数据,X代表为了对其而浪费的1KB空间)

Reply Size– 指定对每一个I/O请求的响应大小,默认是No Reply。取值范围是1Byte到1023MB+1023KB+1023Bytes,仅受限于可用的虚拟内存。0值或选择No Reply代表没有响应。

  如果Reply字段为非0值,一旦一个I/O请求完成,会立刻返回一个响应,即“读”请求会得到“写”响应,或“写”请求得到一个”读”响应(个人理解:涉及底层设备I/O处理,源发起“读”之后,接收方必然要把内容写回发起者的内存、硬盘等位置才能最后被源读取;而写请求也必然要求接收方先读取原先地址的内容才能进行写操作)。请求的大小由Size字段指定,响应的大小由Reply字段指定,请求与响应一同被称为一个事务。每个事务的请求从发起到响应完成所用的时间、最大和平均事务时间、每秒平均事务量都会被记录并报告。

  如果指定了Reply,Reply的方向(读或写)总是请求的反方向,同时它的对齐和随机/连续等设置与对应的请求是一致的。如果指定了Burstiness,Burst字段指定的是事务(请求+响应)数量,而非I/O数量。

4.4 Results Display Tab

  Results Display Tab显示了一个运行过程中的测试的性能统计信息,你可以选择所要显示的统计信息、涉及的Manager或Worker以及显示更新的频率。

  下图是Results Display tab的截图,同样有很多选项可以修改,在测试运行过程中,你可以更改Results Display Tab中的所有设置,且更改将立刻生效。ResultsDisplay Tab的设置不会影响启动系列测试时所指定的的结果文件,结果文件是在每一次测试结束时被更新的,包括每个worker和manager测试统计信息的最终结果(除非在Test Setup tab中指定了Record Results)。仅当所有的worker线程跑起来之后,Iometer才会记录worker的数据。

磁盘IOPS测试指南_第5张图片

  Results Since – 选择显示的统计信息所跨越的时间段。

  Start of Test - 显示从测试开始后所收集的数据的平均值或总和

  Last Update - 显示从上一个更新开始后所收集的统计信息。例如,如果UpdateFrequency设置为5秒,显示的结果将是上一个5秒所收集数据的平均值或总和。

Update Frequency– 指定多久(秒)更新一次统计信息,默认是”00”(无穷),即只在每次测试的结束更新显示信息。

  当Result Since = ”Start of Test”,每次更新显示的统计信息结果为从【测试开始】到【当前】为止所选中的平均值,而不是当前(瞬间)值。正是因为这个原因,当Update Frequency很小时,测试开头显示的结果通常波动幅度很大,但随着测试的运行会逐渐趋于平稳。每次测试的开头会把所有值重置为零。

注意:

  获取run-time统计信息会影响系统性能。在运行一个大型测试系列时,应该把Update Frequency设置为“00”。另外,在测试时不要移动鼠标或运行任何后台进程(例如屏幕保护程序),避免不必要的CPU消耗和中断。

4.5 Bar Chart

  Bar Chart – 在Display中有六个Bar chart,用于显示不同的统计信息。每个bar chart有以下组件:

  Chart显示的统计信息(chart左边的按钮),按下该按钮会跳出一个层级菜单用于选择不同的统计信息,默认的留个chart是:

-Total I/O per Second

-Total MBs per Second

-Average I/O Response Time (ms)

-Maximum I/O Response Time (ms)

-CPU Utilization (total)

-Total Error Count

  -显示的Manager或Worker的统计信息(chart左上方的标签),默认是所有的chart都是All Managers,可以通过拖拽的方式把Manager、Worker、AllManager拉到chart上,单独显示需要的信息。

  -当前值(chart上的中间标签),该值仅在显示更新时才会变更,由Update Frequency指定

  -比列因数(chart右上方的标签),每个chart的比列因数由该chart显示的统计信息决定

-Chart本身

  -一个用于弹出Presentation Meter对话框的按钮,显示与chart相同的统计信息

Presentation Meter对话框以大尺寸显示Results Display中的单个统计信息,在给一组人做演示时非常有用。每次只能开一个Presentation Meter对话框。

磁盘IOPS测试指南_第6张图片

  Presentation Meter对话框的更新频率由Update Frequency决定,它还有如下设置:

Range – 指定了meter的上限,如果选中的统计信息超过了Range值,指针会停在最大值,但底下的文字标签会显示正确的meter值。Range默认值为100,下限总是0。

  Show Trace– 显示meter的历史追溯信息。如果该选项被选中,在测试过程中会有一个蓝色的圆弧标记最高和最低值的范围。

  Test Control– Start和Stop按钮用于开始和停止测试,而不需要关闭  Presentation Meter对话框。

  如果测试正在运行,Start按钮启动测试系列(同工具栏的Start Test按钮相同),Stop按钮会被禁用

  如果系列测试正在运行,Start按钮标签变成Next,点击Next将停止当前测试并启动下一个(类似工具栏上的Stop Current Test按钮);Stop按钮中止系列测试(同工具栏的Abort All Tests按钮相同)。

  如果是单个测试,或是系列测试的最后一个正在运行,Next按钮是禁用的,Stop按钮停止测试(与工具栏的Stop Current Test按钮一样)。

4.6 Test Setup tab

  Test Setup tab控制着为每一个访问规则(Access Specification)而运行的测试以及其它一些关于Iometer如何工作的详细设置。(按下Start Tests按钮时,Iometer将运行一系列测试,每一个访问规则运行一次,而每一个测试又为每一个访问规则运行一次

磁盘IOPS测试指南_第7张图片

  Test Description字段用于描述当前的系列测试(series of tests),该描述将被保存在results文件(点击Start Tests按钮时指定),并且可被用于记录当前系统配置、测试参数或任何你想要的信息。

  Run Time – 为系列测试中的每一个测试指定运行时间(小时,分钟,秒),默认值=0,表示每个测试将一直运行,直到你按下Stop按钮为止(如果有多个测试,STOP-All按钮将是可用的)。通常运行时间在15-60秒不等,复杂的访问规则或大型系统可能需要更久的时间。

  Ramp Up Time – 指定【在所有Worker报告说它们已经开始工作了之后,以及在开始记录每一个测试的统计信息之前】Iometer所等待的时间。在初始“ramp-up”期间(例如,当缓存数据饱和时),你可以使用该字段来避免记录任何统计信息。默认值=0。Ramp-up time通常从15-60秒不等,对于缓存控制器、大型服务器或集群系统,你可能需要增加ramp-up time。

  Number of Workers to Spawn Automatically– 规定了一个manager默认创建的磁盘和网络worker的数量。当你按下工具栏上的Start New Manager或Reset Worker按钮时,以及当一个manager从命令行启动之后首次与Iometer联系时该值就会被引用。你可以指定许多worker,或选择“# of CPUs”为运行manager的机器上的每一个处理器指定一个worker。磁盘worker的默认值为“# of CPUs“,网络worker的默认值为0。

  Record Results– 用于指定results文件所记录的信息。正常情况下,每一个target,每一个worker,每一个manager以及所有manager的结果都会被记录。每一个worker的结果是其target的汇总;每个manager的结果是其worker的汇总;All Manager的结果是所有manager的汇总(“汇总”代表总数,平均数或每个统计信息的最大值)

具体选项如下:

  1、All:为每一个target、worker、manager以及所有manager记录结果(默认选项)

  2、NoTargets:为每一个worker、manager以及所有manager记录结果

  3、NoWorkers:为每一个manager以及所有manager记录结果

  4、NoManagers:仅为所有manager记录结果

  5、None:不记录任何信息,这样一来,当开始测试时你不会被提示选择一个result文件

  Cycling Options (循环选项) – 指定了每一个访问规则将要运行的系列测试,它可用于为当前配置在各种不同的负载下自动收集数据,系列测试中的每一个测试结果将被分开记录在result文件内。

  除了Normal之外的所有测试类型都将指定一个系列测试,每个测试都会改变以下一个或多个对象的数量:

  1、每个manager的worker数量

  2、每个worker的target数量

  3、每个target(仅disk worker)未处理的I/O操作的数量

  对于所有的测试,任何不被测试类型改变的对象数量将被设置为其默认(最大)值。

每一个对象的数量都可以指定起始值(startingvalue),步进类型(stepping type,线性的或指数的)和步进值(step value)。例如,如果起始值是3,步进类型是线性的,步进值是2,最终序列(sequence)就是3,5,7,9…如果起始值是1,步进类型是指数的,power base = 2,最终序列将是1,2,4,8…Worker以及其target的顺序就是拓扑面板、Disk Targets、或Network Targets所显示的那样。

  每个序列的的最终值的决定对于每一个对象数量都是不同的。对于每个manager的worker数量,是由拓扑面板中拥有最多数量worker的manager决定的;对于每个worker的target数量,是由在DiskTargets或Network Targets中选择了最多的Targets的worker决定的;对于每个target的未处理I/O,是由Test Setup tab下的# of Outstanding I/Os决定的。如果并非所有manager都有同样数量的worker,或者不是所有worker拥有同样数量的target,那些拥有相对少量的worker/target的manager/worker会重复其最高值,而其他manager/worker将继续增加数量。

注意:

  cyclingworker或target是忽略Network clients的。

4.7 Cycling Options

  有以下测试类型可供选择,为了简单起见,每个测试用例都将假设所有的对象数量起始值为1,步进类型为线性,步进值是1。

磁盘IOPS测试指南_第8张图片

  Normal – run all selected targets for all workers: 本测试类型只采用所有对象数量的默认值运行一个测试:所有manager的所有worker都是活动的,所有选中的target将被每一个worker使用,每个磁盘的未处理I/O由Disk Targets tab中的“# of Outstanding I/Os”字段指定。此测试类型可用于快速测试当前系统配置,它也是默认测试类型。

  Cycle Targets – add step targets for all workers at a time 本测试类型将为每一个测试中的每一个worker增加target数量。测试数量由每个worker的target数量的最大值决定。例如,每个worker有三个target,那么本测试类型将运行三个测试:

  所有worker使用一个target(第一个选中的target)

  所有worker使用两个target(前两个选中的target)

  所有worker使用三个target(所有三个target)

这种测试可用于几种不同的场合,例如:

  1、为来自不同适配器卡的磁盘分配worker,从而观察在将工作量分布到其他适配器卡之后的系统可伸缩性(scalability)

  2、将worker指派给同一个磁盘,观察递增的传输请求队列

  3、将worker置于单独的系统,观察一个共享总线的伸缩效果

  Cycle Workers – add step workers using all selected targetsat a time本测试类型为每一个测试中的每一个manager增加worker的数量。测试的数量是由每个manager的worker数量的最大值来决定的。例如,如果每个manager有三个worker,本测试将运行三个测试:

  1、所有manager使用一个worker(第一个选中的worker)

  2、所有manager使用两个worker(前两个选中的worker)

  3、所有manager使用三个worker(所有三个worker)

该测试可用于以下场合:

  1、如果这些worker位于单独的系统,允许测试共享总线

  2、为分布在不同适配器上的磁盘指派worker,观察同一个系统上负载严重的适配器卡的interaction

  3、为同一个磁盘指派worker,观察增加请求队列的结果

  Increment Targets Parallel – add step targets to allmangers at a time.本测试类型增加每一个测试的每一个Manager的target数量,分发给该manager的worker。测试数量由【每个worker的target数量的最大值】与【每个manager的worker数量的最大值】的乘积决定。例如,如果每个manager有两个worker,每个worker有两个target,那么本测试类型将运行四个测试:

磁盘IOPS测试指南_第9张图片

本测试类型可用于确定一次性从所有客户端增加服务器负载的影响。

  Increment Targets Serial – Add step targets at a time本测试类型增加每一个测试中所有Manager的target总数,并分发给每一个manager的worker。测试数量由【manager的数量】、【每个manager的worker数量的最大值】以及【每个worker的target数量的最大值】的乘积决定。例如,如果每个manager有两个worker,每个worker有两个target,本测试类型将运行八个测试:

磁盘IOPS测试指南_第10张图片

磁盘IOPS测试指南_第11张图片

  本测试类型可用于确定来自许多客户端到服务器的总负载增加量的影响。Cycle Targets and Workers – add step targets at a timespread across workers本测试类型将为每一个测试中的一个worker增加target数量,然后重新开始为每一个测试中的两个worker增加target数量,以此类推。测试数量由【每个manager的worker数量的最大值】与【每个worker的target数量的最大值】的乘积决定的。例如,如果每个manager有三个worker,每个worker有两个target,那么该测试类型将运行六个测试:

磁盘IOPS测试指南_第12张图片

该测试类型可用于总线和网络的可伸缩性的特征化。

  Cycle #Outstanding I/O – run step outstanding I/Os onall disks at a time.为每一个测试的每一个磁盘worker的每一个磁盘增加未处理I/O的数量(对于网络worker,该值总是1)。测试数量由# of Outstanding I/O参数决定。例如,如果# of Outstanding I/O参数的终止(End)值为4,本测试类型将运行四次。

  1、所有worker对所有选中的target上的每一个target使用1个未处理I/O

  2、所有worker对所有选中的target上的每一个target使用2个未处理I/O

  3、所有worker对所有选中的target上的每一个target使用3个未处理I/O

  4、所有worker对所有选中的target上的每一个target使用4个未处理I/O

  需要注意的是,每个target所接收到的未处理I/O总量是每个worker的未处理I/O数量与使用该target的worker数量的乘积。

  Cycle #Outstanding I/O and Targets – run stepoutstanding I/Oson step targets at a time.本测试类型为所有worker的一个target增加未处理I/O的数量,然后为所有worker增加target数量。例如,如果每个worker有两个target,# ofOutstanding I/O End = 3,该测试类型将运行六次:

  1、所有worker对1个target使用1个未处理I/O

  2、所有worker对1个target使用2个未处理I/O

  3、所有worker对1个target使用3个未处理I/O

  4、所有worker对2个target上的每一个target使用1个未处理I/O

  5、所有worker对2个target上的每一个target使用2个未处理I/O

  6、所有worker对2个target上的每一个target使用3个未处理I/O

  Workers – 用于为“Cycle Workers“和”Cycle Targets and workers“测试类型确定初始worker的数量、步进大小、步进类型(线性或指数),其它所有测试类型都忽略该控制字段(文本框将是灰掉的)。

  Targets– 用于为“Cycle Targets“、”IncrementTargets Parallel“、”IncrementTargets Serial”、”CycleTargets and Workers”和“Cycle # Outstanding I/Os andTargets”测试类型确定初始target的数量、步进大小、步进类型(线性或指数),其它所有测试类型都忽略该控制字段。默认起始值 = 1,步进值 = 1,线性步进类型。

  # of Outstanding I/Os– 用于为“Cycle # Outstanding I/Os”和“Cycle # Outstanding I/Os and Targets”确定未处理I/O的起始和最终数量,步进值和步进类型。对于以上两种测试类型,它会覆盖Disk Targets tab中的# of Outstanding I/Os字段,所有其它测试类型都忽略该控制字段。默认起始值 = 1,最终值 = 32,powerbase = 2,指数步进类型。网络worker忽略该字段,它的# Outstanding I/Os总是1。

五、IOmeter参考资源

5.1在线图表分析

http://vmktree.org/iometer/iometer.cgi

http://pvenezia.com/iw/

http://www.iometer.org/