RPS就是讓網(wǎng)卡使用多核CPU的。傳統(tǒng)方法就是網(wǎng)卡多隊(duì)列(RSS,需要硬件和驅(qū)動(dòng)支持),RPS則是在系統(tǒng)層實(shí)現(xiàn)了分發(fā)和均衡。如果對(duì)redis網(wǎng)絡(luò)處理能力要求高或者在生產(chǎn)上發(fā)現(xiàn)cpu0的,可以在OS層面打開這個(gè)內(nèi)核功能。
設(shè)置腳本:
#!/bin/bash
# Enable RPS (Receive Packet Steering)
rfc=32768
cc=$(grep -c processor /proc/cpuinfo)
rsfe=$(echo $cc*$rfc | bc)
sysctl -w net.core.rps_sock_flow_entries=$rsfe
for fileRps in $(ls /sys/class/net/eth*/queues/rx-*/rps_cpus)
do
echo fff > $fileRps
done
for fileRfc in $(ls /sys/class/net/eth*/queues/rx-*/rps_flow_cnt)
do
echo $rfc > $fileRfc
done
tail /sys/class/net/eth*/queues/rx-*/{rps_cpus,rps_flow_cnt}