網路優先順序 cgroup¶
網路優先順序 cgroup 提供了一個介面,允許管理員動態設定各種應用程式生成的網路流量的優先順序。
通常,應用程式會透過 SO_PRIORITY 套接字選項設定其流量的優先順序。然而,這並非總是可行,因為:
應用程式可能未被編碼以設定此值
應用程式流量的優先順序通常是特定於站點的管理決策,而非應用程式自行定義。
此 cgroup 允許管理員將程序分配到某個組,該組定義了給定介面上出站流量的優先順序。網路優先順序組可以透過首先掛載 cgroup 檔案系統來建立。
# mount -t cgroup -onet_prio none /sys/fs/cgroup/net_prio
完成上述步驟後,作為父記賬組的初始組將在 ‘/sys/fs/cgroup/net_prio’ 處可見。此組包含系統中所有任務。‘/sys/fs/cgroup/net_prio/tasks’ 列出了此 cgroup 中的任務。
每個 net_prio cgroup 包含兩個子系統特定的檔案:
- net_prio.prioidx
此檔案是隻讀的,僅用於提供資訊。它包含一個唯一的整數值,核心將其用作此 cgroup 的內部表示。
- net_prio.ifpriomap
此檔案包含一個優先順序對映,這些優先順序分配給源自此組中程序並透過不同接口出站的流量。它包含一個形如 <ifname priority> 的元組列表。此檔案的內容可以透過使用相同的元組格式將字串 echo 到檔案中進行修改。例如:
echo "eth0 5" > /sys/fs/cgroups/net_prio/iscsi/net_prio.ifpriomap
此命令將強制所有源自 iscsi net_prio cgroup 中程序並透過介面 eth0 出站的流量,將其優先順序設定為值 5。父記賬組也包含一個可寫的 ‘net_prio.ifpriomap’ 檔案,可用於設定系統預設優先順序。
優先順序在將幀排隊到裝置排隊規則 (qdisc) 之前立即設定,因此優先順序將在硬體佇列選擇之前分配。
net_prio cgroup 的一個用途是與 mqprio qdisc 結合使用,允許將應用程式流量引導至基於硬體/驅動的流量類別。這些對映隨後可由管理員或其他網路協議(如 DCBX)進行管理。
新的 net_prio cgroup 繼承父級的配置。