Why do small files still get written to the main pool VDEVs when a special Allocation Class VDEV is active and being written to? #9342
-
System information
Describe the problem you're observingI'm running the following fio tests to benchmark special allocation classes:
My main pool (called pool) consists of 9 striped mirrorred harddisks (18 disks in total) and 2 striped mirrored SSDs (Intel Datacenter SSDs) as a special VDEV (4 in total). The random writes and reads of these SSDs, compared to the rust hard disks, as we all know, is night and day. I have 2 datasets: Whenever I run the above When I watch the output of Shouldn't the SSD take over the complete whole workload in this scenario? fio creates four 32K files, and they should go to the special VDEVs. Is this expected behavior and if so, what is the point of the And why does the performance not increase with having |
Beta Was this translation helpful? Give feedback.
Replies: 5 comments
-
Hi @behlendorf, do you have any idea what this could be? |
Beta Was this translation helpful? Give feedback.
-
Isn’t that just a sync write test? There is no log device. |
Beta Was this translation helpful? Give feedback.
-
It would makes sense that the special vdev would be preferred as ZIL over the other (except slog), since it's likely to be the quicker one. If that preference is not the case then the sync writes would behave like this. @recklessnl what happens if you run it without sync? |
Beta Was this translation helpful? Give feedback.
-
@thulle The speeds are amazing without sync, due to it writing it to RAM first. If there is a better way to properly benchmark the situation laid out in the OP, please let me know. |
Beta Was this translation helpful? Give feedback.
-
@recklessnl That's not in question, the question is whether the writes go to the special vdev or the main pool. Sync writes go both to ZIL and special vdev. If the ZIL is on the main pool you will write to both main pool and special vdev. If async writes are seen on the main pool, there might be some bug here in selecting small blocks for the special vdev. edit: I'm not using correct terminology, main pool = harddrive VDEV. |
Beta Was this translation helpful? Give feedback.
@recklessnl That's not in question, the question is whether the writes go to the special vdev or the main pool.
Sync writes go both to ZIL and special vdev. If the ZIL is on the main pool you will write to both main pool and special vdev.
Async writes doesn't have to be writte to the ZIL, so writes should go straight to the special vdev.
If async writes are seen on the main pool, there might be some bug here in selecting small blocks for the special vdev.
If you add a SLOG the sync writes should end up on SLOG and Special vdev instead of pool and special vdev.
edit: I'm not using correct terminology, main pool = harddrive VDEV.