-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTODO
58 lines (39 loc) · 2.37 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
* asynchronous pipelining
(currently being developed in branch parallel_pipelining_integration)
* replace build system, something with '$LIBNAME-config --libs --cflags ...' would be nice
* if the stxxl disk files have been enlarged because more external memory
was requested by the program, resize them afterwards to
max(size_at_program_start, configured_size)
https://sourceforge.net/forum/message.php?msg_id=4925158
* integrate unordered_map branch
* allocation strategies: provide a method get_num_disks()
and don't use stxxl::config::get_instance()->disks_number() inappropriately
* implement recursion in stable_ksort and do not assume random key
distribution, do sampling instead
as a start, at least abort early if the expected size of a bucket is larger
than the memory available to sort it
* debug stable_ksort in depth, there are still some crashing cases left
* continue using the new approach for STXXL_VERBOSE:
$(CXX) -DSTXXL_VERBOSE_FOO=STXXL_VERBOSEx
* check+fix all sorted_runs() calls to not cause write I/Os
* on disk destruction, check whether all blocks had been deallocated before,
i.e. free_bytes == disk_size
* implement an allocator which looks at the available free space on disks
when distributing blocks to disks, or does load-balancing depending
on the given speed of the disks
* implement new disk queuing strategy that supports NCQ,
which is now widely available in HDDs/SSDs;
probably most interesting for rather small block sizes
(currently begin developed in branch kernelaio)
* allow configuration of the block-managed disks using API calls,
not only through the configuration file.
* separate library sources and tests/benchmarks
(e. g. to top level directories src/ and tests/)
* abstract away block manager so every container can attach to a file.
* overhead: stream::sorted_runs (which may be rather big) is copied into stream_runs_merger
* overhead: stream::sorted_runs is copy-initialized from locally created runs
* retry incomplete I/Os for all file types (currently only syscall)
* iostats: add support for splitting I/Os and truncating reads at EOF
* do not specify marginal properties such as allocation strategy as part of the template type.
instead, make such properties dynamically configurable using run-time polymorphism,
which would incur only a negligible running time overhead (one virtual function call per block).