summaryrefslogtreecommitdiff
path: root/libiou
AgeCommit message (Collapse)Author
2021-08-24libiou: bump submodule for batched CQE consumingVito Caputo
Preliminary measurements show significant efficiency gains in at least one `verify hashed-objects` test with a pile of journals: Before: [root@luminesce build]# echo 2 > /proc/sys/vm/drop_caches; grep dm-2 /proc/diskstats; time src/jio verify hashed-objects; grep dm-2 /proc/diskstats 254 2 dm-2 657291 0 134621503 521531 35549 0 4029868 276790 0 553094 798322 0 0 0 0 0 0 real 0m7.595s user 0m2.256s sys 0m11.880s 254 2 dm-2 667507 0 136637545 530163 35550 0 4029948 276790 0 560640 806954 0 0 0 0 0 0 [root@luminesce build]# time src/jio verify hashed-objects real 0m6.366s user 0m1.918s sys 0m10.062s After: [root@luminesce build]# echo 2 > /proc/sys/vm/drop_caches; grep dm-2 /proc/diskstats; time src/jio verify hashed-objects; grep dm-2 /proc/diskstats 254 2 dm-2 647038 0 132604603 511855 35395 0 4028104 276581 0 546827 788436 0 0 0 0 0 0 real 0m5.968s user 0m1.649s sys 0m9.859s 254 2 dm-2 657256 0 134620709 521521 35396 0 4028112 276581 0 552747 798102 0 0 0 0 0 0 [root@luminesce build]# time src/jio verify hashed-objects real 0m4.873s user 0m1.429s sys 0m8.184s
2021-08-24libiou,thunk_h: bump for iou_async()/mt-safe thunksVito Caputo
libiou sprouted a thread pool, to make thunks safe for dispatching/freeing from threads thunk.h needed some compare-and-swap magic in maintaining those free lists. Since libiou pulls in pthreads now, bring pthreads in here too.
2021-08-16libiou: bump libiou submodule for faster opsVito Caputo
libiou got bulk ops allocating and free lists
2021-08-15libiou: bump libiou submodule for iou_ring()Vito Caputo
In order to make use of the liburing register_files() helper, the struct ring pointer is needed.
2020-11-25libiou: add libiou submoduleVito Caputo
libiou is a thin veneer over io_uring defining an ergonomic async IO-oriented API. Since jio shouldn't need to do anything computationally intensive, the combination of thunk_h for closures and libiou+io_uring for scheduling closures according to IO completions should be sufficient for an implementation. Though it may prove annoying to not have per-task stacks and the ability to arbitrarily yield and/or delay execution pending completion of non-IO results, we'll see.
© All Rights Reserved