歡迎您光臨本站 註冊首頁

XEN cpu 調度問題

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

XEN cpu 調度問題

公司新上了一個8核的cpu,上面用xen虛擬了2個Windows。
但是通過各種配置,還是無法平衡cpu的壓力。
大多都壓在第一個cpu上。

下面是top的數據
Cpu0  : 20.6%us, 65.7%sy,  0.0%ni, 13.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu1  :  0.0%us,  0.0%sy,  0.0%ni, 96.2%id,  0.0%wa,  0.0%hi,  0.0%si,  3.8%st
Cpu2  :  1.0%us,  0.0%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu3  :  0.0%us,  0.0%sy,  0.0%ni, 99.0%id,  0.0%wa,  0.0%hi,  0.0%si,  1.0%st
Cpu4  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu5  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu6  :  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Cpu7  :  1.0%us,  6.9%sy,  0.0%ni, 91.2%id,  0.0%wa,  0.0%hi,  0.0%si,  1.0%st

已經做了cpu和vcpu的綁定,但是效果不好
Name                              ID VCPUs   CPU State   Time(s) CPU Affinity
Domain2                         28     0     6   r--    2337.3 4-7
Domain2                         28     1     4   r--    2400.6 4-7
Domain2                         28     2     5   r--    2312.0 4-7

導致Windows斷網等各種怪問題。
《解決方案》

CPU管理

  與內存一樣,你也可以管理虛擬機的CPU分配。如果虛擬機使用的是准虛擬化,CPU的分配也可以動態更改。為虛擬機分配CPU時,不一定要根據伺服器中的物理CPU數目來分。如果你願意,是可以這麼做。不過,這樣做是絕對優化不了性能的。如果將虛擬機與指定的物理CPU綁定,會幫助你大大地提高虛擬機性能。除此之外,還可以調整CPU的運行隊列(run queue),使某台虛擬機在CPU中具有更高的優先順序。

  所有可運行的虛擬CPU(VCPU)都是由物理CPU中的本地運行隊列管理的。這個隊列是按優先順序進行排序的,隊列中的每個VCPU平分CPU資源。VCPU的優先順序狀態有兩種值:over和under。Over表示它佔用的CPU資源超過了資源平分值,under表示低於這個平分值。如果VCPU的當前狀態為under,調度程序下次則會優先服務該VCPU。如果調度程序發現在其CPU上沒有虛擬機為under狀態,則會看其它CPU中是否有VCPU狀態為under,如果發現,則立即服務該VCPU。通過這種方式,所有CPU都會平均分配CPU資源。

  通過設置weight和cap參數值,管理員可以管理CPU的優先順序。Weight參數用於分配CPU cycle,是一個相對值。一個weight為128的VCPU比一個weight為64的VCPU獲得的CPU cycle多一倍。因此,利用這個參數可以決定哪個VCPU獲得更多,哪個獲得更少。第二個設置CPU的參數是cap,它設置的是domain獲得的CPU cycle百分數,是一個絕對值。如果設置為100,就表示那個VCPU會100%地佔用物理CPU的可用cycle。如果cap為50,則表示該VCPU佔用的CPU cycle絕不會超過總量的一半。

  在如下命令示例中, id為3的虛擬機weight為128,允許使用兩個物理CPU的所有CPU cycle:

  xm sched-credit -d 3 -w 128 -c 200

  對於虛擬CPU,還要做的一個重要工作就是CPU分配。默認情況下,虛擬CPU與物理CPU是沒有固定聯繫的。要提高性能,就需要為它們建立一個這樣的聯繫,這個工作很簡單易行。為虛擬CPU和物理CPU建立「聯繫」的主要好處是可以防止虛擬CPU到處遊盪。如果沒有「聯繫」,調度程序會為虛擬CPU選擇一個物理CPU。當某個物理CPU處於繁忙狀態時,虛擬CPU就會被轉移,由另一個物理CPU服務。這個工作對性能的影響是很大的。因此,將虛擬CPU與物理CPU綁定是個不錯的辦法。
  
  綁定虛擬CPU時,首先利用xm list命令查看當前配置。然後,在你要查看CPU詳細信息的domain中使用xm vcpu-list命令,命令輸出結果如下:

  lin:~ # xm vcpu-list 2



  這個命令顯示,ID 2 domain當前使用了一個CPU(ID 0),該CPU當前在物理CPU 0。為了確認它的狀態,可以使用如下命令:
  
  xm vcpu-pin 2 0 1

  如果你再使用xm vcpu-list命令,你會看見CPU Affinity由原來的「any cpu」變為了CPU 1。


文章出處:DIY部落(http://www.diybl.com/course/6_system/linux/Linuxjs/20090314/161390.html)
《解決方案》

一些系統的中斷一般壓在第一個cpu的多

[火星人 ] XEN cpu 調度問題已經有617次圍觀

http://coctec.com/docs/service/show-post-5842.html