linux下的RPS及其應用(軟中斷)
RPS
什麼是RPS
全稱receive packet steering,由Google的Tom Herbert編寫,而linux從2.6.35開始引入;
此功能可解決網路軟中斷的負載均衡,即單個網路卡的軟中斷分散到多個CPU處理,避免單個CPU負載過大導致效能瓶頸;
該功能主要針對單佇列網路卡多CPU環境,如網路卡支援多佇列則可使用SMP irq affinity直接繫結硬中斷,軟中斷預設同硬中斷執行在同一個CPU;
一般如果開啟了SMP irq affinity,就不必使用RPS,但須視具體情況而定(兩者可並存);
有必要先搞清楚網路卡/CPU如何處理網路中斷的:
如下圖,可分為4個階段
1 硬體接收
網路卡透過線路接收到幀,將其儲存至buffer queue,高階網路卡可以有多個queue
2 硬中斷
網路卡向CPU傳送中斷通知新幀的到來,併為下一步的軟中斷做準備
3 軟中斷
此階段核心將資料幀從網路卡buffer queue取出放入網路棧中處理,此過程網路卡與CPU相互協同工作,直到網路卡buffer溢位或達到dev_weight(一次軟中斷處理的幀數)
4 應用接收
應用程式透過POSIX呼叫(read/recv/recvfrom)接收幀資料並將其從socket移出
而RPS最佳化了第3個階段,由網路卡根據資料包的IP/port資訊計算一個hash值,然將其對映到一個CPU id,這樣既分散到多個CPU又確保同一資料來源的包由同一CPU處理;
如何使用
可透過配置檔案為網路卡繫結到特定CPU,/sys/class/net/
_$ pwd
/sys/class/net/eth0/queues/rx-0
_$ ls
rps_cpus rps_flow_cnt
_$ more rps_cpus
00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000
--設定CPU掩碼,類似於SMP IRQ affinity
可透過/proc/softirqs檢視系統軟中斷資訊
CPU0 CPU1 CPU2 CPU3
HI: 0 0 0 0
TIMER: 27166 27120 27097 27034
NET_TX: 0 0 0 17
NET_RX: 42 0 0 39
BLOCK: 0 0 107 1121
TASKLET: 0 0 0 290
SCHED: 27035 26983 26971 26746
HRTIMER: 0 0 0 0
RCU: 1678 1769 2178 2250
另外mpstat也有軟中斷統計資訊soft%
http://blog.yufeng.info/archives/2037/comment-page-1#comment-6249
https://github.com/torvalds/linux/blob/master/Documentation/networking/scaling.txt
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-753982/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux的中斷負載均衡和RPSLinux負載
- Linux核心軟中斷Linux
- Linux 核心的軟中斷深入解析Linux
- Linux下軟體應用的相關命令(轉)Linux
- JavaScript中的bind方法及其常見應用JavaScript
- AOP及其在Spring中的應用(一) .Spring
- AOP及其在Spring中的應用(二)Spring
- 淺析Linux的軟中斷的實現Linux
- 軟體供應鏈中斷時代
- React 中的高階元件及其應用場景React元件
- CAS原子操作以及其在Java中的應用Java
- Java 註解及其在 Android 中的應用JavaAndroid
- 時間輪原理及其在框架中的應用框架
- PHP 中 Trait 詳解及其應用PHPAI
- Ajax及其應用
- 深入理解跳錶及其在Redis中的應用Redis
- ZooKeeper 原理及其在 Hadoop 和 HBase 中的應用Hadoop
- 擴散模型在機器學習中的應用及其挑戰模型機器學習
- Linux中的衝突問題及其應對策略(轉)Linux
- 深入應用linux及其它開源產品Linux
- 因果推斷在騰訊遊戲中的應用遊戲
- Linux的中斷響應流程是什麼Linux
- 軟體相關技術及其在國內的應用 (轉)
- 軟體論文之論軟體質量保證及其應用
- 泛型及其應用泛型
- 閉包及其應用
- 數字證書及其在安全測試中的應用
- Reactor執行緒模型及其在Netty中的應用React執行緒模型Netty
- 設計模式之--策略模式及其在JDK中的應用設計模式JDK
- 工業交換機在船舶中的應用及其優勢
- extcon驅動及其在USB驅動中的應用
- HTTP/2特性及其在實際應用中的表現HTTP
- Linux 效能優化之 CPU 篇 ----- Linux 軟中斷Linux優化
- linux中gcc的應用(轉)LinuxGC
- Linux下的Mongodb部署應用梳理LinuxMongoDB
- 動態代理的原理及其應用
- 流程卡的應用及其侷限性
- linux下QOS:應用篇Linux