-
Notifications
You must be signed in to change notification settings - Fork 1
/
TODO
80 lines (71 loc) · 1.89 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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
v 0.5
=====
* finish TODOs in the new memory manager
* use normal free list for large sizes?
* fewer small size classes?
* chunk coalescing
* split large memcache entries
* minimize memcache locks or non-blocking memcache table
;;; At this point it becomes ready to challenge stock memcached
v 0.6
=====
* enhance task sharing
* re-evaluate combiners
* cleanup and re-evaluate futures
* parallel polling mechanism
* ensure timer events are not starved by I/O
* ensure open sockets are orderly destroyed on shutdown
* support custom signal events
* cleanup net and netbuf interfaces
* enhance statistics
** net statistics
** ring statistics
** alloc statistics
** global lock counters
* UDP servers
* refine memcache module:
** statistics
** add UDP protocol support
Undetermined
============
Essentials:
* system call threads
* disk I/O threads
* syslog
* utf8 support for scan, json
* float/double support for format, scan, json
* SSL servers
* performance instrumentation
Larger items:
* NUMA support:
** NUMA-aware memory allocation
** NUMA-aware synchronization
** NUMA-aware work scheduling
* persistence
* replication
* HTTP module
* redis protocol
* arm aarch64 port
* extension language
* AF_PACKET and/or DPDK-based net I/O
Low priority enhancements:
* slab allocator?
* hires timers
* DNS resolver
* background workers
* fs event notification
* core and task local storage (tls)
* exit idle workers pending for too long
* reap dead tasks pending for too long
* adopt C11-compatible fences and atomics
* non-blocking log
* backoff and/or wait queue on ring full
* non-blocking pool growth
* shrink pools on low demand
* shrink memcache table on low demand
* generic work stealing
* proper future cancellation
** let tasks to be canceled across cores
** let catch task termination with setjmp/longjmp or libunwind mechanism
* try to detect clock adjustments and reset realtime timers accordingly
* failure trace records