(no commit message)
[ikiwiki.git] / docs / developer / SimonsTODOs.mdwn
1 ## Stuff 
2
3
4
5
6 * Import GDB 6.8
7
8
9 ## HAMMER
10
11 * Maintain snaphshot entries as btree nodes and not as softlinks
12
13 * Better on-disk placement to reduce seek times
14
15 * "Free copies" - cache recently read/written block CRCs, on write check CRC and on match verify that the blocks
16   are the same.  Then just create a btree link to the original data.  This could also be done in a hammer cleanup
17   pass, effectively de-duplicating the file system.
18
19
20 ## Memory Management (Kernel) 
21
22
23
24 Overal goal:  reduce malloc() use and replace with object cache allocations.  This should increase performance.
25
26
27
28
29 * Make free() nonblocking.  At the moment a call to free() might block because it might need to
30
31   aquire the BGL and maybe needs to wait for other locks (needs to be checked).
32
33
34
35   This allows us to use free() with dragonfly matching semantic, i.e. it can be used in critical sections
36
37   or with a spinlock held/in an interrupt.
38
39
40
41   For this to work, we need to:
42
43
44
45
46 * push locking into vm_map_* routines
47
48
49
50
51 * make sure no code path from free() might need to block
52
53
54
55
56
57
58 * polish up the objcache to work like bonwick described it, most important:  make magazines adjust
59
60   their size depending on depot lock contention
61
62
63
64
65 * implement a real slab allocator (bonwick) and switch the objcache to use it.  It could us
66
67   per-cpu (not so good, i think) or per-numa-cluster slabs, but in the beginning it for sure is possible
68
69   to use one slab for all, as most allocations should be satisfied by the objcache (and be serialized
70
71   anyways already by the depot lock)
72
73
74
75
76 * find and change code paths assuming power-of-2 allocations are power-of-2 allocated
77
78
79
80
81 * switch malloc() and free() to use the objcache for reasonable sized allocations
82
83   use kmem for larger ones
84
85
86
87 ## Bootup 
88
89
90
91 Investigate why the system does not boot within one second.  I have a fast box, this should be possible.  Somewhere are delays adding up.  Maybe use kernel threads for probing/initialisation.
92
93
94
95 ## Profiling 
96
97
98
99 Port [pmc](http://people.freebsd.org/~jkoshy/projects/perf-measurement/) (and maybe something like oprofile), so that we can find problematic areas.
100