排程域(scheduler domains)和cpu集(cpusets)
1.排程域和cpuset
l通過cpuset對多cpu進行分組
ø每個cpuset代表乙個排程域(scheduling domain 其實就是具有相同屬性的一組cpu 的集合
)可將程序放在乙個排程域內。
ø支援多核cpu和numa架構。
ø通過cpuset管理虛擬檔案系統。
ø可將cpuset將其他排程選項相整合,如可將多cpu分組,也可將組內單個cpu分給程序。
lcpuset
層次結構支援巢狀,乙個cpu可同時屬多個cpuset理
øroot(
根)cpuset包括所有系統資源
ø子cpuset可以巢狀
ø每個cpuset至少含有乙個cpu和乙個記憶體區域
ø可動態將任務分配到cpuset裡
l優點:
ø可有效控制佇列長度、快取、numa區域等
ø根據cpu的不同特徵,可將程序分配到不同的cpuset理
2.cpuset配置l
公升級selinux policy
selinux-policy-targeted-2.4.6-106.el5_1.3 or later
l建立並掛載在root cpuset,
[root@station9 ~]# mkdir /cpusets
[root@station9 ~]# grep cpu /proc/filesystems
[root@station9 ~]# mount -t cpuset nodev /cpusets
#可同時寫入/etc/fstab
#預設root cpuset包含所有系統資源
/cpusets/cpus
、/cpusets/mems、/cpusets/tasks
l建立子cpuset,並將任務分別給子cpuset
[root@station9 ~]# mkdir /cpusets/rh442
[root@station9 ~]# echo 0 > /cpusets/rh442/cpus
#將0號cpu分配給rh442
[root@station9 ~]# echo 0 > /cpusets/rh442/mems
#將0號mem段分配給rh442
[root@station9 ~]# echo 10892 > /cpusets/rh442/tasks
#將pid為3388的任務分配給rh442,
要保證開機生效需寫入到開機指令碼/etc/rc.d/rc.local裡
#獲取pid並將其任務分配給rh442指令碼
for pid in $(pidof sshd);do
/bin/echo $pid >/cpusets/rh442/tasks
done
3.排程域的重要檔案
l檢視程序所用cpuset
#cat /proc/pid/cpuset
[root@station9 ~]# cat /proc/10892/cpuset
/rh442
l檢視程序所獲得cpu和記憶體資源
#cat /proc/pid/status |grep -i cpus_allowed
[root@station9 ~]# cat /proc/10892/status |grep -i cpus_allowed
cpus_allowed:00000004
l限制cpu只能屬於乙個cpuset,不能到其他cpuset裡,即不支援巢狀
/cpusets/cpu_exclusive
#1支援,0不支援
/cpusets/rh442/cpu_exclusive
l當cpuset所有程序被關閉後核心自動清除cpuset以釋放資源給其他任務使用,
/cpusets/rh442/notify_on_release
#1支援,0不支
二、virtual cpus
(虛擬cpu)(專用於虛擬機器)
1.虛擬cpu和物理cpu相對應l1
個物理cpu可應多個虛擬cpu,可建立任意個虛擬cpu
l用於smp環境的測試
l虛擬cpu的佇列是對應物理cpu的
l預設所用domains所獲取cpu資源許可權相同
2.為功能域調配單獨的cpu
l為重要功能域(虛擬機器)多分配物理cpu資源
l減少重要域的等待時間
l將不同的域執行在不同的cpu上
3.配置vcpus
l靜態配置:
/etc/xen/domain
vcpus=4
#最大使用虛擬cpu的數量
cpu=0 #
只使用乙個第0號物理cpu
cpus
=0,2-4 #
虛擬機器可使用物理第0、2、4號物理cpu
l動態配置
ø#virsh setvcpus domain number-of-vcpus
ø通過virt-manager gui配置#僅支援半虛擬化
ø將虛擬cpu指向物理cpu
#virsh vcpupin domain|domainid vcpu cpu,...
[root@station9 ~]# virsh vcppin rhel5.5.0 4 0,1
#給虛擬機器rhel5.5.0分配4個虛擬cpu,對應0、1號物理cpu
(C ) 作用域和鏈結
作用域 描述了名稱在檔案 翻譯單元 的多大範圍內可見。例如 在function hello 中有個變數x,這個變數的作用域只在該函式範圍內有效。鏈結性為外部的可在檔案間共享,鏈結性為內部的名稱只能由乙個檔案中的函式共享。ps 自動變數的名稱沒有鏈結性,所以他們不能共享。變數的宣告週期的計算為 如果該...
C和C 中的位域
位域成員不能單獨被取sizeof值 編譯報錯 我們這裡要討論的是含有位域的結構體的sizeof,只是考慮到其特殊性而將其專門列了出來。c99規定int unsigned int和bool可以作為位域型別,但編譯器幾乎都對此作了擴充套件,允許其它型別型別的存在。使用位域的主要目的是壓縮儲存,其大致規則...
C 初級主題 名字空間域和類域
在c 中支援三種域 區域性域 名字空間域和類域。1.名字空間域是隨標準c 而引入的。它相當於乙個更加靈活的檔案域 全域性域 可以用花括號把檔案的一部分括起來,並以關鍵字namespace開頭給它起乙個名字 namespace ns1 花括號括起來的部分稱宣告塊。宣告塊中可以包括 類 變數 帶有初始化...