前端主机端口性能分析
前端主机端口负责对主机I/O进行处理,通过分析影响前端主机端口性能的各种因素,从而发现存储系统可能存在的性能瓶颈。
查看前端主机端口信息
在分析前端主机端口性能之前,需要确认接口模块的位置、端口的连接数量、工作状态、速率等信息。
可以通过DeviceManager存储系统管理工具进行查看,也可以通过CLI命令行的方式进行查看。
- 通过DeviceManager存储系统管理工具查看前端主机端口信息。
- 通过CLI命令show port general进行查看。
admin:/>show port general physical_type=FC ID Health Status Running Status Type Working Rate(Mbps) WWN --------------- ------------- -------------- --------- ------------------ ---------------- CTE0.IOM.H13.P0 Normal Link Up Host Port 16000 28d0002d52eb42b4 CTE0.IOM.H13.P1 Normal Link Down Host Port -- 28d1002d52eb42b4 CTE0.IOM.H13.P2 Normal Link Down Host Port -- 28d2002d52eb42b4 CTE0.IOM.H13.P3 Normal Link Up Host Port 16000 28d3002d52eb42b4 CTE0.IOM.L13.P0 Normal Link Up Host Port 16000 29b0002d52eb42b4 CTE0.IOM.L13.P1 Normal Link Down Host Port -- 29b1002d52eb42b4 CTE0.IOM.L13.P2 Normal Link Down Host Port -- 29b2002d52eb42b4 CTE0.IOM.L13.P3 Normal Link Up Host Port 16000 29b3002d52eb42b4 Role Working Mode Configured Mode Enabled Max Speed(Mbps) Number Of Initiators Protocol ----------- ------------ --------------- ------- --------------- -------------------- -------- INI and TGT Fabric Auto-Adapt Yes 16000 4 FC-SCSI INI and TGT -- Auto-Adapt Yes 16000 0 FC-SCSI INI and TGT -- Auto-Adapt Yes 16000 0 FC-SCSI INI and TGT Fabric Auto-Adapt Yes 16000 2 FC-SCSI INI and TGT Fabric Auto-Adapt Yes 16000 4 FC-SCSI INI and TGT -- Auto-Adapt Yes 16000 0 FC-SCSI INI and TGT -- Auto-Adapt Yes 16000 0 FC-SCSI INI and TGT Fabric Auto-Adapt Yes 16000 2 FC-SCSI
对前端主机端口接口模块的位置、端口的连接数量、工作状态、速率等信息进行确认后,建议用户对以下三点进行排查。
- 双控所连接的前端主机端口数量应尽量保证相等,连接的端口应尽量均匀分布在多张前端接口模块上,以使得控制器间和前端接口模块间负载均衡。例如控制器A和控制器B各部署了两个8Gb FC接口模块,各控制器与交换机有4根光纤相连接,此时应该每个FC接口模块各连两根光纤。
- 确认DeviceManager管理软件或CLI显示的前端主机端口的工作速率与实际规格相符,确保不降级。当发生降级时,需要对网络、交换机、端口光模块等进行故障排查,并更换故障的部件。
- 确认显示的工作模式与实际的组网连接方式相符。其中“P2P”为通过交换机连接,“FC-AL”为直接连接。
查看前端主机端口并发压力
当需要测试存储的最大性能时,前提条件务必保证主机侧提供足够的并发压力。当主机侧并发任务数量足够大,而性能值(IOPS/带宽)并不高时,可能是主机压力没有传递到存储前端来,也有可能是存储性能达到了瓶颈。
除了通过对比时延的定界方法,也可以通过以下两种方法排查存储前端并发情况来辅助分析。
- 方法一:通过公式进行计算
适用于压力固定的场景,例如利用IOmeter、Vdbench等测试工具进行恒定压力的性能测试。在进行测试时,并发数一般情况下是固定的,通过公式:IOPS=并发数*1000/时延(单位:ms),在可观察到IOPS和时延时,可以反推并发数,了解前端并发压力。例如IOPS为3546,时延为6.77ms,则并发数=3546*6.77/1000=24。
- 方法二:通过CLI命令得到近似的前端并发数
适用于压力变化的场景。通过show controller io io_type=frontEnd controller_id=XX命令可以查询指定控制器的前端I/O并发数,多次执行此命令,取稳定值可以近似表示下发到控制器的前端并发数。“XX”表示控制器ID。
admin:/>show controller io io_type=frontEnd controller_id=0A Controller Id : 0A Front End IO : 0 Front End Limit : 17408
当时延很低时,通过show controller io命令获得的并发数可能不准确,此时可采用方法一进行分析。
查询前端并发压力不足时,建议加大主机侧的并发压力,并观察前端并发压力是否有所提升。如果查询前端并发压力并未改善,请定位主机侧问题。
查看前端主机端口是否有误码
在出现频繁的性能波动和异常跌落时,怀疑前端主机端口或链路有异常,此时需要查看前端主机端口是否有误码。
用户可以通过DeviceManager管理界面、CLI命令或者巡检报告排查前端主机端口是否出现误码。
不同版本查看到的前端主机端口的误码信息存在差异,请以实际界面为准。
- 通过DeviceManager管理界面查看前端主机端口(FC/iSCSI)的误码信息。
- 可以通过show port bit_error命令查看前端主机端口的误码信息。
admin:/>show port bit_error ETH port: ID Error Packets Lost Packets Over Flowed Packets Start Time CRC Errors Frame Errors Frame Length Errors --------------------- ------------- ------------ ------------------- ----------------------------- ---------- ------------ ------------------- CTE0.SMM0.MGMT0 0 0 0 2020-03-27/12:49:42 UTC+08:00 0 0 0 CTE0.SMM0.MGMT1 0 0 0 2020-03-27/12:49:44 UTC+08:00 0 0 0 CTE0.SMM1.MGMT0 0 0 0 2020-03-27/12:49:45 UTC+08:00 0 0 0 CTE0.SMM1.MGMT1 0 0 0 2020-03-27/12:49:46 UTC+08:00 0 0 0 CTE0.SMM0.MAINTENANCE 0 0 0 2020-03-27/12:49:44 UTC+08:00 0 0 0 CTE0.SMM1.MAINTENANCE 0 0 0 2020-03-27/12:49:47 UTC+08:00 0 0 0 FC port: ID Lost Signals Link Errors Codes Lost Synchronizations Failed Connections Start Time CRC Errors Frame End Sign Errors --------------- ------------ ----------------- --------------------- ------------------ ----------------------------- ---------- --------------------- CTE0.IOM.H13.P0 0 0 0 0 2020-03-27/12:50:08 UTC+08:00 0 0 CTE0.IOM.H13.P1 0 0 0 0 2020-03-27/12:50:08 UTC+08:00 0 0 CTE0.IOM.H13.P2 0 0 0 0 2020-03-27/12:50:08 UTC+08:00 0 0 CTE0.IOM.H13.P3 0 0 0 0 2020-03-27/12:50:08 UTC+08:00 0 0 CTE0.IOM.L13.P0 0 0 0 0 2020-03-27/12:50:08 UTC+08:00 0 0 CTE0.IOM.L13.P1 0 0 0 0 2020-03-27/12:50:08 UTC+08:00 0 0 CTE0.IOM.L13.P2 0 0 0 0 2020-03-27/12:50:08 UTC+08:00 0 0 CTE0.IOM.L13.P3 0 0 0 0 2020-03-27/12:50:08 UTC+08:00 0 0 SAS port: ID Invalid Dword Consist Errors Loss Of DWORD PHY Reset Errors Start Time -------------- ------------- -------------- ------------- ---------------- ----------------------------- CTE0.IOM.H7.P0 8 8 0 6 2020-03-27/12:50:02 UTC+08:00 CTE0.IOM.H7.P1 0 0 0 0 2020-03-27/12:50:02 UTC+08:00 CTE0.IOM.H7.P2 0 0 0 0 2020-03-27/12:50:02 UTC+08:00 CTE0.IOM.H7.P3 0 0 0 0 2020-03-27/12:50:02 UTC+08:00 CTE0.IOM.L7.P0 95 98 3 5 2020-03-27/12:50:05 UTC+08:00 CTE0.IOM.L7.P1 0 0 0 0 2020-03-27/12:50:06 UTC+08:00 CTE0.IOM.L7.P2 0 0 0 0 2020-03-27/12:50:06 UTC+08:00 CTE0.IOM.L7.P3 0 0 0 0 2020-03-27/12:50:06 UTC+08:00 DAE040.A.P0 0 0 0 0 2020-03-27/12:50:10 UTC+08:00 DAE040.A.P1 0 0 0 0 2020-03-27/12:50:10 UTC+08:00 DAE040.B.P0 0 0 0 0 2020-03-27/12:50:10 UTC+08:00 DAE040.B.P1 0 0 0 0 2020-03-27/12:50:11 UTC+08:00 FCoE port: PCIE port: RDMA port:
如果前端主机端口出现误码持续增加,则说明前端主机端口或者链路存在性能问题。此时建议用户更换光纤或光模块。
前端主机端口性能指标
前端主机端口主要关注的性能指标包括:平均读I/O响应时间、平均写I/O响应时间、平均I/O大小、IOPS、带宽。
用户可以通过DeviceManager性能监控或者CLI命令查看前端主机端口的各项性能指标。
不同版本查看到的前端主机端口性能指标存在差异,请以实际界面为准。
- 通过DeviceManager管理界面进行查看,操作入口:“监控 > 性能监控 ”。在“监控面板”可以查看前端各类型端口的典型的性能指标,如果需要查询更多的性能指标,在“分析”界面根据界面引导创建控制器的指标图表,创建成功后即可查看,创建指标图表的方法请参见创建指标图表。
- 通过CLI命令show performance port进行查看。
admin:/>show performance port port_id=CTE0.IOM.H13.P0 0.Max. Bandwidth(MB/s) 1.Usage Ratio(%) 2.Queue Length 3.Bandwidth(MB/s) / Block Bandwidth(MB/s) 4.Throughput(IOPS)(IO/s) 5.Read Bandwidth(MB/s) 6.Average Read I/O Size(KB) 7.Read Throughput(IOPS)(IO/s) 8.Write Bandwidth(MB/s) 9.Average Write I/O Size(KB) 10.Write Throughput(IOPS)(IO/s) 11.Read I/O Granularity Distribution: [4K,8K)(%) 12.Read I/O Granularity Distribution: [8K,16K)(%) 13.Read I/O Granularity Distribution: [16K,32K)(%) 14.Read I/O Granularity Distribution: [32K,64K)(%) 15.Read I/O Granularity Distribution: [64K,128K)(%) 16.Write I/O Granularity Distribution: [4K,8K)(%) 17.Write I/O Granularity Distribution: [8K,16K)(%) 18.Write I/O Granularity Distribution: [16K,32K)(%) 19.Write I/O Granularity Distribution: [32K,64K)(%) 20.Write I/O Granularity Distribution: [64K,128K)(%) 21.Average IO Size(KB) 22.% Read 23.% Write 24.Max IOPS(IO/s) 25.Service Time(Excluding Queue Time)(us) 26.Average I/O Latency(us) 27.Max. I/O Latency(us) 28.Average Read I/O Latency(us) 29.Average Write I/O Latency(us) 30.Sending bandwidth for replication(KB/s) 31.Receiving bandwidth for replication(KB/s) 32.The cumulative count of I/Os 33.The cumulative count of data transferred in Kbytes 34.The cumulative elapsed I/O time(ms) 35.The cumulative count of all reads 36.The cumulative count of all writes 37.Read I/O Granularity Distribution: [0K,4K)(%) 38.Read I/O Granularity Distribution: >= 128K(%) 39.Write I/O Granularity Distribution: [0K,4K)(%) 40.Write I/O Granularity Distribution: >= 128K(%) Input item(s) number separated by comma:1 Usage Ratio(%) : 38
通过查看前端主机端口的各项性能指标,用户可以对前端主机端口性能指标进行分析,初步定位可能的出现的性能问题。
- 平均读写时延:定位性能问题时,首先需要将统计到的前端主机端口平均时延与主机侧看到的时延进行比较,查看是否有存在较大差异,定界问题是否有可能出现在存储侧。
统计的I/O前端时延不包括存储与主机交互和链路传输的时延。
- 平均I/O大小:表示阵列收到的I/O的平均大小。如果I/O大小与主机下发的I/O大小不一致,则说明在主机侧或HBA驱动进行了I/O拆分或合并。
- IOPS和带宽:需要比较各个前端主机端口的IOPS和带宽的差异,从而判断各个端口所连接的主机下发的业务压力差异,并判断前端压力是否均衡。特别需要注意前端主机端口的带宽是否接近链路的理论极限带宽,导致前端带宽成为性能瓶颈。