performance.md 3.8 KB
Newer Older
Y
yangrui07 已提交
1 2 3 4 5 6 7 8 9
# Cube Server 社区版本性能报告
## 机器配置
Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz

## 测试数据
100w条样例kv 数据。 key为uint_64类型,单条value长度 40 Byte (一般实际场景对应一个10维特征向量)。

## 单Key高qps访问场景
一般来说实际预估服务生产环境下,单key访问场景较少,不过单机qps依然是一个比较重要的性能指标,故在下表提供了不同qps下单机Cube server性能指标。
Y
yangruihaha 已提交
10 11


Y
yangrui07 已提交
12
| qps | 10w | 50w | 100w | 
Y
yangruihaha 已提交
13
| --- | --- | --- | --- |
Y
yangrui07 已提交
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
|kps|10w|50w|100w|
|cpu(top)| 6.5% | 38.3% | 71.4% | 
|client端延迟|  avg            196 us<br>50%            160 us<br>70%            188 us<br>90%            292 us<br>95%            419 us<br>97%            547 us<br>99%            835 us<br>99.9%         1556 us<br>99.99%        1779 us|  avg            563 us<br>50%            342 us<br>70%            502 us<br>90%           1063 us<br>95%           1703 us<br>97%           2399 us<br> 99%           4036 us<br>99.9%         7195 us<br>99.99%        7340 us|    avg           4234 us<br>50%           3120 us<br>70%           5459 us<br>90%          10657 us<br>95%          14074 us<br>97%          16215 us<br> 99%          19434 us<br>99.9%        29398 us<br>99.99%       33921 us|

## 高kps场景
生产环境下,预估服务更多的会以batch形式访问cube server,这类情况kps相对qps能更准确的判断服务性能。我们以单次100key为例,给出不同kps下cube server的相关性能指标。
| qps | 2w | 10w | 20w | 
|---|---|---|---|
|kps|200w|1000w|2000w|
|cpu(top)| 3.5% | 17.8% | 37.6% | 
|client端延迟|  avg            375 us<br>50%            346 us<br>70%            390 us<br>90%            498 us<br>95%            582 us<br>97%            648 us<br>99%            908 us<br>99.9%         1623 us<br>99.99%        3312 us|  avg           1141 us<br>50%            900 us<br>70%           1237 us<br>90%           2028 us<br>95%           2662 us<br>97%           3173 us<br>99%           4614 us<br> 99.9%         6786 us<br>99.99%        6273 us|    avg           1940 us<br>50%           1299 us<br>70%           1876 us<br>90%           3629 us<br>95%           5535 us<br>97%           7365 us<br>99%          10529 us<br>99.9%        14060 us<br>99.99%       16028 us|

## 分布式场景客户端延迟
在batch查询场景下,单次batch查询耗时是业务方(特别是在线预估服务)非常关心的敏感指标。在分布式场景下,单次batch查询往往要并发请求下游所有分片server,此时batch查询耗时取决于最慢的分片请求。我们在下文给出了一个典型分布式场景下的batch查询耗时。

测试条件:
cube分片数:10 
client机器ping下游server机器约0.06ms
| batch size | 100 | 500 | 1000 | 
|---|---|---|---|
|qps|100|100|100|
|kps|1w| 5w| 10w|
|client端延迟|avg            324 us<br>80%            346 us<br>99%            1190 us<br>99.9%            3662 us<br>99.99%            9392 us|avg            466 us<br>80%            488 us<br>99%            1492 us<br>99.9%            4122 us<br>99.99%            10612 us|avg            675 us<br>80%            691 us<br>99%            2101 us<br>99.9%            5169 us<br>99.99%            14867 us|

## 结语
上述表格主要阐述了cube server单机性能,在生产环境下,对于更高的kps(qps)压力我们可以方便地通过增加副本的方式来增强集群负载能力。 在模型大小超过单机内存限制时,我们亦可通过部署多数据分片的分布式集群来提供服务。
整体来说,cube性能能够满足当前业界各类预估服务的kv访问需求。

## PS
本文所列性能均为cube原始代码版本性能,如果根据实际情情况做适当调优:如链入tcmalloc or jemalloc、 进行numa绑定 以及 打开编译优化参数等等,都有可能进一步明显提升cube server的性能表现。