
Show HN: File System Performance Testing Tool for Windows - apankrat
https://ccsiobench.com
======
apankrat
Just a very pedantic IO test that goes through a long list of permutations of
IO buffer sizes, counts and IO modes and finds the one that delivers the
highest read/write rate. Basically, it estimates maximum IO rates
_realistically_ achievable by a userspace process, as opposed to a physical
read/write rate at a disk level, which can be (misleadingly) higher.

The theory is over at [https://ccsiobench.com/fast-bulk-
io](https://ccsiobench.com/fast-bulk-io)

    
    
        ---
    

NVMe drive from my test box -
[https://ccsiobench.com/s/UAr3f](https://ccsiobench.com/s/UAr3f)

SSD in USB3 enclosure -
[https://ccsiobench.com/s/UAtNj](https://ccsiobench.com/s/UAtNj)

TrueCrypt volume on the same -
[https://ccsiobench.com/s/UAxmh](https://ccsiobench.com/s/UAxmh)

~~~
Sunset
Will this work with something like Ext2Fsd or other usermode file system
drivers not from microsoft which work on windows?

~~~
apankrat
Yep, it works with anything that is addressable as a file system location,
i.e. as X:\Path or \\\Server\Share\Path format.

------
kazinator
Having measured file system performance on Windows, what _action_ can you take
based on the results?

~~~
apankrat
For one, you can get an idea if you are getting proper performance out of your
devices. For example, NVMe drives plugged directly into certain revisions of
ASYS motherboards will not get to their spec speeds, you will need to use a
M2/PCIe raiser card. Similarly, not all USB3 ports on motherboards are created
equal. I have about 20% difference in performance of external drive between
two ports on my work machine.

For two, you can estimate the overhead you get by enabling NTFS compression
and/or Bitlocker for a drive.

Ditto for the antivirus overhead. For example, BitDefender is known to
absolutely _kill_ multi-stream SMB3 performance, dragging 10GbE speeds down to
1Gbps or less.

~~~
ferongr
I think the parent meant, what can you tune in Windows itself to get the
"best" performance shown in the tool? Or are those buffer sizes and counts
program dependent and not something the user can change?

~~~
apankrat
Short of enabling jumbo frames on network adapters I don't think there's much
in terms of system-wide tuning. Every program that cares about IO performance
would implement it on top of raw File API (CreateFile, ReadFile, etc), so the
IO strategy will indeed be concealed in the guts of the program.

