RH442 7 排程域和CPU集之三

2021-09-21 11:36:20 字數 3147 閱讀 2959

排程域(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 花括號括起來的部分稱宣告塊。宣告塊中可以包括 類 變數 帶有初始化...