IT-5086/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.
It is necessary to sanitize the whole OS drive only prior to running the required storage benchmark.
The results of the storage measurements shall be reported to CERN in the technical questionnaire (Annex A).
Storage benchmark on the CPU server¶
The results of the following measurements shall be reported in section 4.28 of the Annex A.
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>
nvme smart-log /dev/<solid-state-drive-block-device>
(where applicable)
and store the output which shall be submitted with the tender bid.
-
Set the value of the
read_ahead_kb
insysfs
to the physical block size of/dev/<solid-state-drive-block-device>
-
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
- 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
- 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:
- Repeat the measurement three times in a row (between measurements don't forget to rename the output file with
2.log
and3.log
in the second and third run respectively). - 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. - The final result to be reported is the average over the three measurements.
Random reads - iodepth = 32¶
The results of the following measurements shall be reported in section 4.28 of the Annex A.
- 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
- 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
For both of the points the above list do grep -i iops <output_file>
and get the iops values. Do this for all measurements by changing the log file to be grep'ed.
Random writes - iodepth = 32¶
The results of the following measurements shall be reported in section 4.28 of the Annex A.
- Test procedure for 1 writer, 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
- Test procedure for 5 writers, 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
For both of the points the above list do grep -i iops <output_file>
and get the iops values. Do this for all measurements by changing the log file to be grep'ed.
Additional measurements - iodepth = 1¶
The following measurements shall be run on the proposed equipment and provided with the tender bid.
It is not required to run the additional measurements 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
insysfs
to the physical block size of/dev/<solid-state-drive-block-device>
Random reads¶
- 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=600s --numjobs=1 --output=fio-bench.randread1.1.log
- 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=600s --numjobs=5 --output=fio-bench.randread5.1.log
- 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=600s --numjobs=1 --output=fio-bench.randread1-512.1.log
Sequential reads¶
- 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=600s --numjobs=1 --output=fio-bench.seqread1.1.log
- 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=600s --numjobs=5 --output=fio-bench.seqread5.1.log
- 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=600s --numjobs=1 --output=fio-bench.seqread1-512.1.log
Random writes¶
- Test procedure for 1 writer, 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=600s --numjobs=1 --output=fio-bench.randwrite1.1.log
- Test procedure for 5 writers, 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=600s --numjobs=5 --output=fio-bench.randwrite5.1.log
- Test procedure for 1 writer, 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=600s --numjobs=1 --output=fio-bench.randwrite1-512.1.log
Sequential writes¶
- Test procedure for 1 writer, 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=600s --numjobs=1 --output=fio-bench.seqwrite1.1.log
- Test procedure for 5 writers, 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=600s --numjobs=5 --output=fio-bench.seqwrite5.1.log
- Test procedure for 1 writer, 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=600s --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 additional measurements 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
insysfs
to the physical block size of/dev/<solid-state-drive-block-device>
Sequential reads¶
- 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=600s --numjobs=1 --output=fio-bench.seqread1.128.32.log
- 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=600s --numjobs=5 --output=fio-bench.seqread5.128.32.log
Sequential writes¶
- Test procedure for 1 writer, 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=600s --numjobs=1 --output=fio-bench.seqwrite1.128.32.log
- Test procedure for 5 writers, 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=600s --numjobs=5 --output=fio-bench.seqwrite5.128.32.log