Age | Commit message (Collapse) | Author |
|
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
|
|
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.
|
|
libiou got bulk ops allocating and free lists
|
|
In order to make use of the liburing register_files() helper, the
struct ring pointer is needed.
|
|
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.
|