A: Yes. Here: https://apps.apple.com/app/amorphousdis ... 1168254295
Q: Why is the app icon so ugly?
A: I wish I could draw, paint, design app icons, and more. I will replace it with something nicer at some point. i.e. hire an icon designer.
Q: Are the test results compatible with CrystalDiskMark 5?
A: Not exactly. CDM5 (CrystalDiskMark 5) uses Microsoft DiskSpd test engine. It has its own way of measuring the read/write performance with options that CDM5 specifies. ADM (AmorphousDiskMark) uses a different storage test engine I wrote. And it may give you slightly different test results. But it should give you similar results.
Q: Why there are four different tests?
A: Four different tests represent different storage usages.
• Seq QD: Reading/writing one big file sequentially from multiple apps.
• 4K QD: Reading/writing small files from multiple apps.
• Seq: Reading/writing one big file from one app.
• 4K: Reading/writing small files one at a time from one app.
Q: What are these four tests actually doing?
A: Here is the technical details.
• Seq QD: Reading/writing the specified size file sequentially with 128 KiB blocks from the specified number of threads (queue depth). It turned out that this test is actually essential to utilize the high speed (GB/s) NVMe SSD read/write performance.
• 4K QD: Reading/writing the specific size file at random sequence (access all blocks in random order) with 4 KiB blocks from the specified number of threads (queue depth).
• Seq: Reading/writing the specified size file sequentially with 1 MiB blocks from one thread.
• 4K: Reading/writing the specified size file at random sequence (access all blocks in random order) with 4 KiB blocks from one thread.
Q: Why is the queue depth is limited to up to 1,024?
A: macOS only allows up to 2,048 threads per process as of this writing. I could change the maximum queue depth to up to about 2,000 but 1,024 should be good enough for now.
Code: Select all
$ sysctl kern.num_taskthreads kern.num_taskthreads: 2048
A: Short answer: Q1T32 on CDM5 is equivalent to QD32 on ADM. Long answer: I was going to try to mimic as close as possible but I couldn't find a good way to queue multiple asynchronous read/write requests "without" using multiple threads. And it shouldn't really matter where the read/write requests are coming from. So, we should be good with QD32.
Q: CDM5 and ADM have different default test settings. Why?
A: CDM5 uses 5 runs with 1GiB file size, and shows the highest score. ADM uses 1 run with 500MiB file size. And ADM shows the median score when there were multiple runs. I chose the file size 500MiB because random read/write tests on a hard drive would take somewhat impractically long time (more than ten minutes) with 1GiB. So I decided to set it to 500MiB by default. Also I noticed that the random write score on SSD gets significantly higher on subsequent runs which are possibly benefiting from the erase cycle completed from the previous runs. So, I decided to use 1 run by default. You could always change the settings to 5 runs with 1GiB file size if you want the test settings to be identical to CDM5.
Q: The score result green bar is not a linear scale?
A: It uses a logarithmic scale. This doesn't necessarily make sense but ADM uses the same logarithmic scale as CDM in order to make the results images comparable.
Q: How about Blackmagic Disk Speed Test? https://apps.apple.com/app/blackmagic-d ... d425264550
A: Blackmagic Disk Speed Test only runs sequential 5400 KiB (0x546000 bytes = 5529600 bytes = 5400 x 1024 bytes) block read/write tests. If you are only interested in a particular scenario (the data transfer rate your storage device/controller/interface can achieve from a single-threaded sequential read/write), there is nothing wrong with Blackmagic Disk Speed Test. With NVMe SSD devices, a single-threaded sequential read/write typically cannot achieve the best performance of the device. This is one of the reasons why CDM and ADM have the multi-threaded sequential read/write measurements.
Code: Select all
movl $0x546000, %edx callq 0x100019de6 ## symbol stub for: _read ... movl $0x546000, %edx callq 0x100019e0a ## symbol stub for: _write
Code: Select all
$ iostat -w1 disk4 disk4 cpu load average KB/t tps MB/s us sy id 1m 5m 15m 0.00 0 0.00 5 2 93 2.06 2.05 2.06 1800.00 582 1022.69 6 6 88 2.06 2.05 2.06 4.89 14 0.07 5 4 91 2.06 2.05 2.06 1800.00 580 1020.03 6 4 89 2.06 2.05 2.06 0.00 0 0.00 5 3 92 2.06 2.05 2.06 1800.00 581 1021.97 10 9 81 1.98 2.03 2.05 0.00 0 0.00 5 3 92 1.98 2.03 2.05 1800.00 393 690.67 6 4 91 1.98 2.03 2.05 1800.00 189 332.11 6 3 90 1.98 2.03 2.05 0.00 0 0.00 5 3 93 1.98 2.03 2.05
A: AJA System Test Lite also only runs sequential 5408 KiB block (default) read/write tests. The sequential read/write scores are almost equivalent to the top speed of your car on a straight road (NOTE: This is no longer true as a single-threaded sequential read/write won't achieve the "top" speed with recent NVMe SSD devices). If that's all you are interested in, sequential read/write scores are fine. If you are also interested in the overall performance of your car such as acceleration, torque, cornering, breaking and so on, you might want to pay attention to random read/write scores as well.
Code: Select all
$ /Applications/AJA\ System\ Test\ Lite.app/Contents/MacOS/AJAsystemtest ... frame size= 5537792 num frames= 193 ...
A: CrystalDiskMark is a de facto standard of storage performance measurement tool on Windows. Amazon reviews, tech article writers/editors, and even manufacturers use CDM to show the storage device performance characteristics in a single screenshot. I just wanted something similar for macOS so that I, or we all, can compare different storage devices regardless of the OS just by examining a single screenshot.