diff options
author | Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com) <spam@nowhere> | 2016-03-21 02:41:51 +0300 |
---|---|---|
committer | Niall Douglas (s [underscore] sourceforge {at} nedprod [dot] com) <spam@nowhere> | 2016-03-21 02:41:51 +0300 |
commit | 758a934ab266ed660daa54b72e4606b78e374071 (patch) | |
tree | 6f2fe1c5d2b8331f9319549bc6f0c3390168eb6b /Readme.md |
AFIO v2: Relocate all the AFIO v2 files in fs_probe into the root hierarchy. AFIO v2 is now the master branch!
Diffstat (limited to 'Readme.md')
-rw-r--r-- | Readme.md | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/Readme.md b/Readme.md new file mode 100644 index 00000000..6d7415c5 --- /dev/null +++ b/Readme.md @@ -0,0 +1,62 @@ +This is the beginnings of the post-peer-review AFIO +v2 rewrite. You can view its documentation at https://ned14.github.io/boost.afio/ + +Todo: +- [ ] Somehow implement make_errored_result(errcode, extended_msg) +- [ ] Move caching into native_handle_type. +- [ ] Implement [[bindlib::make_free]] which injects member functions into the enclosing +namespace. +- [ ] Add macro helpers to Outcome for returning outcomes out of things +which cannot return values like constructors, and convert said exceptions/TLS +back into outcomes. + - Make use of std::system_error(errno, system_category, "custom error message"); +- [ ] Get Outcome to work perfectly with exceptions and RTTI disabled, this makes +Outcome useful in the games/audio world. + - [ ] Where Outcome might throw, do macro based action which could be any of: + - Throw an exception + - Call a deliberately undefined function to create a link error (release) or +assert & trap (debug) + - Some user based action e.g. fatal exit + - [ ] Add unit tests proving it for all platforms. + - [ ] Move AFIO to being tested with exceptions and RTTI disabled. +- [ ] There is much duplicate and sloppy code in AFIO v2. Reduce and eliminate. + +- [ ] C bindings for all AFIO v2 APIs. Write libclang parser which autogenerates +SWIG interface files from the .hpp files. + +- [ ] Add native BSD kqueues to POSIX AIO backend as is vastly more efficient. + - http://www.informit.com/articles/article.aspx?p=607373&seqNum=4 is a +very useful programming guide for POSIX AIO. +- [ ] Port to Linux KAIO + - http://linux.die.net/man/2/io_getevents would be in the run() loop. +pthread_sigqueue() can be used by post() to cause aio_suspend() to break +early to run user supplied functions. +- [ ] Add to docs for every API the number of malloc + free performed. + - Unit test op codes generated per set of i/o calls +- [ ] Don't run the cpu and sys tests if cpu and sys ids already in fs_probe_results.yaml + - Need to uniquely fingerprint a machine somehow? +- [ ] Fatter afio::path. We probably need to allow relative paths +based on a handle and fragment in afio::path, therefore might as well encapsulate +NT kernel vs win32 paths in there too. +- [ ] Add monitoring of CPU usage to tests. See GetThreadTimes. Make sure +worker thread times are added into results. +- [ ] Configurable tracking of op latency and throughput (bytes) for all +handles on some storage i.e. storage needs to be kept in a global map. + - Something which strongly resembles the memory bandwidth test + - [ ] Should have decile bucketing e.g. percentage in bottom 10%, percentage + in next 10% etc. Plus mean and stddev. + - [ ] Should either be resettable or subtractable i.e. points can be diffed. + - [ ] Add IOPS QD=1..N storage profile test + - [ ] Add throughput storage profile test +- [ ] Output into YAML comparable hashes for OS + device + FS + flags +so we can merge partial results for some combo into the results database. +- [ ] Write YAML parsing tool which merges fs_probe_results.yaml into +the results directory where flags and OS get its own directory and each YAML file +is named FS + device e.g. + - results/win64 direct=1 sync=0/NTFS + WDC WD30EFRX-68EUZN0 +- [ ] virtual handle::path_type handle::path(bool refresh=false) should be added using +GetFinalPathNameByHandle(FILE_NAME_OPENED). VOLUME_NAME_DOS vs VOLUME_NAME_NT should +depend on the current afio::path setting. +- [ ] directory_handle +- [ ] symlink_handle +- [ ] Missing functions on handle/file_handle from AFIO v1 |