Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/llfio.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiall Douglas (s [underscore] sourceforge {at} nedprod [dot] com) <spam@nowhere>2016-03-21 02:41:51 +0300
committerNiall Douglas (s [underscore] sourceforge {at} nedprod [dot] com) <spam@nowhere>2016-03-21 02:41:51 +0300
commit758a934ab266ed660daa54b72e4606b78e374071 (patch)
tree6f2fe1c5d2b8331f9319549bc6f0c3390168eb6b /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.md62
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