Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

2.5. 控制群組

RHEL 提供了許多有助於效能微調的選項。儘管是擁有數百個處理器的大型系統,亦可經由微調提供高效能。然而,要為這些系統進行微調,需要有相當程度的專業知識,以及完善定義的工作量。以往,大型系統的費用昂貴且數量較少,因此能給予個別的特殊處理。現在這些系統已是主流,因此需要使用更有效率的工具。
現在,強大的系統已被使用來進行服務整併。原本在四至八個較舊伺服器上執行的工作,已能被置入單一伺服器中執行。如先前在〈節 1.2.1, “平行運算”〉中所討論到,目前許多中階的系統,皆包含了比以往高階系統還要多的核心。
現今許多應用程式皆被設計為能平行處理、使用多執行續或程序,以提升效能。然而,鮮少應用程式能夠有效善用超過八個執行續。也因為如此,應用程式一般需要被安裝在一部 32 個 CPU 的系統上,以最大化其生產力。
請考量此狀況:現今的小型、廉價主流系統的效能,已經能與過去昂貴系統的高效能抗衡。便宜、高效能的機器能讓系統架構師將更多的服務,整併至更少的系統中。
然而,有些資源(例如 I/O 和網路通訊)是共享的,並且其成長速度沒有 CPU 快。因此,一部容納了多項應用程式的系統,在某應用程式耗費了過高的單一資源時,可能會遇上整體效能降低的問題。
為了解決此問題,RHEL 6 現在已支援「控制群組」(cgroup)。cgroup 能讓管理員視需求為特定工作分配資源。比方說,這代表能夠為某資料庫應用程式分配四個 CPU 80% 的運算能力、60GB 的記憶體,以及 40% 的磁碟 I/O。在一部相同系統上執行的網站應用程式,則可能被分配到兩個 CPU、2GB 的記憶體,以及 50% 的可用網路頻寬。
如此一來,資料庫與網站應用程式兩者皆能提供較佳的效能,因為系統避免了這兩項應用程式消耗過高的系統資源。此外,cgroup 有許多方面乃「自行微調」的,因此能夠讓系統根據工作量上的改變,作出相應的反應。
cgroup 有兩項重要元件:
  • 指定給 cgroup 的多項任務
  • 分配給這些任務的資源
指定給 cgroup 的任務會在 cgroup「」執行。任何任務所衍生出的子任務也會在相同的 cgroup 中執行。這能讓管理員將整個應用程式視為單一單元來管理。管理員亦可配置下列資源的分配:
  • CPUset
  • 記憶體
  • I/O
  • 網路(頻寬)
在 CPUset 中,cgroup 能讓管理員配置 CPU 的數量、與特定 CPU 或節點建立關聯[3],以及任務所能使用的 CPU 時間。使用 cgroup 來配置 CPUset 對於確保較佳的整體效能來說非常重要,它可避免應用程式消耗過多的資源,同時確保應用程式能取得 CPU 的運作時間。
I/O 頻寬與網路頻寬是以其它資源控制器來管理的。與先前相同,該資源控制器能讓您決定一個 cgroup 中的任務可使用多少頻寬,並同時確保 cgroup 中的任務不會使用過量的資源,或是遇上資源不足的問題。
cgroup 能讓管理員以高階的方式,定義和分配各個應用程式所需(且即將使用)的系統資源。接著系統便會自動管理和平衡各項應用程式,提供良好的效能並優化整體的系統效能。
欲知如何使用控制群組的資訊,請參閱《資源管理指南》,網址為 https://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/?locale=zh-TW


[3] 節點一般被定義為插槽(socket)中的一組 CPU 或核心。