Skip to content

纯内存数据和RAM&SSD混合情况

lijingcheng edited this page Dec 21, 2017 · 1 revision

测试环境

相同配置服务端、客户机各1台:

CPU: 24 Cores, Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz

MEM: 251G DDR4

OS: CentOS Linux release 7.3.1611 (Core)

NETWORK CARD: Intel Corporation I350 Gigabit Network Connection (rev 01)

DISK: Intel® SSD DC S3520 Series 1.6T

测试接口

set和get

测试条件

写入1亿个string类型key, value长度为200, redis配置aof持久化.

PS:纯冷数据访问性能参考 Swapdb-In-SSD-Workload-Performance-Benchmarks

热数据性能对比

set_get_performance

TPS TP50 TP90 TP99 TP999 TP100
Ssdb(All cache) Set 94759.78 1 2 3 12 32
Get 92919.53 2 2 2 3 4
Pika(16 worker) Set 129701.69 1 1 1 3 187
Get 157903.05 1 1 1 2 21
Redis set 123152.71 1 1 2 2 4
get 145201.09 1 1 1 1 4
Swap(All hot) Set 121506.69 1 1 2 2 3
Get 144864.55 1 1 1 2 4

set_get_pipeline_performance

pipeline Pika Redis Swap
Set 239980.81 350852.5 253164.55
Get 363490.97 563126.50 555679

冷热数据混合性能

1亿个key, val长度为200, 1/3数据在redis, 2/3数据在ssdb.

redis_hit_tps

热数据命中率(%) TPS TP50 TP90 TP99 TP999 TP100
100 Set 121891.75 1 1 2 3 3
Get 145921.48 1 1 1 2 4
98.5 Set 119617.23 1 1 2 2 3
Get 144425.19 1 1 1 2 4
80.6 Set 108073.05 1 2 2 2 4
Get 133511.36 1 1 2 2 5
67.2 Set 94517.96 1 2 4 4 5
Get 123578.84 1 2 2 3 4
51.3 Set 51797.37 1 4 5 6 7
Get 105775.33 1 2 2 3 4

redis_hit_tps_pipeline

% 100 98.5 80.6 67.2 51.3
Set 251004.02 221483.95 166861.34 98058.45 54567.85
Get 553403.44 459558.81 269614.44 173250.17 107422.92

内存及硬盘占用对比

Memory 硬盘占用(开启aof持久化)
redis 27.8G 23G aof文件
Pika 400M 16G
Ssdb 6.5G 22G
Swap(All hot) 27.8G 23G aof file
Swap(All cold) 7.7G 19G: Aof file(4G)+ssdb data(15G)

性能总结

显然, swapdb访问热数据的性能和redis是基本一致的, 而其冷数据的访问性能虽然大打折扣, 但是也是能满足一定的性能要求, 而且如果某部分冷数据在一段时间访问需求增大时, swapdb可以将其加载成热数据, 其性能也可以在很短的时间内大大提升.

当某部分数据一段时间内访问很少或没有时, swapdb可以将其转存到SSD中, 从而达到节约内存的目的. 因此,对于热数据,swapdb可以满足超高性能访问的要求, 对于冷数据,则将其转存达到节约内存的目的, 在高性能与节约内存成本二者间达到平衡.