Linux

使用 cgroup 控制應用程序的優先級

  • August 18, 2019

我想更好地了解 cgroups,並想了解應用 cgroups 的案例。

cgroups 是區分不同應用程序優先級的好方法嗎(即,為特定類型的應用程序(如 Web 伺服器)提供更高的優先級)?

cgroups有多種用途。從系統管理來看,最重要的可能是限制資源——這裡的經典例子是 CPU 訪問。如果您為 eg 創建一個組sshd並為其提供一些不可忽略的 CPU 時間共享(與其他組或所有未排序程序的預設組相比),即使在機器執行時也可以保證能夠登錄一個 CPU 密集型任務。

更有趣的是,如果你給這個“遠端訪問”程序比其他程序更高的 CPU 份額,你幾乎可以立即登錄(因為 ssh 守護程序將優先於其他正在執行的程序),而你不會受到傷害機器的整體計算強度,因為資源僅按需要分配。您通常希望與 I/O(包括網路)優先級一起執行此操作。然而,正如約翰在下面的評論中正確指出的那樣,人們不想粗心大意地做這些事情(因為它可能會以一種意想不到的方式反擊)。要記住的重要一點是預設情況下這些組是繼承的——即不想從這樣的 ssh 會話中啟動記憶體/CPU hog。然而為此,有一些機制可以在 cgroups 啟動時將它們分配給它們。

另一個用途是將程序彼此隔離——結合最近的 Linux 核心中的其他特性(命名空間隔離),它們用於創建作業系統級別的虛擬化,如LXC(Linux 容器)

除此之外,您還可以進行各種記賬和控制(凍結某些程序組,將它們分配給特定的 CPU 核心等)。

如果您正在尋找更多資訊,這裡的兩個連結應該是一個合理的起點。您可能還想檢查Documentation/cgroupsLinux 核心原始碼樹中的目錄。

引用自:https://unix.stackexchange.com/questions/56538