Cgroups全稱Control Groups,是Linux內(nèi)核用于資源隔離的技術。目前Cgroups可以控制CPU、內(nèi)存、磁盤訪問。
Cgroups是在Linux 2.6.24合并到內(nèi)核的,不過項目在不斷完善,3.8內(nèi)核加入了對內(nèi)存的控制(kmemcg)。
要使用Cgroups非常簡單,閱讀前建議看sysadmincasts的視頻,https://sysadmincasts.com/episodes/14-introduction-to-linux-control-groups-cgroups。
我們首先在文件系統(tǒng)創(chuàng)建Cgroups組,然后修改這個組的屬性,啟動進程時指定加入的Cgroups組,這樣進程相當于在一個受限的資源內(nèi)運行了。
Cgroups的實現(xiàn)也不是特別復雜。有一個特殊的數(shù)據(jù)結構記錄進程組的信息。
有人可能已經(jīng)知道Cgroups是Docker容器技術的基礎,另一項技術也是大名鼎鼎的Namespaces。