開源新聞短文資訊

Linux準備混合SMP修復程序,以避免即將推出的筆記本電腦出現為11個Socket Monsters情況

正在為主線Linux 6.4內核制定修復程序,並標記為回溯到現有穩定內核系列,以修復英特爾混合系統的x86拓撲報告。內核中的拓撲錯誤在Meteor Lake筆記本電腦中變得更加明顯,目前內部英特爾測試筆記本電腦會報告系統具有11個CPU插槽,而不是所有核心都包含在一個CPU插槽內的正確核心數。

雖然英特爾混合CPU設計自2021年末以來已經很常見,但Linux內核到目前為止還沒有正確處理「smp_num_siblings」變數,而這個變數又會傳播到用戶空間,並可能報告不正確的信息。在即將推出的英特爾Meteor Lake P平台的情況下,使用常見的lscpu命令的Linux內核將報告系統具有11個CPU插槽,每個插槽內僅有一個核心。實際上,這是一款單插槽筆記本電腦,具有16個總核心。

除了將錯誤的信息傳播到用戶空間以供信息目的之外,這種不正確的smp_num_siblings處理可能會對Linux內核調度器決策產生影響。正如英特爾工程師張銳所評論的那樣,「這也預計會使調度器做一些奇怪的事情。」

他進一步解釋了這個掛起的補丁

「傳統上,系統中的所有CPU都具有相同數量的SMT兄弟線程。這在混合處理器中發生了變化,其中一些邏輯CPU具有兄弟線程,而其他邏輯CPU則沒有。

今天,當每個CPU線程被啟動時,CPU引導代碼會設置全局變數smp_num_siblings。最後一個啟動的線程將使用線程的兄弟線程數來覆蓋它。最後一個啟動的線程將「獲勝」。如果線程是Pcore,則smp_num_siblings == 2。如果它是Ecore,則smp_num_siblings == 1。

smp_num_siblings描述了系統是否支持SMT。它應該指定所有核心中最大的SMT線程數。

通過始終增加其值,確保smp_num_siblings表示系統範圍內的最大兄弟線程數。永遠不要允許它減少。

在MeteorLake-P平台上,這解決了Ecore CPU在探測Ecore CPU時不在任何CPU兄弟映射中更新的問題,因為當探測Ecore CPU時,系統被視為UP系統。」

該補丁昨天被TIP的x86/urgent分支採用。隨後,這將作為緊急修復程序提交給Linux 6.4內核,很可能在周末完成。該補丁還標記為回溯到現有的Linux內核穩定版本,以確保在英特爾混合平台上正確報告SMP兄弟計數。

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0

You may also like

Leave a reply

您的郵箱地址不會被公開。 必填項已用 * 標註

此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

More in:開源新聞