2024年2月6日 星期二

kernel_task CPU 使用率

 https://www.davidschlachter.com/misc/kernel_task

2020 年 8 月 25 日更新:在文章中添加了更多詳細資訊。請注意,從 macOS Catalina 開始,由於唯讀系統分區,此過程會更加複雜。在考慮停用該功能之前,您應該了解Mac 受到限制的原因kernel_task

最近遇到水瓶後,我們的 MacBook Air 在風扇最高速度(6500 rpm)時運行緩慢。拆解,用酒精清洗所有東西並擦乾,甚至更換IO板都沒有效果。

速度緩慢的原因是節流限制了用戶進程可用的 CPU,試圖透過不給處理器帶來壓力來保持機器涼爽。系統做出了錯誤的反應,就好像處於高溫狀態一樣,但事實顯然並非如此(所有溫度感測器都報告為 30 – 45 ℃)。這表明存在與 SMC 相關的硬體問題。如果不更換邏輯板,所需的解決方案是停用熱節流(可能會保留風扇以 100% 運行的問題,以確保系統實際上是涼爽的,而不是實際的風扇控制)。

在活動監視器 ( ) 中很容易看到節流kernel_task

活動監視器顯示非常高的 kernel_task 活動

限制是作為內核擴展實現的,Rhys Oxenham 建議透過刪除其資源中與 Mac 型號相對應的 plist 來停用該擴充功能。然而,由 plist 檔案識別的 Mac 清單已經很多年沒有更新了。我們的 2014 年 MacBook Air ( MacbookAir6,2) 缺席。X86PlatformPlugin.kext也在 的插件資料夾中IOPlatformPluginFamily.kext)還有其他透過其主機板識別的 Mac(請參閱這篇文章的評論)。就我而言,我嘗試禁用ACPI_SMC_PlatformPlugin.kextX86PlatformPlugin.kext擴展,但這沒有效果。

最終對我有用的是禁用父內核擴展IOPlatformPluginFamily.kext到目前為止,我還沒有註意到任何不利影響。當然,停用 Mac 上的熱管理可能會導致過熱,可能需要更換邏輯板。如果可能的話,解決根本問題更有意義(例如清潔風扇?它們可能會佈滿灰塵)。由於邏輯板的硬體損壞似乎是這裡的原因(SMC 的溫度控制因水損壞而損壞),過熱對邏輯板的進一步損壞只會加速我可能需要的更換。

這就是我所做的:

首先,我必須透過啟動進入復原模式(按住 Command-R 啟動)、開啟終端機(在「實用程式」功能表下)並執行命令(更多詳細資訊csrutil disable參閱堆疊交換)。

從那裡,我在啟動時按住 Command-S 重新啟動到單一使用者模式。掛載檔案系統 ( ) 後,我使用 rsyncfsck -y; mount -uw /製作了擴充功能的備份副本:IOPlatformPluginFamily.kext

rsync -av /System/Library/Extensions/IOPlatformPluginFamily.kext /Users/Shared/

(要從備份恢復擴展,我會使用rsync -av /Users/Shared/IOPlatformPluginFamily.kext /System/Library/Extensions/

然後我簡單地刪除了擴充功能並重新啟動:

rm -rf /System/Library/Extensions/IOPlatformPluginFamily.kext; shutdown -r now

開機後風扇仍全速運轉,但節流消失了:

活動監視器顯示正常的 kernel_task 活動

到目前為止我還沒有註意到任何問題。如果我這樣做,我會保持這篇文章的更新。我很高興 MacBook 再次可用,並且很高興(暫時)避免因更換邏輯板而支付約 700 美元的維修費。

更新於 2015 年 12 月 10 日:我發現從 OS X El Capitan 10.11.1 更新到 10.11.2 後,我必須重複這些步驟。我想大多數 OS X 更新都會出現這種情況。

2015 年 12 月 11 日更新:也許是新的 I/O 板,但今天風扇停止以最大速度運行!我從備份中恢復了內核擴展,現在 MacBook Air 恢復正常,具有正常的熱管理。

https://blog.viktorpetersson.com/2014/10/16/how-to-fix-kerneltask-cpu-usage-on-yosemite.html

# Find the model
$ system_profiler -detailLevel mini | grep "Model Identifier:"
Model Identifier: MacBookPro8,2

# Move and backup the file
$ mkdir -p ~/backup
$ cd /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources
$ sudo mv MacBookPro8_2.plist ~/backup/

https://blog.viktorpetersson.com/2016/01/03/how-to-fix-kerneltask-cpu-usage-on-el-capitan.html

前段時間,我寫了部落格文章如何修復 Yosemite 上的 kernel_task CPU 使用率這篇文章仍然受到很大的關注,因此我想發布一個更新,反映如何在 El Capitan 上執行此操作。

這個過程大致相同,但由於 El Capitan 透過系統整合保護 (SIP) 向檔案系統引入的附加安全性發生了變化,因此需要做更多工作。

tl;dr 如下:

  • 以恢復模式啟動系統(啟動時使用 Cmd+R)。啟動終端機視窗並運行csrutil disable.
  • 正常重新啟動系統並按照原始指南中的相同步驟進行操作。
  • 再次重新啟動系統進入復原模式並透過運作啟用 SIP csrutil enable
  • 重新啟動系統。

步驟 1:停用系統整合保護 (SIP)

首先,關閉計算機。然後開啟電腦電源並按住 Command + R 將其引導至恢復模式。

電腦完成啟動後,開啟終端機視窗(實用程式 -> 終端機)。完成後,只需執行以下命令:

$ csrutil disable

這將禁用 SIP。為了使其工作,您現在需要將電腦重新啟動到常規模式(即不是另一個恢復模式啟動)。

第 2 步:解決問題

電腦啟動後,啟動終端機會話並執行以下命令(有關更多信息,請參閱原​​始帖子

# Find the model
$ system_profiler -detailLevel mini | grep "Model Identifier:"
Model Identifier: MacBookPro8,2

# Move and backup the file
$ cd /System/Library/Extensions/IOPlatformPluginFamily.kext/Contents/PlugIns/ACPI_SMC_PlatformPlugin.kext/Contents/Resources
$ sudo mv MacBookPro8_2.plist MacBookPro8_2.bak

完成後,是時候再次返回恢復模式了,因此請關閉電腦。

步驟 3:重新啟用 SIP

啟動時按 Command + R 再次以恢復模式啟動電腦。再次打開終端機窗口,但這次執行以下命令:

$ csrutil enable

現在重新啟動您的計算機,您應該已準備就緒。

更新:如果您在使用 macOS Sierra 時遇到問題,請參閱如何修復 macOS Sierra 上的 kernel_task CPU 使用率


https://grafxflow.co.uk/blog/mac-os-x/delete-ioplatformpluginfamilykext-macos-big-sur


警告警報:這僅與在先前版本的 macOS 中刪除IOPlatformPluginFamily.kext的人有關,以對導致 CPU 過載的kernel_task進行排序,但現在在安裝 macOS 11 (Big Sur) 後,問題又出現了。您將刪除系統擴展並承擔風險......所以您已被警告!+ 最好也使用11.1以上版本,因為在使用11.0.1進行測試時我發現它有很多 bug!

所以問題就在這裡......

啟動 MacBook Pro 後,macOS 的運行速度會慢得令人難以置信。活動監視器開啟以查看 CPU 發生的情況時,清單頂部的kernel_task使用率約為 500%!

'kernal_task_macOS_fix'

在任何先前的版本 - macOS 10.14 (Mojave)或更低版本中,透過先執行復原模式CMD + R並在終端機中,這是一個相當簡單的修復。

csrutil disable

然後運行單用戶模式CMD + S

fsck -fy

mount -uw /

sudo mkdir /IOPlatformPluginFamily-backup-kexts/

sudo mv /System/Library/Extensions/IOPlatformPluginFamily.kext /IOPlatformPluginFamily-backup-kexts/

sudo rm -rf /System/Library/Extensions/IOPlatformPluginFamily.kext

但從macOS 10.15 (Catalina)開始,此功能已停止運作。原因是蘋果引入了唯讀系統卷,它是一個專用分區,僅用於存儲系統內容,以防止對系統文件進行任何篡改,其中之一就是麻煩的IOPlatformPluginFamily.kext

現在,在找到下面與macOS 11 (Big Sur)相關的解決方案之前,我曾嘗試製作一個運行macOS 10.14 (Mojave)的可啟動 USB ,但這無法讀取只讀系統卷。

第 1 步 - 禁用 FileVault

前往系統偏好設定->安全性和隱私,然後選擇FileVault選項卡。然後選擇“關閉 FileVault”

步驟 2 - 繞過簽章系統磁碟區 (SSV*)

SSV有助於防止篡改作業系統中的任何 Apple 軟體。此外,它還使 macOS軟體更新更加可靠、更安全。SSV利用APFS快照,因此如果無法執行更新,無需重新安裝即可還原舊系統版本。

因此,這意味著macOS Big Sur實際上不再從即時系統磁碟區啟動,而是從相同系統資料夾的快照/副本啟動。通常,不可能將快照安裝為可寫,只能讀取,因此這是我找到的解決方案。

因此,首先使用CMD + R在恢復模式下啟動。在載入的畫面上,前往導航並選擇Utilities -> Terminal輸入以下內容。

注意:如果不先完成此操作,您將無權執行下一個csrutilauthentiated-rootdisable命令。

csrutil disable

然後。

reboot

使用CMD + R再次直接啟動恢復模式,然後選擇Utilities -> Terminal輸入以下內容。

csrutil authenticated-root disable

然後。

reboot

步驟 3 - 掛載 Live Volume 並備份 IOPlatformPluginFamily.kext 文件

現在重新啟動回到正常的 macOS 啟動模式,讓我們掛載 live 卷 - disk1s5可能會有所不同。

注意:要找出「disks5」是否適合您的計算機,請在終端機中輸入diskutil list ,該終端將列出您的磁碟機。

diskutil mount disk1s5

接下來使其可寫,這將要求您輸入密碼 - /Volumes/Macintosh\ HD\ 1可能不同。

sudo mount -uw /Volumes/Macintosh\ HD\ 1

Password:

現在讓我們先透過輸入來查看有問題的IOPlatformPluginFamily.kext檔案是否存在。

ls -a /Volumes/Macintosh\ HD\ 1/System/Library/Extensions/

我們不會刪除文件,而是會進行備份 - 因此請使用以下內容並將其移至新建立的資料夾中。

sudo mkdir /Volumes/Macintosh\ HD\ 1/IOPlatformPluginFamily-backup-kexts/

sudo mv /Volumes/Macintosh\ HD\ 1/System/Library/Extensions/IOPlatformPluginFamily.kext /Volumes/Macintosh\ HD\ 1/IOPlatformPluginFamily-backup-kexts/

再次查看它是否已從目錄中消失。

ls -a /Volumes/Macintosh\ HD\ 1/System/Library/Extensions/

步驟 4 - 建立快照並將其標記為下次預設重新啟動。

現在我們已經刪除了我們需要添加這個新版本的系統資料夾作為快照的文件,因此輸入以下內容。

sudo /System/Library/Filesystems/apfs.fs/Contents/Resources/apfs_systemsnapshot -s "SnapshotName" -v /Volumes/Macintosh\ HD\ 1

然後將其標記為下次重新啟動的預設值。

sudo /System/Library/Filesystems/apfs.fs/Contents/Resources/apfs_systemsnapshot -r "SnapshotName" -v /Volumes/Macintosh\ HD\ 1

現在祈禱您應該能夠重新啟動,並且kernel_task不應再像以前那樣佔用 CPU,從而減慢您的電腦速度。

有改過的指令

diskutil mount disk1s5

sudo mount -uw /Volumes/Ventura\ SSD\ 1

ls -a /Volumes/Ventura\ SSD\ 1/System/Library/Extensions/

sudo mkdir /Volumes/Ventura\ SSD\ 1/IOPlatformPluginFamily-backup-kexts/


sudo mv /Volumes/Ventura\ SSD\ 1/System/Library/Extensions/IOPlatformPluginFamily.kext /Volumes/Ventura\ SSD\ 1/IOPlatformPluginFamily-backup-kexts/


sudo /System/Library/Filesystems/apfs.fs/Contents/Resources/apfs_systemsnapshot -s "SnapshotName" -v /Volumes/Ventura\ SSD\ 1


ls -a /Volumes/Ventura\ SSD\ 1/System/Library/Extensions/


sudo /System/Library/Filesystems/apfs.fs/Contents/Resources/apfs_systemsnapshot -r "SnapshotName" -v /Volumes/Ventura\ SSD\ 1

沒有留言:

張貼留言

剪貼簿

【黑马程序员】Linux零基础快速入门到精通 bypass activation lock  https://mega.nz/folder/JBEQSBaK#P-MMA1LGZergdz2-3vec6A ------------------------------------- ...