Skip to content

Commit

Permalink
Release 1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
extratype committed Nov 8, 2021
1 parent b53beb3 commit aa86de8
Show file tree
Hide file tree
Showing 6 changed files with 29 additions and 13 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ I'm not responsible for the data stored using chunkdisk!
## Issues

* winspd-x64.dll is not compatible with the original to workaround [an issue](https://github.com/billziss-gh/winspd/issues/10). Specifically, invoking `SpdStorageUnitSendResponse()` or `SpdIoctlTransact()` leads to an undefined behavior. It's fine with the current WinSpd binaries though. The source code is available [here](https://github.com/extratype/winspd).
* I/O performance is not great with SSDs.
* Random I/O performance is not great with SSDs.

## Notes and Tips

Expand Down
8 changes: 4 additions & 4 deletions chunkdisk.rc
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
#include <winver.h>

VS_VERSION_INFO VERSIONINFO
FILEVERSION 0,9,0,0
PRODUCTVERSION 0,9,0,0
FILEVERSION 1,0,0,0
PRODUCTVERSION 1,0,0,0
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
Expand All @@ -18,12 +18,12 @@ BEGIN
BLOCK "040904b0"
BEGIN
VALUE "FileDescription", "chunkdisk"
VALUE "FileVersion", "0.9.0.0"
VALUE "FileVersion", "1.0.0.0"
VALUE "InternalName", "chunkdisk.exe"
VALUE "LegalCopyright", "Copyright (C) 2021 extratype"
VALUE "OriginalFilename", "chunkdisk.exe"
VALUE "ProductName", "chunkdisk"
VALUE "ProductVersion", "0.9.0.0"
VALUE "ProductVersion", "1.0.0.0"
END
END
BLOCK "VarFileInfo"
Expand Down
13 changes: 13 additions & 0 deletions docs/archived.txt
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,16 @@ Performance experiments with DiskSpd:
DRAM: > 1M IOPS, so single dispatcher
SSD: parallel accesses > outstanding (queued) accesses
HDD: better sequential performance with queue, tune total request size

WinSpd requests while sequential access:
Split in maximum transfer length

Overlap requests in multiple threads to keep disk busy
Buffered read: 2 ~ 4 threads
Buffered write: up to 5 threads

Requests more out of order with single dispatcher thread
Appears as if strided
Not queued, read-ahead buffer required

Memory usage: (maximum transfer length) * (number of threads)
8 changes: 8 additions & 0 deletions docs/changes.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,11 @@ v0.9
* Make I/O scheduling deterministic for better sequential performance on HDDs.
* Merge unmap ranges across requests for better space efficiency.
* Flush file metadata after one minute of inactivity.

v1.0

* Change maximum transfer length to 1MB to maximize sequential performance.
* Revert deterministic I/O scheduling to handle concurrent I/O's as intended.
* Improve handling buffers for small-sized I/O's.
* Fix bugs in unaligned (page-based) I/O's.
* Fix inactivity timer.
9 changes: 2 additions & 7 deletions docs/design.txt
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,8 @@ Asynchronous I/O:

--------------------------------------------------------------------------------

Scheduling requests in dispatcher:
worker = (address / 1048576) % (# of workers)
choose next worker if QD >= 32, wait if all full

characteristic:
requests parallelized if depth > 32
requests serialized if size < 1048576 bytes
One worker thread per dispatcher thread:
Bypass/Synchronous/Asynchronous I/O

ChunkDiskService:
Chunks:
Expand Down
2 changes: 1 addition & 1 deletion main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ DWORD CreateStorageUnit(PWSTR chunkdisk_file, BOOLEAN write_protected, PWSTR pip
err = [&params, write_protected, pipe_name, &unit]() -> DWORD
{
constexpr wchar_t ProductId[] = L"ChunkDisk";
constexpr wchar_t ProductRevision[] = L"0.9";
constexpr wchar_t ProductRevision[] = L"1.0";
auto unit_params = SPD_STORAGE_UNIT_PARAMS();

UuidCreate(&unit_params.Guid);
Expand Down

0 comments on commit aa86de8

Please sign in to comment.