Linux
Ubuntu 上的低延遲 TCP 設置
在我的實驗室裡,有一個在 Ubuntu 上執行的測量伺服器。還有一個C程序,通過TCP連接接收數據,應該盡快回复。
配置
- CPU:2 個處理器 x 4 核 - Intel(R) Xeon(R) CPU E5345 @ 2.33GHz
- 記憶體:12 GB
- 網卡:Intel Corporation 80003ES2LAN 千兆乙太網控制器/82546EB 千兆乙太網控制器
- 網路交換機:Cisco Catalyst 2960
- 數據資訊:數據塊來約。每 10 毫秒。數據塊大小約為。1000 字節。
接收數據包時的網路延遲非常關鍵(幾十微秒很重要)。我將程序優化到最大,但我沒有調整 Ubuntu 的經驗。
在 Ubuntu 中可以配置什麼來減少處理/發送數據包的本地延遲?
老實說,我不會為此使用 Ubuntu ……但是有一些選項可以應用於任何 Linux 變體。
您需要創建網路堆棧緩衝區:
net.core.rmem_default = 10000000 net.core.wmem_default = 10000000 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216
如果應用程序正在寫入磁碟,則可能需要更改調度程序/電梯(例如
deadline
電梯)。在伺服器級別,您可以修改 CPU 調控器以及電源和 CPU 頻率管理(P-States、C-States)。
在作業系統級別,您可以更改應用程序的實時優先級 (
chrt
)、優化以減少中斷、將其固定到一個 CPU 或一組 CPU (taskset
),並停止任何不必要的服務或守護程序。您還可以在以下位置查看一些建議:如何解決 2 個 linux 主機之間的延遲問題
如果不了解所涉及的硬體或網路設備,很難獲得更具體的資訊。