Skip to content

IT-4925/IT/LT Storage benchmark

Requirements

The storage performance of the proposed equipment shall be measured according to the instructions of this document.

All tests shall be performed with the required RHEL 9.5 installation.

The benchmarked storage device shall complete the SNIA Solid State Storage Performance Test Specifications version 2.0.1 Workload Independent Pre-conditionning as described in paragraphs 7.2 and 8.2 of the document prior to executing the measurements below.

The results of the storage measurements shall be reported to CERN in the technical questionnaire (Annex A).

Storage benchmark on the CPU server

The storage performance of the proposed CPU server shall be measured according to the instructions of this section.

It is not required to run the benchmark on the alternative model required in clause 4.8.12 of the technical specifications.

  1. Run smartctl -a /dev/<solid-state-drive-block-device> and store the output which shall be submitted with the tender bid
  2. Set the value of the read_ahead_kb in sysfs to the physical block size of /dev/<solid-state-drive-block-device>
  3. Test procedure for 1 writer, 4 KB block size: To make the first measurement, run: fio --name=WRITE1 --directory=/pool --filename=file_used --size=100G --ioengine=libaio --direct=1 --sync=1 --rw=write --bs=4k --iodepth=1 --runtime=1200s --numjobs=1 --output=fio-bench.write1.1.log
  4. Test procedure for 5 writers, 4 KB block size: To make the first measurement, run: fio --name=WRITE1 --directory=/pool --filename=file_used --size=100G --ioengine=libaio --direct=1 --sync=1 --rw=write --bs=4k --iodepth=1 --runtime=1200s --numjobs=5 --output=fio-bench.write5.1.log
  5. Test procedure for 1 writer, 512 KB block size: To make the first measurement, run: fio --name=WRITE1-512 --directory=/pool --filename=file_used --size=100G --ioengine=libaio --direct=1 --sync=1 --rw=write --bs=512k --iodepth=1 --runtime=1200s --numjobs=1 --output=fio-bench.write1-512.1.log

For each of the points 3, 4 and 5 in the above list:

  1. Repeat the measurement three times in a row (between measurements don't forget to rename the output file with 2.logand 3.log in the second and third run respectively).
  2. To get the result of first measurement do grep -i iops <output_file> and sum all the iops values. Do this for all measurements by changing the log file to be grep'ed.
  3. The final result to be reported is the average over the three measurements.

Additional measurements - iodepth = 1

The following measurements shall be run on the proposed equipment and provided with the rest of the results.

It is not required to run the benchmark on the alternative model required in clause 4.8.12 of the technical specifications.

  • Run smartctl -a /dev/<solid-state-drive-block-device> and store the output which shall be submitted with the tender bid
  • Set the value of the read_ahead_kb in sysfs to the physical block size of /dev/<solid-state-drive-block-device>

Random reads

  1. Test procedure for 1 reader, 4 KB block size: To make the first measurement, run: fio --name=RANDREAD1 --filename=/dev/<solid-state-drive-block-device> --ioengine=libaio --direct=1 --sync=1 --rw=randread --bs=4k --iodepth=1 --runtime=1200s --numjobs=1 --output=fio-bench.randread1.1.log
  2. Test procedure for 5 readers, 4 KB block size: To make the first measurement, run: fio --name=RANDREAD5 --filename=/dev/<solid-state-drive-block-device> --ioengine=libaio --direct=1 --sync=1 --rw=randread --bs=4k --iodepth=1 --runtime=1200s --numjobs=5 --output=fio-bench.randread5.1.log
  3. Test procedure for 1 reader, 512 KB block size: To make the first measurement, run: fio --name=RANDREAD1-512 --filename=/dev/<solid-state-drive-block-device> --ioengine=libaio --direct=1 --sync=1 --rw=randread --bs=512k --iodepth=1 --runtime=1200s --numjobs=1 --output=fio-bench.randread1-512.1.log

Sequential reads

  1. Test procedure for 1 reader, 4 KB block size: To make the first measurement, run: fio --name=SEQREAD1 --filename=/dev/<solid-state-drive-block-device> --ioengine=libaio --direct=1 --sync=1 --rw=read --bs=4k --iodepth=1 --runtime=1200s --numjobs=1 --output=fio-bench.seqread1.1.log
  2. Test procedure for 5 readers, 4 KB block size: To make the first measurement, run: fio --name=SEQDREAD5 --filename=/dev/<solid-state-drive-block-device> --ioengine=libaio --direct=1 --sync=1 --rw=read --bs=4k --iodepth=1 --runtime=1200s --numjobs=5 --output=fio-bench.seqread5.1.log
  3. Test procedure for 1 reader, 512 KB block size: To make the first measurement, run: fio --name=SEQREAD1-512 --filename=/dev/<solid-state-drive-block-device> --ioengine=libaio --direct=1 --sync=1 --rw=read --bs=512k --iodepth=1 --runtime=1200s --numjobs=1 --output=fio-bench.seqread1-512.1.log

Random writes

  1. Test procedure for 1 reader, 4 KB block size: To make the first measurement, run: fio --name=RANDWRITE1 --directory=/pool --filename=file_used --size=100G --ioengine=libaio --direct=1 --sync=1 --rw=randwrite --bs=4k --iodepth=1 --runtime=1200s --numjobs=1 --output=fio-bench.randwrite1.1.log
  2. Test procedure for 5 readers, 4 KB block size: To make the first measurement, run: fio --name=RANDWRITE5 --directory=/pool --filename=file_used --size=100G --ioengine=libaio --direct=1 --sync=1 --rw=randwrite --bs=4k --iodepth=1 --runtime=1200s --numjobs=5 --output=fio-bench.randwrite5.1.log
  3. Test procedure for 1 reader, 512 KB block size: To make the first measurement, run: fio --name=RANDWRITE1-512 --directory=/pool --filename=file_used --size=100G --ioengine=libaio --direct=1 --sync=1 --rw=randwrite --bs=512k --iodepth=1 --runtime=1200s --numjobs=1 --output=fio-bench.randwrite1-512.1.log

Sequential writes

  1. Test procedure for 1 reader, 4 KB block size: To make the first measurement, run: fio --name=SEQWRITE1 --directory=/pool --filename=file_used --size=100G --ioengine=libaio --direct=1 --sync=1 --rw=write --bs=4k --iodepth=1 --runtime=1200s --numjobs=1 --output=fio-bench.seqwrite1.1.log
  2. Test procedure for 5 readers, 4 KB block size: To make the first measurement, run: fio --name=SEQWRITE5 --directory=/pool --filename=file_used --size=100G --ioengine=libaio --direct=1 --sync=1 --rw=write --bs=4k --iodepth=1 --runtime=1200s --numjobs=5 --output=fio-bench.seqwrite5.1.log
  3. Test procedure for 1 reader, 512 KB block size: To make the first measurement, run: fio --name=SEQWRITE1-512 --directory=/pool --filename=file_used --size=100G --ioengine=libaio --direct=1 --sync=1 --rw=write --bs=512k --iodepth=1 --runtime=1200s --numjobs=1 --output=fio-bench.seqwrite1-512.1.log

Additional measurements - iodepth = 32

The following measurements shall be run on the proposed equipment and provided with the rest of the results.

It is not required to run the benchmark on the alternative model required in clause 4.8.12 of the technical specifications.

  • Run smartctl -a /dev/<solid-state-drive-block-device> and store the output which shall be submitted with the tender bid
  • Set the value of the read_ahead_kb in sysfs to the physical block size of /dev/<solid-state-drive-block-device>

Random reads

  1. Test procedure for 1 reader, 4 KB block size, 32 iodepth: To make the measurement, run: fio --name=RANDREAD1-4-32 --filename=/dev/<solid-state-drive-block-device> --ioengine=libaio --direct=1 --sync=1 --rw=randread --bs=4k --iodepth=32 --runtime=1200s --numjobs=1 --output=fio-bench.randread1.4.32.log

  2. Test procedure for 5 readers, 4 KB block size, 32 iodepth: To make the measurement, run: fio --name=RANDREAD5-4-32 --filename=/dev/<solid-state-drive-block-device> --ioengine=libaio --direct=1 --sync=1 --rw=randread --bs=4k --iodepth=32 --runtime=1200s --numjobs=5 --output=fio-bench.randread5.4.32.log

Sequential reads

  1. Test procedure for 1 reader, 128 KB block size, 32 iodepth: To make the measurement, run: fio --name=SEQREAD1-128-32 --filename=/dev/<solid-state-drive-block-device> --ioengine=libaio --direct=1 --sync=1 --rw=read --bs=128k --iodepth=32 --runtime=1200s --numjobs=1 --output=fio-bench.seqread1.128.32.log

  2. Test procedure for 5 readers, 128 KB block size, 32 iodepth: To make the measurement, run: fio --name=SEQREAD5-128-32 --filename=/dev/<solid-state-drive-block-device> --ioengine=libaio --direct=1 --sync=1 --rw=read --bs=128k --iodepth=32 --runtime=1200s --numjobs=5 --output=fio-bench.seqread5.128.32.log

Random writes

  1. Test procedure for 1 reader, 4 KB block size, 32 iodepth: To make the measurement, run: fio --name=RANDWRITE1-4-32 --directory=/pool --filename=file_used --size=100G --ioengine=libaio --direct=1 --sync=1 --rw=randwrite --bs=4k --iodepth=32 --runtime=1200s --numjobs=1 --output=fio-bench.randwrite1.4.32.log

  2. Test procedure for 5 readers, 4 KB block size, 32 iodepth: To make the measurement, run: fio --name=RANDWRITE5-4-32 --directory=/pool --filename=file_used --size=100G --ioengine=libaio --direct=1 --sync=1 --rw=randwrite --bs=4k --iodepth=32 --runtime=1200s --numjobs=5 --output=fio-bench.randwrite5.4.32.log

Sequential writes

  1. Test procedure for 1 readers, 128 KB block size, 32 iodepth: To make the measurement, run: fio --name=SEQWRITE1-128-32 --directory=/pool --filename=file_used --size=100G --ioengine=libaio --direct=1 --sync=1 --rw=write --bs=128k --iodepth=32 --runtime=1200s --numjobs=1 --output=fio-bench.seqwrite1.128.32.log

  2. Test procedure for 5 readers, 128 KB block size, 32 iodepth: To make the measurement, run: fio --name=SEQWRITE5-128-32 --directory=/pool --filename=file_used --size=100G --ioengine=libaio --direct=1 --sync=1 --rw=write --bs=128k --iodepth=32 --runtime=1200s --numjobs=5 --output=fio-bench.seqwrite5.128.32.log