-
Notifications
You must be signed in to change notification settings - Fork 448
Benchmark
louyuting edited this page Jun 2, 2020
·
10 revisions
CPU:Intel(R) Xeon(R) CPU E5-2640 v3 @ 2.60GHz (32 Cores)
OS:Red Hat 4.8.2-16
golang version: 1.14.3
测试单线程/多线程模式下接入 Sentinel 与不接入 Sentinel 吞吐量的对比。我们通过执行一些 CPU 密集型操作(小数组排序)来模拟不同 QPS 下的情况。测试例子参考:
Benchmark_Single_Directly_50-32 1000000 1187 ns/op 32 B/op 1 allocs/op
Benchmark_Single_StatEntry_50-32 311342 5670 ns/op 352 B/op 9 allocs/op
Benchmark_Single_Directly_100-32 307274 3667 ns/op 32 B/op 1 allocs/op
Benchmark_Single_StatEntry_100-32 121216 8795 ns/op 352 B/op 9 allocs/op
Benchmark_Single_Directly_200-32 124702 8440 ns/op 32 B/op 1 allocs/op
Benchmark_Single_StatEntry_200-32 75883 14862 ns/op 352 B/op 9 allocs/op
Benchmark_Single_Directly_500-32 43726 27347 ns/op 32 B/op 1 allocs/op
Benchmark_Single_StatEntry_500-32 33559 33363 ns/op 353 B/op 9 allocs/op
Benchmark_Single_Directly_1000-32 19476 51843 ns/op 32 B/op 1 allocs/op
Benchmark_Single_StatEntry_1000-32 16401 63084 ns/op 353 B/op 9 allocs/op
Benchmark_Single_Directly_2000-32 9606 118087 ns/op 32 B/op 1 allocs/op
Benchmark_Single_StatEntry_2000-32 8912 116003 ns/op 354 B/op 9 allocs/op
Benchmark_Single_Directly_4000-32 4807 242000 ns/op 37 B/op 1 allocs/op
Benchmark_Single_StatEntry_4000-32 4739 274000 ns/op 360 B/op 9 allocs/op
| 数组长度 | Baseline(QPS) | With Sentinel(QPS) | 性能损耗 |
|---|---|---|---|
| 50 | 1000000 | 311342 | 68.9% |
| 100 | 307274 | 121216 | 60.6% |
| 200 | 124702 | 75883 | 39.1% |
| 500 | 43726 | 33559 | 23.3% |
| 1000 | 19476 | 16401 | 15.8% |
| 2000 | 9606 | 8912 | 7.2% |
| 4000 | 4807 | 4739 | 1.4% |
测试排序数组长度是200(Baseline是124702)时候,并发4/8/16/32协程并发下的性能:
Benchmark_Directly_Concurrency4-32 2005906 618 ns/op 32 B/op 1 allocs/op
Benchmark_StatEntry_Concurrency4-32 1576730 664 ns/op 352 B/op 9 allocs/op
Benchmark_Directly_Concurrency8-32 2957827 594 ns/op 32 B/op 1 allocs/op
Benchmark_StatEntry_Concurrency8-32 1493346 685 ns/op 352 B/op 9 allocs/op
Benchmark_Directly_Concurrency16-32 2939598 593 ns/op 32 B/op 1 allocs/op
Benchmark_StatEntry_Concurrency16-32 1450534 713 ns/op 352 B/op 9 allocs/op
Benchmark_Directly_Concurrency32-32 2778534 601 ns/op 32 B/op 1 allocs/op
Benchmark_StatEntry_Concurrency32-32 1384327 1095 ns/op 353 B/op 9 allocs/op
测试场景:6000 个资源循环跑(即单机的极端场景,目前最多支持 6000 个 entry)
- 单协程不断循环运行:内存占用约 30 MB
- 8协程不断循环运行:内存占用约 36 MB
-
文档
-
Documents (EN)