测试内存池
This commit is contained in:
291
README.md
291
README.md
@@ -4,14 +4,14 @@
|
||||
1. ntyco需要作为kvstore的submodule,通过git clone一次下载。 **完成**。
|
||||
2. README需要包含编译步骤,测试方案与可行性,性能数据。 **完成**。
|
||||
3. 全量持久化保存数据集。 **BUG FIX**。
|
||||
4. 持久化的性能数据。
|
||||
4. 持久化的性能数据。 **完成**。
|
||||
5. 特殊字符,可以解决redis的resp协议。 **完成**。
|
||||
6. 实现配置文件,把日志级别,端口ip,主从模式,持久化方案。 **完成**。
|
||||
7. 持久化落盘用io_uring,加载配置文件用mmap。 **完成**。
|
||||
8. 主从同步的性能,开启与关闭性能做到5%?。
|
||||
9. 主从同步600w条,出现的coredump。 **完成**。
|
||||
10. 主从同步用ebpf实现。 **BUG FIX**。
|
||||
11. 内存池测试qps与虚拟内存,物理内存。
|
||||
11. 内存池测试qps与虚拟内存,物理内存。 **完成**。
|
||||
12. 实现一个内存泄露检测组件。 **完成**。
|
||||
|
||||
|
||||
@@ -38,14 +38,13 @@ make
|
||||
测试条件:
|
||||
1. 不启用持久化。
|
||||
2. 不启用主从同步。
|
||||
2. pipline:
|
||||
3. pipline:
|
||||
1. RSET 100w 条, p:i v:i -> +OK
|
||||
2. RGET 100w 条, p:i -> +v:i
|
||||
3. RDEL 100w 条。 p:i -> +OK
|
||||
3. 重复 15 次.
|
||||
4. 本机发送请求。
|
||||
|
||||
内存分配: malloc
|
||||
#### 内存分配: malloc
|
||||
```bash
|
||||
lian@ubuntu:~/share/9.1-kvstore$ ./test-redis/testcase 192.168.10.129 8888 3
|
||||
Connected to 192.168.10.129:8888
|
||||
@@ -103,122 +102,210 @@ average qps:880462
|
||||
ALL TESTS PASSED.
|
||||
```
|
||||
|
||||
内存分配: 自实现内存池
|
||||
#### 内存分配: 自实现内存池
|
||||
```bash
|
||||
lian@ubuntu:~/share/9.1-kvstore$ ./test-redis/testcase 192.168.10.129 8888 3
|
||||
Connected to 192.168.10.129:8888
|
||||
BATCH (N=3000000) --> time_used=3552 ms, qps=844594
|
||||
BATCH (N=3000000) --> time_used=3404 ms, qps=881316
|
||||
BATCH (N=3000000) --> time_used=3083 ms, qps=973078
|
||||
BATCH (N=3000000) --> time_used=3315 ms, qps=904977
|
||||
BATCH (N=3000000) --> time_used=3462 ms, qps=866551
|
||||
BATCH (N=3000000) --> time_used=3334 ms, qps=899820
|
||||
BATCH (N=3000000) --> time_used=3358 ms, qps=893388
|
||||
BATCH (N=3000000) --> time_used=3423 ms, qps=876424
|
||||
BATCH (N=3000000) --> time_used=3319 ms, qps=903886
|
||||
BATCH (N=3000000) --> time_used=3327 ms, qps=901713
|
||||
BATCH (N=3000000) --> time_used=3157 ms, qps=950269
|
||||
BATCH (N=3000000) --> time_used=3241 ms, qps=925640
|
||||
BATCH (N=3000000) --> time_used=3301 ms, qps=908815
|
||||
BATCH (N=3000000) --> time_used=3047 ms, qps=984574
|
||||
BATCH (N=3000000) --> time_used=3085 ms, qps=972447
|
||||
BATCH (N=3000000) --> time_used=3119 ms, qps=961846
|
||||
BATCH (N=3000000) --> time_used=3104 ms, qps=966494
|
||||
BATCH (N=3000000) --> time_used=3163 ms, qps=948466
|
||||
BATCH (N=3000000) --> time_used=3033 ms, qps=989119
|
||||
BATCH (N=3000000) --> time_used=3170 ms, qps=946372
|
||||
BATCH (N=3000000) --> time_used=3299 ms, qps=909366
|
||||
BATCH (N=3000000) --> time_used=3272 ms, qps=916870
|
||||
BATCH (N=3000000) --> time_used=3294 ms, qps=910746
|
||||
BATCH (N=3000000) --> time_used=3182 ms, qps=942803
|
||||
BATCH (N=3000000) --> time_used=3190 ms, qps=940438
|
||||
BATCH (N=3000000) --> time_used=3493 ms, qps=858860
|
||||
BATCH (N=3000000) --> time_used=3111 ms, qps=964320
|
||||
BATCH (N=3000000) --> time_used=3220 ms, qps=931677
|
||||
BATCH (N=3000000) --> time_used=3067 ms, qps=978154
|
||||
BATCH (N=3000000) --> time_used=3345 ms, qps=896860
|
||||
BATCH (N=3000000) --> time_used=3319 ms, qps=903886
|
||||
BATCH (N=3000000) --> time_used=3312 ms, qps=905797
|
||||
BATCH (N=3000000) --> time_used=3337 ms, qps=899011
|
||||
BATCH (N=3000000) --> time_used=3309 ms, qps=906618
|
||||
BATCH (N=3000000) --> time_used=3385 ms, qps=886262
|
||||
BATCH (N=3000000) --> time_used=3328 ms, qps=901442
|
||||
BATCH (N=3000000) --> time_used=3194 ms, qps=939261
|
||||
BATCH (N=3000000) --> time_used=3309 ms, qps=906618
|
||||
BATCH (N=3000000) --> time_used=3262 ms, qps=919681
|
||||
BATCH (N=3000000) --> time_used=3314 ms, qps=905250
|
||||
BATCH (N=3000000) --> time_used=3382 ms, qps=887049
|
||||
BATCH (N=3000000) --> time_used=3381 ms, qps=887311
|
||||
BATCH (N=3000000) --> time_used=3416 ms, qps=878220
|
||||
BATCH (N=3000000) --> time_used=3192 ms, qps=939849
|
||||
BATCH (N=3000000) --> time_used=3085 ms, qps=972447
|
||||
BATCH (N=3000000) --> time_used=3150 ms, qps=952380
|
||||
BATCH (N=3000000) --> time_used=3296 ms, qps=910194
|
||||
BATCH (N=3000000) --> time_used=3331 ms, qps=900630
|
||||
BATCH (N=3000000) --> time_used=3279 ms, qps=914913
|
||||
BATCH (N=3000000) --> time_used=2996 ms, qps=1001335
|
||||
BATCH (N=3000000) --> time_used=3387 ms, qps=885739
|
||||
BATCH (N=3000000) --> time_used=3346 ms, qps=896592
|
||||
BATCH (N=3000000) --> time_used=3241 ms, qps=925640
|
||||
BATCH (N=3000000) --> time_used=3353 ms, qps=894721
|
||||
BATCH (N=3000000) --> time_used=3366 ms, qps=891265
|
||||
BATCH (N=3000000) --> time_used=3387 ms, qps=885739
|
||||
BATCH (N=3000000) --> time_used=3382 ms, qps=887049
|
||||
BATCH (N=3000000) --> time_used=3358 ms, qps=893388
|
||||
BATCH (N=3000000) --> time_used=3372 ms, qps=889679
|
||||
BATCH (N=3000000) --> time_used=3467 ms, qps=865301
|
||||
BATCH (N=3000000) --> time_used=3243 ms, qps=925069
|
||||
BATCH (N=3000000) --> time_used=3191 ms, qps=940144
|
||||
BATCH (N=3000000) --> time_used=3365 ms, qps=891530
|
||||
BATCH (N=3000000) --> time_used=3218 ms, qps=932256
|
||||
BATCH (N=3000000) --> time_used=3332 ms, qps=900360
|
||||
BATCH (N=3000000) --> time_used=3172 ms, qps=945775
|
||||
BATCH (N=3000000) --> time_used=3211 ms, qps=934288
|
||||
BATCH (N=3000000) --> time_used=3001 ms, qps=999666
|
||||
BATCH (N=3000000) --> time_used=3143 ms, qps=954502
|
||||
BATCH (N=3000000) --> time_used=3111 ms, qps=964320
|
||||
BATCH (N=3000000) --> time_used=3123 ms, qps=960614
|
||||
BATCH (N=3000000) --> time_used=3257 ms, qps=921093
|
||||
BATCH (N=3000000) --> time_used=3037 ms, qps=987816
|
||||
BATCH (N=3000000) --> time_used=3135 ms, qps=956937
|
||||
BATCH (N=3000000) --> time_used=3124 ms, qps=960307
|
||||
BATCH (N=3000000) --> time_used=3043 ms, qps=985869
|
||||
BATCH (N=3000000) --> time_used=3086 ms, qps=972132
|
||||
BATCH (N=3000000) --> time_used=3201 ms, qps=937207
|
||||
average qps:911106
|
||||
BATCH (N=3000000) --> time_used=3276 ms, qps=915750
|
||||
BATCH (N=3000000) --> time_used=3058 ms, qps=981033
|
||||
BATCH (N=3000000) --> time_used=3024 ms, qps=992063
|
||||
BATCH (N=3000000) --> time_used=3224 ms, qps=930521
|
||||
BATCH (N=3000000) --> time_used=3235 ms, qps=927357
|
||||
BATCH (N=3000000) --> time_used=3334 ms, qps=899820
|
||||
BATCH (N=3000000) --> time_used=3427 ms, qps=875401
|
||||
BATCH (N=3000000) --> time_used=3218 ms, qps=932256
|
||||
BATCH (N=3000000) --> time_used=3191 ms, qps=940144
|
||||
BATCH (N=3000000) --> time_used=3179 ms, qps=943692
|
||||
BATCH (N=3000000) --> time_used=3104 ms, qps=966494
|
||||
BATCH (N=3000000) --> time_used=3202 ms, qps=936914
|
||||
BATCH (N=3000000) --> time_used=3184 ms, qps=942211
|
||||
BATCH (N=3000000) --> time_used=3000 ms, qps=1000000
|
||||
BATCH (N=3000000) --> time_used=3280 ms, qps=914634
|
||||
BATCH (N=3000000) --> time_used=3141 ms, qps=955109
|
||||
BATCH (N=3000000) --> time_used=3198 ms, qps=938086
|
||||
BATCH (N=3000000) --> time_used=3126 ms, qps=959692
|
||||
average qps:942837
|
||||
ALL TESTS PASSED.
|
||||
```
|
||||
|
||||
内存分配:jemalloc
|
||||
#### 内存分配:jemalloc
|
||||
```shell
|
||||
lian@ubuntu:~/share/9.1-kvstore$ ./test-redis/testcase 192.168.10.129 8888 3
|
||||
Connected to 192.168.10.129:8888
|
||||
BATCH (N=3000000) --> time_used=3197 ms, qps=938379
|
||||
BATCH (N=3000000) --> time_used=3221 ms, qps=931387
|
||||
BATCH (N=3000000) --> time_used=3360 ms, qps=892857
|
||||
BATCH (N=3000000) --> time_used=3292 ms, qps=911300
|
||||
BATCH (N=3000000) --> time_used=3407 ms, qps=880540
|
||||
BATCH (N=3000000) --> time_used=3317 ms, qps=904431
|
||||
BATCH (N=3000000) --> time_used=3337 ms, qps=899011
|
||||
BATCH (N=3000000) --> time_used=3384 ms, qps=886524
|
||||
BATCH (N=3000000) --> time_used=3355 ms, qps=894187
|
||||
BATCH (N=3000000) --> time_used=3379 ms, qps=887836
|
||||
BATCH (N=3000000) --> time_used=3243 ms, qps=925069
|
||||
BATCH (N=3000000) --> time_used=3377 ms, qps=888362
|
||||
BATCH (N=3000000) --> time_used=3212 ms, qps=933997
|
||||
BATCH (N=3000000) --> time_used=3248 ms, qps=923645
|
||||
BATCH (N=3000000) --> time_used=3511 ms, qps=854457
|
||||
BATCH (N=3000000) --> time_used=3280 ms, qps=914634
|
||||
BATCH (N=3000000) --> time_used=3603 ms, qps=832639
|
||||
BATCH (N=3000000) --> time_used=3418 ms, qps=877706
|
||||
BATCH (N=3000000) --> time_used=3353 ms, qps=894721
|
||||
BATCH (N=3000000) --> time_used=3435 ms, qps=873362
|
||||
BATCH (N=3000000) --> time_used=3250 ms, qps=923076
|
||||
BATCH (N=3000000) --> time_used=3550 ms, qps=845070
|
||||
BATCH (N=3000000) --> time_used=3536 ms, qps=848416
|
||||
BATCH (N=3000000) --> time_used=3273 ms, qps=916590
|
||||
BATCH (N=3000000) --> time_used=3224 ms, qps=930521
|
||||
BATCH (N=3000000) --> time_used=3161 ms, qps=949066
|
||||
BATCH (N=3000000) --> time_used=3143 ms, qps=954502
|
||||
BATCH (N=3000000) --> time_used=3342 ms, qps=897666
|
||||
BATCH (N=3000000) --> time_used=3410 ms, qps=879765
|
||||
BATCH (N=3000000) --> time_used=3522 ms, qps=851788
|
||||
BATCH (N=3000000) --> time_used=3035 ms, qps=988467
|
||||
BATCH (N=3000000) --> time_used=3352 ms, qps=894988
|
||||
BATCH (N=3000000) --> time_used=3226 ms, qps=929944
|
||||
BATCH (N=3000000) --> time_used=3406 ms, qps=880798
|
||||
BATCH (N=3000000) --> time_used=3336 ms, qps=899280
|
||||
BATCH (N=3000000) --> time_used=3307 ms, qps=907166
|
||||
BATCH (N=3000000) --> time_used=3171 ms, qps=946073
|
||||
BATCH (N=3000000) --> time_used=3252 ms, qps=922509
|
||||
BATCH (N=3000000) --> time_used=3296 ms, qps=910194
|
||||
BATCH (N=3000000) --> time_used=3301 ms, qps=908815
|
||||
BATCH (N=3000000) --> time_used=3403 ms, qps=881575
|
||||
BATCH (N=3000000) --> time_used=3234 ms, qps=927643
|
||||
BATCH (N=3000000) --> time_used=3152 ms, qps=951776
|
||||
BATCH (N=3000000) --> time_used=3089 ms, qps=971188
|
||||
BATCH (N=3000000) --> time_used=3287 ms, qps=912686
|
||||
BATCH (N=3000000) --> time_used=3079 ms, qps=974342
|
||||
BATCH (N=3000000) --> time_used=3261 ms, qps=919963
|
||||
BATCH (N=3000000) --> time_used=3123 ms, qps=960614
|
||||
BATCH (N=3000000) --> time_used=3234 ms, qps=927643
|
||||
BATCH (N=3000000) --> time_used=3056 ms, qps=981675
|
||||
BATCH (N=3000000) --> time_used=3040 ms, qps=986842
|
||||
BATCH (N=3000000) --> time_used=3187 ms, qps=941324
|
||||
BATCH (N=3000000) --> time_used=3311 ms, qps=906070
|
||||
BATCH (N=3000000) --> time_used=3155 ms, qps=950871
|
||||
BATCH (N=3000000) --> time_used=3318 ms, qps=904159
|
||||
BATCH (N=3000000) --> time_used=3372 ms, qps=889679
|
||||
BATCH (N=3000000) --> time_used=3254 ms, qps=921942
|
||||
BATCH (N=3000000) --> time_used=3386 ms, qps=886001
|
||||
BATCH (N=3000000) --> time_used=3413 ms, qps=878992
|
||||
BATCH (N=3000000) --> time_used=3474 ms, qps=863557
|
||||
BATCH (N=3000000) --> time_used=3412 ms, qps=879249
|
||||
BATCH (N=3000000) --> time_used=3414 ms, qps=878734
|
||||
BATCH (N=3000000) --> time_used=3325 ms, qps=902255
|
||||
BATCH (N=3000000) --> time_used=3346 ms, qps=896592
|
||||
BATCH (N=3000000) --> time_used=3345 ms, qps=896860
|
||||
BATCH (N=3000000) --> time_used=3582 ms, qps=837520
|
||||
BATCH (N=3000000) --> time_used=3412 ms, qps=879249
|
||||
BATCH (N=3000000) --> time_used=3348 ms, qps=896057
|
||||
BATCH (N=3000000) --> time_used=3517 ms, qps=852999
|
||||
BATCH (N=3000000) --> time_used=3354 ms, qps=894454
|
||||
BATCH (N=3000000) --> time_used=3529 ms, qps=850099
|
||||
BATCH (N=3000000) --> time_used=3473 ms, qps=863806
|
||||
BATCH (N=3000000) --> time_used=3521 ms, qps=852030
|
||||
BATCH (N=3000000) --> time_used=3370 ms, qps=890207
|
||||
BATCH (N=3000000) --> time_used=3375 ms, qps=888888
|
||||
BATCH (N=3000000) --> time_used=3190 ms, qps=940438
|
||||
BATCH (N=3000000) --> time_used=3324 ms, qps=902527
|
||||
BATCH (N=3000000) --> time_used=3253 ms, qps=922225
|
||||
BATCH (N=3000000) --> time_used=3230 ms, qps=928792
|
||||
BATCH (N=3000000) --> time_used=3267 ms, qps=918273
|
||||
BATCH (N=3000000) --> time_used=3352 ms, qps=894988
|
||||
BATCH (N=3000000) --> time_used=3433 ms, qps=873871
|
||||
BATCH (N=3000000) --> time_used=3374 ms, qps=889152
|
||||
BATCH (N=3000000) --> time_used=3360 ms, qps=892857
|
||||
BATCH (N=3000000) --> time_used=3463 ms, qps=866300
|
||||
BATCH (N=3000000) --> time_used=3499 ms, qps=857387
|
||||
BATCH (N=3000000) --> time_used=3294 ms, qps=910746
|
||||
BATCH (N=3000000) --> time_used=3295 ms, qps=910470
|
||||
BATCH (N=3000000) --> time_used=3148 ms, qps=952986
|
||||
BATCH (N=3000000) --> time_used=3228 ms, qps=929368
|
||||
average qps:914031
|
||||
BATCH (N=3000000) --> time_used=3311 ms, qps=906070
|
||||
BATCH (N=3000000) --> time_used=3443 ms, qps=871333
|
||||
BATCH (N=3000000) --> time_used=3381 ms, qps=887311
|
||||
BATCH (N=3000000) --> time_used=3422 ms, qps=876680
|
||||
BATCH (N=3000000) --> time_used=3421 ms, qps=876936
|
||||
BATCH (N=3000000) --> time_used=3322 ms, qps=903070
|
||||
BATCH (N=3000000) --> time_used=3494 ms, qps=858614
|
||||
average qps:892493
|
||||
ALL TESTS PASSED.
|
||||
```
|
||||
|
||||
### 测试2:持久化
|
||||
测试条件:
|
||||
1. 启用持久化。
|
||||
2. 不启用主从同步。
|
||||
3. pipline:
|
||||
1. RSET 100w 条, p:i v:i -> +OK
|
||||
2. RGET 100w 条, p:i -> +v:i
|
||||
3. RDEL 100w 条。 p:i -> +OK
|
||||
5. 本机发送请求。
|
||||
|
||||
```shell
|
||||
lian@ubuntu:~/share/9.1-kvstore$ ./test-redis/testcase 192.168.10.129 8888 4
|
||||
Connected to 192.168.10.129:8888
|
||||
BATCH (N=3000000) --> time_used=3500 ms, qps=857142
|
||||
BATCH (N=3000000) --> time_used=3322 ms, qps=903070
|
||||
BATCH (N=3000000) --> time_used=3424 ms, qps=876168
|
||||
BATCH (N=3000000) --> time_used=3483 ms, qps=861326
|
||||
BATCH (N=3000000) --> time_used=3421 ms, qps=876936
|
||||
BATCH (N=3000000) --> time_used=3519 ms, qps=852514
|
||||
BATCH (N=3000000) --> time_used=3597 ms, qps=834028
|
||||
BATCH (N=3000000) --> time_used=3504 ms, qps=856164
|
||||
BATCH (N=3000000) --> time_used=3281 ms, qps=914355
|
||||
BATCH (N=3000000) --> time_used=3446 ms, qps=870574
|
||||
average qps:870227
|
||||
ALL TESTS PASSED.
|
||||
```
|
||||
|
||||
### 测试3:内存
|
||||
|
||||
#### malloc
|
||||
```shell
|
||||
VIRT 58504
|
||||
RES 4604
|
||||
|
||||
插入 20w 删除 10w,重复 10 次,共计插入 200w 删除 100w。
|
||||
BATCH (N=3000000) --> time_used=3320 ms, qps=1807228
|
||||
|
||||
VIRT 208M
|
||||
RES 155M
|
||||
|
||||
插入 10w 删除 20w,重复 10 次,共计插入 100w 删除 200w。
|
||||
BATCH (N=3000000) --> time_used=3097 ms, qps=1937358
|
||||
|
||||
VIRT 208M
|
||||
RES 155M
|
||||
```
|
||||

|
||||

|
||||

|
||||
|
||||
#### mypool
|
||||
```shell
|
||||
VIRT 58504
|
||||
RES 4636
|
||||
|
||||
插入 20w 删除 10w,重复 30 次,共计插入 600w 删除 300w。
|
||||
BATCH (N=3000000) --> time_used=3184 ms, qps=1884422
|
||||
|
||||
VIRT 625M
|
||||
RES 572M
|
||||
|
||||
插入 10w 删除 20w,重复 10 次,共计插入 100w 删除 200w。
|
||||
BATCH (N=3000000) --> time_used=3022 ms, qps=1985440
|
||||
|
||||
VIRT 122M
|
||||
RES 71492
|
||||
```
|
||||

|
||||

|
||||

|
||||
|
||||
#### jemalloc
|
||||
```shell
|
||||
VIRT 69376
|
||||
RES 5408
|
||||
|
||||
插入 20w 删除 10w,重复 30 次,共计插入 600w 删除 300w。
|
||||
BATCH (N=9000000) --> time_used=9436 ms, qps=1907587
|
||||
|
||||
VIRT 356M
|
||||
RES 294M
|
||||
|
||||
插入 10w 删除 20w,重复 30 次,共计插入 300w 删除 600w。
|
||||
BATCH (N=9000000) --> time_used=9353 ms, qps=1924516
|
||||
|
||||
VIRT 356M
|
||||
RES 119M
|
||||
```
|
||||
|
||||
### 面试题
|
||||
1. 为什么会实现kvstore,使用场景在哪里?
|
||||
|
||||
Reference in New Issue
Block a user