邏輯禁用CPU

2021-05-28 12:15:01 字數 1294 閱讀 5004

剛剛定了短期的研究方向:多核環境下軟體效能的提高,首先先做實驗,用實驗資料來證明普通的web應用在核不斷擴充套件的情況下,效能提公升並非線性而成下降趨勢,理論上是因為核之間的通訊,快取遷移代價增大。

現在遇到的乙個問題是在windows下,應用可以選擇指定的核來執行,可是linux下的web應用雖然使用命令列指定了特定的cpu,但是最終執行的還是全部的核,結論是tomcat中含有執行緒池,作業系統以執行緒為排程單位,最終還是把執行緒分配到多個核上,放棄tomcat。另外乙個是應用伺服器是apache,同樣是多執行緒,也不行,最終只能想辦法禁用cpu,查了資料,linux已經提供了禁用邏輯cpu的方法。

q:如何在邏輯上禁用乙個cpu?

a:     執行如下操作。

#echo 0 > /sys/devices/system/cpu/cpux/online

如果邏輯上的禁用成功,檢查

#cat /proc/interrupts

在此檔案中,將看不到被移除的cpu對應的列了。當cpu被移除後,它的online檔案為0,否則為1.

#to display the current cpu state.

#cat /sys/devices/system/cpu/cpux/online

q:當乙個cpu在邏輯上被移除時,會發生什麼?

a:將會發生下面的事情,排列是無序的 j。

-          核心中的模組會接收到乙個通知[notification],對應的事件是cpu_down_prepare 或者cpu_down_prepare_frozen,具體是哪個事件則依賴於cpu被移除時,是否有任務被「冷凍」,任務被冷凍的原因是正在執行掛起操作。

-          此cpu上的所有程序都被遷移到新的cpu上。新cpu通過每個程序的當預處理器設定(cpuset)進行選擇,這些設定可能是所有在用cpu的子集。

-          所有定向到此cpu上的中斷都被遷移到新的cpu上。

-          定時器/bh/task lets也將被遷移到新的cpu上。

-          一旦所有的服務都被遷移了,核心便呼叫乙個體繫結構相關[arch specific]的例程__cpu_disable()來執行體系結構相關的清理工作。

-          如果上面的工作也完成了,乙個代表清理成功的事件將被傳送,此事件為cpu_dead。(如果存在冰凍任務,相應的事件則為cpu_dead_frozen。也就是說在移除cpu時,系統正在執行掛起操作。)

當cpu_down_prepare通知鏈被呼叫時,所有服務都應該被清除。當cpu_dead被呼叫時,不應在有任何東西執行於被移除的cpu上。

**:

windows下禁用CPU導致CPU資源過高

接km公司技術人員反饋,使用者新安裝的一台windows200864位his伺服器,資料庫版本是10.2.0.4,將業務遷移到新伺服器後正常運 況下cpu資源占用異常的高,經常達到100 導致業務經常卡頓,使用者檢視資源管理器未發現異常程序,cpu資源大部分被oracle程序占用。步驟一 首先分析會...

物理cpu和邏輯cpu

1 物理cpu 插槽裡面實際插入的cpu的個數。通過不重複的physical id可以獲取實際的物理cpu的個數。2 邏輯cpu cat proc info processor 1 processor 2 processor 3 這些是邏輯cpu。3 邏輯cpu和物理cpu的對應關係 乙個物理cpu...

物理cpu與邏輯cpu的理解

一 yarn資源排程器中主要的資源分類 memory 記憶體 cpu 邏輯cpu 配置屬性 二 首先要明確物理cpu個數 核數 邏輯cpu數的概念 物理cpu數 主機板上實際插入的cpu數量,可以數不重複的 physical id 有幾個 physical id cpu核數 單塊cpu上面能處理資料...