All Products
Search
Document Center

Elastic Compute Service:Test the performance of local disks on an i4p instance

Last Updated:Oct 22, 2024

The i4p performance-enhanced instance family with local SSDs provides ultra-high-performance local disks based on second-generation Intel® Optane Persistent Memory. This topic describes how to test the performance metrics of local disks, including IOPS, throughput, and latency, on an i4p instance.

For information about the i4p instance family, see the i4p, performance-enhanced instance family with local SSDs section of the "Instance families with local SSDs" topic.

Test conditions

  • Test tool: flexible I/O tester (fio).

    Note

    fio is an open source, powerful I/O performance benchmarking tool that can test the performance metrics of block storage devices, such as random read and write operations and sequential read and write operations.

  • Instance type: an i4p instance type. Use an instance of an i4p instance type and initialize the local disks on the instance. For information about how to initialize the local disks, see the Configure persistent memory as a local disk section of the "Configure the usage mode of persistent memory" topic.

  • Image: Use a more recent version of a Linux public image provided by Alibaba Cloud. In this example, Alibaba Cloud Linux 3 is used.

    Note

    Test results show that ESSDs may not achieve the expected IOPS performance in specific Linux distribution images. We recommend that you use Alibaba Cloud Linux 3 images that are maintained by Alibaba Cloud.

Procedure

  1. Connect to an ECS instance.

    For more information, see Connect to a Linux instance by using a password or key.

  2. Run the following command to install fio:

    sudo yum install -y ndctl daxctl ipmctl libpmem librpmem libpmemblk libpmemlog libpmemobj libpmempool pmempool fio
  3. Run commands to test the performance of the local disks.

    For information about the sample commands, see the Test IOPS, Test throughput, and Test latency sections of this topic.

    Important

    If you consecutively perform tests, run the sudo rm /mnt/sdb/* -rf command after each test to delete the residual results of the previous test on the local disks and prepare a clean environment for the next test.

Test IOPS

  • Test the sequential read IOPS of the local disks

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=8 --numjobs=8 --iodepth=1 --rw=read --bs=4k --size=8GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split
  • Test the sequential write IOPS of the local disks

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=8 --numjobs=8 --iodepth=1 --rw=write --bs=4k --size=1GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split
  • Test the random read IOPS of the local disks

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=8 --numjobs=8 --iodepth=1 --rw=randread --bs=4k --size=8GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split
  • Test the random write IOPS of the local disks

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=8 --numjobs=8 --iodepth=1 --rw=randwrite --bs=4k --size=1GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split

Test throughput

  • Test the sequential read throughput of the local disks

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=8 --numjobs=96 --iodepth=1 --rw=read --bs=64k --size=1GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split
  • Test the sequential write throughput of the local disks

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=1 --numjobs=8 --iodepth=1 --rw=write --bs=64k --size=1GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split
  • Test the random read throughput of the local disks

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=8 --numjobs=96 --iodepth=1 --rw=randread --bs=64k --size=1GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split
  • Test the random write throughput of the local disks

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=8 --numjobs=96 --iodepth=1 --rw=randwrite --bs=64k --size=1GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split

Test latency

  • Test the sequential read latency of the local disks

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=1 --numjobs=1 --iodepth=1 --rw=read --bs=4k --size=8GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split
  • Test the sequential write latency of the local disks

    sudo fio --name=test --directory=/mnt/sdb --ioengine=libpmem --direct=1 --thread=1 --numjobs=1 --iodepth=1 --rw=write --bs=4k --size=8GB --norandommap=1 --randrepeat=0 --invalidate=1 --iodepth_batch=1 --sync=1 --scramble_buffers=0 --numa_cpu_nodes=0 --numa_mem_policy=bind:0 --cpus_allowed_policy=split