实现内存池的测试用例、继承jemalloc和自实现内存池。
This commit is contained in:
18
README.md
18
README.md
@@ -9,9 +9,27 @@ save() -> 全保存数据集。
|
||||
#### 目前KV存储 key value 都是调用的 malloc, 都是系统的内存分配。
|
||||
1. 会出现大量的内存碎片,实现一个内存池,管理内存数据。
|
||||
2. 对比有内存池和没有内存池的性能差异,以及开源内存池 jemalloc 的性能差别。
|
||||
`sudo apt-get install -y libjemalloc-dev`
|
||||
3. 性能测:
|
||||
1. qps 有没有内存池。
|
||||

|
||||
|
||||
2.虚拟内存的占用情况 htop。插入百万条数据集(KV*100w,set 200w del 100w delete 200w set 100w)。
|
||||

|
||||

|
||||

|
||||

|
||||
无内存池: --> time_used=1488789 ms, ops=6000000, qps=4030
|
||||

|
||||
自实现内存池: --> time_used=1439444 ms, ops=6000000, qps=4168
|
||||
|
||||
性能分析:
|
||||
1. key :
|
||||
1. A_0: mp_alloc (3+8B) -> 16B, malloc (3B) -> 8B
|
||||
2. A_1000: mp_alloc (6+8B) -> 16B, malloc (3B) -> 8B
|
||||
2. A_100000 : mp_alloc(8+8B) -> 16B, malloc (8B) -> 16B
|
||||
|
||||
内存初始状态 25B, malloc (115-25B) = 90B, mp_alloc(193-25B) = 168B,平均浪费接近50%。
|
||||
|
||||
#### 目前的kv存储是单指令的,一条指令一交互。
|
||||
从单挑指令实现批量处理。
|
||||
|
||||
Reference in New Issue
Block a user