本文介绍如何在Linux/Windows系统中使用FIO对文件系统进行吞吐和IOPS的性能测试。
前提条件
您已经创建了待测试的文件系统,并将文件系统挂载到ECS实例上。具体操作,请参见快速入门。
背景信息
本文示例的性能参数,均为Linux/Windows系统下采用FIO工具的测试结果,以此作为文件存储NAS产品性能指标参考。如果想达到文件存储NAS的官网性能指标 ,建议使用多台ECS进行测试。文件存储NAS的官网性能指标,请参见文件存储 NAS。
如果您有任何反馈或疑问,请单击下方按钮联系NAS技术支持进行咨询。
NAS技术支持
注意事项
性能测试前,请注意以下事项。
- 吞吐最大不会超过ECS内网带宽,如果内网带宽太小,则吞吐会被流量控制。
例如,您购买的是最低容量的通用容量型NAS文件系统,其初始读带宽为150 MB/s。如果您的ECS内网带宽为100 Mbps,则吞吐最大可达12.5 MB/S,如果要测试达到150 MB/s,则需要至少12台ECS进行测试。 如果您的ECS内网带宽为1 Gbps,则吞吐最大可达到125 MB/s,如果要测试达到150 MB/s,则需要至少2台ECS进行测试。
- 在Linux操作系统中,NFS客户端对于同时发起的NFS请求数量进行了控制,默认编译的内核中此参数值为2,严重影响性能。请在安装NFS客户端后,修改同时发起的NFS请求数量,提高NFS性能。具体操作,请参见如何修改同时发起的NFS请求数量?。
- 在Windows操作系统中,测试NFS协议NAS文件系统性能会受限于Windows NFS客户端串行执行单个文件系统的请求,请调整
-numjobs
参数增加FIO测试文件数量。
操作步骤
- 远程连接ECS实例。具体操作,请参见ECS连接方式。
- 安装FIO测试工具。如果已安装,请跳过此步骤,直接运行性能测试命令。
- Linux操作系统
操作系统 安装命令 CentOS sudo yum install fio
Redhat AlibabaCloud Linux Ubuntu 依次执行以下安装命令: sudo apt-get update
sudo apt-get install fio
Debian - Windows操作系统
您可以下载msi格式的安装包进行安装。FIO安装包下载地址,请参见fio官网。
- Linux操作系统
- 运行性能测试命令,具体的命令请参见下文。
- 关于在Linux系统下的测试命令,请参见Linux系统下的性能测试命令。
- 关于在Windows系统下的测试命令,请参见Windows系统下的性能测试。
Linux系统下的性能测试命令
- 随机读IOPS:
fio -numjobs=1 -iodepth=128 -direct=1 -ioengine=libaio -sync=1 -rw=randread -bs=4K -size=1G -time_based -runtime=60 -name=Fio -directory=/mnt
- 随机写IOPS:
fio -numjobs=1 -iodepth=128 -direct=1 -ioengine=libaio -sync=1 -rw=randwrite -bs=4K -size=1G -time_based -runtime=60 -name=Fio -directory=/mnt
- 随机读吞吐:
fio -numjobs=1 -iodepth=128 -direct=1 -ioengine=libaio -sync=1 -rw=randread -bs=1M -size=1G -time_based -runtime=60 -name=Fio -directory=/mnt
- 随机写吞吐:
fio -numjobs=1 -iodepth=128 -direct=1 -ioengine=libaio -sync=1 -rw=randwrite -bs=1M -size=1G -time_based -runtime=60 -name=Fio -directory=/mnt
Windows系统下的性能测试
以通用容量型NAS挂载到Z盘,FIO可执行文件安装在C:\Program Files\fio\fio.exe为例,执行以下命令测试性能。
说明 如果在Windows系统测试NFS协议NAS文件系统性能,受限于Windows NFS客户端串行执行单个文件系统的请求,请调整
-numjobs
参数增加FIO测试文件数量。- 随机读IOPS:
"c:\Program Files\fio\fio.exe" -name=Fio -numjobs=2 -iodepth=128 -direct=1 -ioengine=windowsaio -sync=1 -rw=randread -bs=4K -size=1G -time_based -runtime=60 -group_reporting -thread -directory=Z\:\
- 随机写IOPS:
"c:\Program Files\fio\fio.exe" -name=Fio -numjobs=2 -iodepth=128 -direct=1 -ioengine=windowsaio -sync=1 -rw=randwrite -bs=4K -size=1G -time_based -runtime=60 -group_reporting -thread -directory=Z\:\
- 随机读吞吐:
"c:\Program Files\fio\fio.exe" -name=Fio -numjobs=2 -iodepth=128 -direct=1 -ioengine=windowsaio -sync=1 -rw=randread -bs=1M -size=1G -time_based -runtime=60 -group_reporting -thread -directory=Z\:\
- 随机写吞吐:
"c:\Program Files\fio\fio.exe" -name=Fio -numjobs=2 -iodepth=128 -direct=1 -ioengine=windowsaio -sync=1 -rw=randwrite -bs=1M -size=1G -time_based -runtime=60 -group_reporting -thread -directory=Z\:\