Linux核心版本以及部分引數與效能之二

济南小老虎發表於2024-06-16

Linux核心版本以及部分引數與效能之二


版本範圍

grubby --set-default /boot/vmlinuz-6.9.4-1.el7.elrepo.x86_64
grubby --set-default /boot/vmlinuz-5.4.277-1.el7.elrepo.x86_64
grubby --set-default /boot/vmlinuz-4.19.12-1.el7.elrepo.x86_64
grubby --set-default /boot/vmlinuz-3.10.0-1160.el7.x86_64

測試工具-SPECJBB

核心版本 max-jOPS critical-jOPS
3.10 15840 1273
4.19 16410 1273
5.4 15669 1209
6.9 14428 1322

測試工具

Redis的驗證
客戶現場,因為有很多Redis的Client, 所以client 設定到 5000 進行模擬.
./redis-benchmark -h 127.0.0.1 -p 6379 -n 1000000 -c 5000 -q
預設值引數進行測試之一

修改一個引數進行測試之二
修改引數的原因: 
 The TCP backlog setting of 511 cannot be enforced because
 /proc/sys/net/core/somaxconn is set to the lower value of 128.
echo  512 > /proc/sys/net/core/somaxconn
再次進行相同的測試

測試大key值. 

測試結果總結

image

3.10測試結果

PING_INLINE: 76057.20 requests per second, p50=33.343 msec
PING_MBULK: 74788.72 requests per second, p50=33.791 msec
SET: 77501.36 requests per second, p50=32.383 msec
GET: 80334.19 requests per second, p50=31.167 msec
INCR: 71341.94 requests per second, p50=34.943 msec
LPUSH: 78094.49 requests per second, p50=32.383 msec
RPUSH: 78474.45 requests per second, p50=31.199 msec
LPOP: 77851.30 requests per second, p50=32.367 msec
RPOP: 75614.37 requests per second, p50=33.503 msec
SADD: 78690.59 requests per second, p50=32.015 msec
HSET: 79195.38 requests per second, p50=31.455 msec
SPOP: 75007.50 requests per second, p50=34.111 msec
ZADD: 78505.26 requests per second, p50=31.807 msec
ZPOPMIN: 76581.41 requests per second, p50=32.591 msec
LPUSH (needed to benchmark LRANGE): 74822.30 requests per second, p50=33.823 msec
LRANGE_100 (first 100 elements): 60114.21 requests per second, p50=40.671 msec
LRANGE_300 (first 300 elements): 24937.66 requests per second, p50=100.607 msec
LRANGE_500 (first 500 elements): 16858.57 requests per second, p50=147.327 msec
LRANGE_600 (first 600 elements): 15697.11 requests per second, p50=158.591 msec
MSET (10 keys): 77966.63 requests per second, p50=32.543 msec
XADD: 76312.58 requests per second, p50=32.863 msec

4.19測試結果

PING_INLINE: 101040.72 requests per second, p50=23.839 msec
PING_MBULK: 98570.72 requests per second, p50=24.063 msec
SET: 97560.98 requests per second, p50=23.583 msec
GET: 83208.52 requests per second, p50=30.527 msec
INCR: 97314.13 requests per second, p50=23.695 msec
LPUSH: 96674.40 requests per second, p50=23.727 msec
RPUSH: 85932.80 requests per second, p50=29.327 msec
LPOP: 87673.16 requests per second, p50=26.815 msec
RPOP: 91920.22 requests per second, p50=25.743 msec
SADD: 96918.01 requests per second, p50=23.647 msec
HSET: 83472.46 requests per second, p50=30.447 msec
SPOP: 81314.03 requests per second, p50=30.831 msec
ZADD: 81632.66 requests per second, p50=31.007 msec
ZPOPMIN: 92980.01 requests per second, p50=24.655 msec
LPUSH (needed to benchmark LRANGE): 83689.01 requests per second, p50=29.935 msec
LRANGE_100 (first 100 elements): 62960.39 requests per second, p50=41.503 msec
LRANGE_300 (first 300 elements): 25910.09 requests per second, p50=97.919 msec
LRANGE_500 (first 500 elements): 17452.31 requests per second, p50=145.151 msec
LRANGE_600 (first 600 elements): 16337.73 requests per second, p50=154.879 msec
MSET (10 keys): 90432.27 requests per second, p50=26.607 msec
XADD: 87788.61 requests per second, p50=29.247 msec

5.4 測試結果

PING_INLINE: 87282.88 requests per second, p50=28.895 msec
PING_MBULK: 90366.89 requests per second, p50=29.007 msec
SET: 94526.89 requests per second, p50=25.279 msec
GET: 87989.45 requests per second, p50=27.487 msec
INCR: 84882.44 requests per second, p50=30.063 msec
LPUSH: 95319.80 requests per second, p50=24.271 msec
RPUSH: 98706.95 requests per second, p50=23.263 msec
LPOP: 81886.67 requests per second, p50=31.407 msec
RPOP: 83521.26 requests per second, p50=30.175 msec
SADD: 92566.88 requests per second, p50=25.007 msec
HSET: 89174.25 requests per second, p50=26.975 msec
SPOP: 90317.92 requests per second, p50=25.343 msec
ZADD: 87696.22 requests per second, p50=26.975 msec
ZPOPMIN: 91041.52 requests per second, p50=26.351 msec
LPUSH (needed to benchmark LRANGE): 95978.50 requests per second, p50=23.999 msec
LRANGE_100 (first 100 elements): 59520.27 requests per second, p50=43.359 msec
LRANGE_300 (first 300 elements): 26372.70 requests per second, p50=96.319 msec
LRANGE_500 (first 500 elements): 17874.06 requests per second, p50=141.439 msec
LRANGE_600 (first 600 elements): 16672.22 requests per second, p50=151.807 msec
MSET (10 keys): 85800.09 requests per second, p50=30.399 msec
XADD: 98784.95 requests per second, p50=23.839 msec

6.9 測試結果

PING_INLINE: 76458.45 requests per second, p50=33.055 msec
PING_MBULK: 73206.45 requests per second, p50=35.231 msec
SET: 74738.41 requests per second, p50=34.079 msec
GET: 75278.53 requests per second, p50=33.695 msec
INCR: 74771.95 requests per second, p50=34.015 msec
LPUSH: 73067.37 requests per second, p50=34.911 msec
RPUSH: 77706.11 requests per second, p50=32.175 msec
LPOP: 78920.38 requests per second, p50=31.887 msec
RPOP: 73329.91 requests per second, p50=35.327 msec
SADD: 75488.79 requests per second, p50=33.087 msec
HSET: 75454.61 requests per second, p50=33.407 msec
SPOP: 74794.31 requests per second, p50=33.695 msec
ZADD: 72653.30 requests per second, p50=35.295 msec
ZPOPMIN: 75809.27 requests per second, p50=33.311 msec
LPUSH (needed to benchmark LRANGE): 75884.05 requests per second, p50=33.183 msec
LRANGE_100 (first 100 elements): 57960.93 requests per second, p50=43.167 msec
LRANGE_300 (first 300 elements): 25442.70 requests per second, p50=98.303 msec
LRANGE_500 (first 500 elements): 17265.49 requests per second, p50=144.767 msec
LRANGE_600 (first 600 elements): 16195.64 requests per second, p50=154.495 msec
MSET (10 keys): 73757.20 requests per second, p50=34.527 msec
XADD: 72843.83 requests per second, p50=34.847 msec

不同核心測試測試


測試結果之一

PING_INLINE: 101040.72 requests per second, p50=23.839 msec
PING_MBULK: 98570.72 requests per second, p50=24.063 msec
SET: 97560.98 requests per second, p50=23.583 msec
GET: 83208.52 requests per second, p50=30.527 msec
INCR: 97314.13 requests per second, p50=23.695 msec
LPUSH: 96674.40 requests per second, p50=23.727 msec
RPUSH: 85932.80 requests per second, p50=29.327 msec
LPOP: 87673.16 requests per second, p50=26.815 msec
RPOP: 91920.22 requests per second, p50=25.743 msec
SADD: 96918.01 requests per second, p50=23.647 msec
HSET: 83472.46 requests per second, p50=30.447 msec
SPOP: 81314.03 requests per second, p50=30.831 msec
ZADD: 81632.66 requests per second, p50=31.007 msec
ZPOPMIN: 92980.01 requests per second, p50=24.655 msec
LPUSH (needed to benchmark LRANGE): 83689.01 requests per second, p50=29.935 msec
LRANGE_100 (first 100 elements): 62960.39 requests per second, p50=41.503 msec
LRANGE_300 (first 300 elements): 25910.09 requests per second, p50=97.919 msec
LRANGE_500 (first 500 elements): 17452.31 requests per second, p50=145.151 msec
LRANGE_600 (first 600 elements): 16337.73 requests per second, p50=154.879 msec
MSET (10 keys): 90432.27 requests per second, p50=26.607 msec
XADD: 87788.61 requests per second, p50=29.247 msec


修改somaxconn 測試

sysctl -w net.core.somaxconn=512
PING_INLINE: 89758.55 requests per second, p50=25.615 msec
PING_MBULK: 98029.60 requests per second, p50=23.215 msec
SET: 84274.40 requests per second, p50=30.015 msec
GET: 83857.44 requests per second, p50=29.887 msec
INCR: 82535.49 requests per second, p50=30.559 msec
LPUSH: 95156.53 requests per second, p50=24.607 msec
RPUSH: 88074.69 requests per second, p50=29.231 msec
LPOP: 95048.00 requests per second, p50=25.375 msec
RPOP: 93031.91 requests per second, p50=25.039 msec
SADD: 89341.55 requests per second, p50=29.135 msec
HSET: 82685.63 requests per second, p50=31.071 msec
SPOP: 93396.84 requests per second, p50=24.703 msec
ZADD: 86281.27 requests per second, p50=28.015 msec
ZPOPMIN: 83437.63 requests per second, p50=30.063 msec
LPUSH (needed to benchmark LRANGE): 87397.30 requests per second, p50=27.231 msec
LRANGE_100 (first 100 elements): 63011.97 requests per second, p50=41.631 msec
LRANGE_300 (first 300 elements): 25982.80 requests per second, p50=97.727 msec
LRANGE_500 (first 500 elements): 17438.31 requests per second, p50=145.151 msec
LRANGE_600 (first 600 elements): 16410.66 requests per second, p50=154.111 msec
MSET (10 keys): 82932.49 requests per second, p50=28.687 msec
XADD: 80788.49 requests per second, p50=31.519 msec

修改IP_PORT_RAGE和TW_BUCKET後

sysctl -w net.ipv4.ip_local_port_range="10000 20000"
sysctl -w net.ipv4.tcp_max_tw_buckets=100000
sysctl -w net.ipv4.tcp_tw_reuse=0

這樣很容易就會出現錯誤:
Could not connect to Redis at 127.0.0.1:6379: Cannot assign requested address

所以建議修改為: 
sysctl -w net.ipv4.ip_local_port_range="1025 65530"
sysctl -w net.ipv4.tcp_max_tw_buckets=10000
sysctl -w net.ipv4.tcp_tw_reuse=0

測試間隙檢視:
netstat  -an |grep 6379 |awk '{print $6}' |sort|uniq -c
  10000 ESTABLISHED
      2 LISTEN
   9996 TIME_WAIT

會發現很多類似的情況

PING_INLINE: 84688.35 requests per second, p50=29.903 msec
PING_MBULK: 81712.70 requests per second, p50=31.215 msec
SET: 90090.09 requests per second, p50=26.031 msec
GET: 82733.52 requests per second, p50=30.607 msec
INCR: 97732.60 requests per second, p50=23.567 msec
LPUSH: 87565.67 requests per second, p50=28.431 msec
RPUSH: 96107.64 requests per second, p50=23.935 msec
LPOP: 87229.59 requests per second, p50=29.599 msec
RPOP: 86340.88 requests per second, p50=28.943 msec
SADD: 88487.75 requests per second, p50=28.239 msec
HSET: 79465.99 requests per second, p50=33.279 msec
SPOP: 83780.16 requests per second, p50=30.143 msec
ZADD: 81234.77 requests per second, p50=32.031 msec
ZPOPMIN: 83682.01 requests per second, p50=30.335 msec
LPUSH (needed to benchmark LRANGE): 78740.16 requests per second, p50=33.343 msec
LRANGE_100 (first 100 elements): 65049.11 requests per second, p50=40.351 msec
LRANGE_300 (first 300 elements): 25932.94 requests per second, p50=97.855 msec
LRANGE_500 (first 500 elements): 17418.87 requests per second, p50=145.407 msec
LRANGE_600 (first 600 elements): 16359.12 requests per second, p50=154.751 msec
MSET (10 keys): 81586.03 requests per second, p50=31.359 msec
XADD: 81135.91 requests per second, p50=31.183 msec

相關文章