fio test doesn't adjust block size
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
| MAAS |
Medium
|
Lee Trager | ||
| 2.4 |
Medium
|
Lee Trager | ||
| 2.6 |
Medium
|
Lee Trager | ||
| 2.7 |
Medium
|
Lee Trager |
Bug Description
Fio testing for attached drives is expected from a user standpoint to check if the drives are performing to spec. From my experience, if you're lucky, the vendor will provide max bandwith and IOPS for the device.
Using the MAAS fio tests I was surprised to find that a set of new machines were severely under performing in disk throughput tests. After reviewing the test, I now see that *all* fio tests are using 4k block sizes to test. These are not the way drives are specified or tested for bandwith maximums. Here's a direct example of the difference vs a 4M block size.
Mass Results: READ: bw=628MiB/s (658MB/s)
My own fio: READ: bw=1080MiB/s (1132MB/s)
The MAAS results seemed to imply the drives were not meeting spec, but running the test myself showed they were operating as expected and matched the vendor specified values.
The recommendation I have is the following.
* Test IOPS with 4k randread and randwrite
* Test BW with 4M read and write
You could achieve this with something like this:
Read IOPS: fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fio_test --bs=4k --iodepth=64 --size=10G --filename=
Write IOPS: fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fio_test --bs=4k --iodepth=64 --size=10G --filename=
Read BW: fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fio_test --bs=4M --iodepth=64 --size=100G --filename=
Write BW: fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=fio_test --bs=4M --iodepth=64 --size=100G --filename=
With this you would get 4k sized random read/write IOPS and 4M sequential maximum read/write Bandwidth. These align with the maximum specifications and provide a much better view if a drive is operating within spec or not.
Related branches
- Lee Trager: Approve on 2020-05-16
-
Diff: 85 lines (+28/-10)2 files modifiedsrc/metadataserver/builtin_scripts/fio.py (+21/-5)
src/metadataserver/builtin_scripts/tests/test_fio.py (+7/-5)
- Lee Trager: Approve on 2020-05-15
-
Diff: 85 lines (+28/-10)2 files modifiedsrc/metadataserver/builtin_scripts/fio.py (+21/-5)
src/metadataserver/builtin_scripts/tests/test_fio.py (+7/-5)
- Lee Trager: Approve on 2020-05-15
-
Diff: 62 lines (+12/-3)2 files modifiedsrc/metadataserver/builtin_scripts/fio.py (+9/-2)
src/metadataserver/builtin_scripts/tests/test_fio.py (+3/-1)
- Dougal Matthews (community): Approve on 2020-05-12
- MAAS Lander: Approve on 2020-05-11
-
Diff: 62 lines (+12/-3)2 files modifiedsrc/metadataserver/builtin_scripts/fio.py (+9/-2)
src/metadataserver/builtin_scripts/tests/test_fio.py (+3/-1)
description: | updated |
Chris Sanders (chris.sanders) wrote : | #1 |
Changed in maas: | |
importance: | Undecided → Medium |
status: | New → Triaged |
Zachary Zehring (zzehring) wrote : | #2 |
I've attached an edited version of the IOPs fio test to test more bandwidth.
Changed in maas: | |
assignee: | nobody → Lee Trager (ltrager) |
status: | Triaged → In Progress |
Changed in maas: | |
milestone: | none → 2.8.0rc1 |
status: | In Progress → Fix Committed |
no longer affects: | maas/2.3 |
Changed in maas: | |
status: | Fix Committed → Fix Released |
Subscribing field medium