새로운 초고사양 노트북(Lenovo P1 Gen 2)에서 매우 나쁜 Redis 벤치마크를 얻었습니다.
~ % cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 158
model name : Intel(R) Core(TM) i7-9850H CPU @ 2.60GHz
redis-benchmark
====== PING_INLINE ======
100000 requests completed in 6.15 seconds
50 parallel clients
3 bytes payload
keep alive: 1
0.00% <= 1 milliseconds
33.15% <= 2 milliseconds
91.81% <= 3 milliseconds
99.99% <= 4 milliseconds
100.00% <= 4 milliseconds
16265.45 requests per second
====== PING_BULK ======
100000 requests completed in 6.15 seconds
50 parallel clients
3 bytes payload
keep alive: 1
0.00% <= 1 milliseconds
32.82% <= 2 milliseconds
89.20% <= 3 milliseconds
99.97% <= 4 milliseconds
100.00% <= 4 milliseconds
16254.88 requests per second
====== SET ======
100000 requests completed in 6.14 seconds
50 parallel clients
3 bytes payload
keep alive: 1
0.00% <= 1 milliseconds
33.01% <= 2 milliseconds
89.44% <= 3 milliseconds
99.99% <= 4 milliseconds
100.00% <= 4 milliseconds
16289.30 requests per second
내가 소유한 고대 MBP는 SET에 대해 60k를 푸시했고 내 데스크탑은 세트에 대해 177935를 푸시했는데 이는 10배 더 많은 수치입니다.
데스크탑은 Redis를 설치한 후 Arch 설치 프로그램에서 직접 재현할 수 있는 동일한 커널을 실행합니다. (USB 드라이브에서 부팅)
~ % uname -a
Linux laptop 5.2.11-arch1-1-ARCH #1 SMP PREEMPT Thu Aug 29 08:09:36 UTC 2019 x86_64 GNU/Linux
이 끔찍한 네트워크 스택 성능을 어떻게 디버깅할 수 있을지 아시나요 localhost
?
redis-server --version
Redis server v=5.0.5 sha=00000000:0 malloc=jemalloc-5.2.0 bits=64 build=78473e0efb96880a
편집하다
Wi-Fi를 제거하고 다시 로드하면 상황이 더 빨라집니다.
[root@slaptop ~]# modprobe -r iwlmvm
[root@slaptop ~]# modprobe -r cfg80211
[root@slaptop ~]# modprobe -r iwlwifi
[root@slaptop ~]# modprobe iwlwifi
[root@slaptop ~]# modprobe cfg80211
[root@slaptop ~]# modprobe iwlmvm
[root@slaptop ~]# redis-benchmark
====== PING_INLINE ======
100000 requests completed in 0.61 seconds
50 parallel clients
3 bytes payload
keep alive: 1
100.00% <= 0 milliseconds
165016.50 requests per second
====== PING_BULK ======
100000 requests completed in 0.63 seconds
50 parallel clients
3 bytes payload
keep alive: 1
100.00% <= 0 milliseconds
159744.41 requests per second
====== SET ======
100000 requests completed in 0.60 seconds
50 parallel clients
3 bytes payload
keep alive: 1
그래서 네트워크를 초기화할 때의 작업 순서와 관련이 있는 것 같아요. 나는 알고 싶다...