Don't use dd for those tests it's really bad, especially on VMs.
There is also the problem about i/o syncing. By default OS buffer the data before writing it to disk.
In the case of dd, the real reason why it's often a misleading benchmark is that it's the best-case scenario: full-size streaming I/O where each block is only accessed once. Some applications do have that kind of operations pattern but most don't and can see very different performance characteristics because they depend on things like file creation/deletion overhead, random I/O within an open file, read and write contention if the same file is being accessed by multiple processes, etc.
we use fio with a standard test config across systems for meaningful results.