日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

那些吃CPU的大户

發布時間:2023/12/14 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 那些吃CPU的大户 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????最近沉浸在代碼的世界里,處于兩耳不聞窗外事的狀態。今晚偶有閑暇,看了一眼任務管理器,IDLE進程的時間居然有800多小時,還有多個進程的CPU凈時間達到小時級別。

????如下圖所示,IDLE進程的CPU凈時間為832個小時18分15秒。這說明我很長時間沒有重啟這臺電腦了。除了IDLE進程,CPU凈時間達到小時級別的還有8位,它們是本文的主角。

? ? 8個達到小時級別的進程分別是:

  • 系統進程,排名第1位,累計用CPU時間接近17個小時,這個很不正常,稍后深入探究

  • dwm,桌面窗口管理器,排名第2位,也有些意外

  • ism2,英特爾公司的軟件更新管理工具,排名第3位,不干什么正事的應用,還花這么多時間,多半是有劣質代碼亂跑,不過算了吧,不多說了

  • msmpeng.exe,Windows自帶的安全引擎,一般來說,安全軟件是吃CPU的大戶,一般它是要排在前三的,現在落到第4了,真的算很好了,要表揚一下

  • svchost.exe,后臺服務的宿主進程,根據進程號查一下,這個進程里的服務是superfetch,提高性能用的,念其用心良苦,花些時間也不責怪它了

  • baidunetdisk.exe,百度網盤的客戶端,也就是以前的百度云管家,老雷曾經批判過的。不知道是不是與老雷的文章有關,文章發表后,這個工具洗心革面,不僅改了以前的問題,而且改了名字。安靜一年多了,最近一段時間感覺又有些激進,經常占很多CPU和I/O。可能是團隊里來新員工了吧?

  • 接下來兩位是explorer和powerpoint,沒啥好說的了,兩個人的活確實比較累


為什么達到小時級別值得關注呢?因為今天的CPU太快了,真可謂風馳電掣,一秒鐘可以執行幾G條指令。不信你看,任務管理器里面排在后面的很多程序用的CPU凈時間都是0小時0分0秒,這些都是綠色標兵。

? ? 值得表揚的是旺旺客戶端(加亮的那個),老雷今年年初曾經批評過它,開發工程師聯系我,說會改正問題,看來改進的不錯。


? ? 回過頭來再說系統進程吧,它是內核的宿主。內核相當于軟件世界的ZF,按說它應該比較輕,不花什么資源。但是現在它卻占了最多的CPU時間(如此說話時,不包括IDLE進程)。

????當內核被普通線程調用時,它所占的時間是記錄在調用線程上的。因此,? ? 系統進程占的時間都是它自己的系統線程運行時花費的。

????觀察任務管理器,系統進程的線程數多達190個。那么,是哪個系統線程花的時間比較多呢?要回答這個問題,沒有專業工具不行了。


????喚出WinDBG,開始本地內核調試。“啊?老雷,你的機器總啟用著內核調試啊?”?

? ? “是的!”?

????執行!process 4列出系統進程的所有線程。WinDBG一邊列線程,一邊加載符號,花了很久,終于搞定。

????然后搜索“KernelTime? ? ? ? ? ? ? ? 0n” (n為1-9),于是發現一個使用4小時多的線程,有圖有真相,且看:? ??

UserTime? ? ? ? ? ? ? ? ? 00:00:00.000

KernelTime? ? ? ? ? ? ? ? 04:24:43.437

????這是干什么的線程呢?

? ? 從棧回溯來看,線程的主函數是dxgmms2!VidMmWorkerThreadProc,其中,dxgmms2是模塊名,搜索互聯網,可以找到很多與這個模塊有關的藍屏崩潰。它還有個同門兄弟,叫dxgmms1,也是一樣,有很多崩潰記錄。

????那么這兄弟兩個是誰家的呢?是微軟家的。

????做什么用的呢?是管理GPU的。再具體一點,它們肩負著兩個與GPU相關的重要任務:

????- 顯存管理,簡稱VidMM

????- GPU調度,簡稱VidSchi

????從上面線程的工作函數名來看,VidMmWorkerThreadProc,它是屬于VidMM的。

????繼續搜索用時超過2小時的線程,還有如下一個:

????看它的工作函數VidSchiWorkerThread,居然就是dxgmms中的調度器線程:

????dxgmms2!VidSchiRun_PriorityTable

????dxgmms2!VidSchiWorkerThread

? ? 繼續搜索,還有一個超過2小時的線程,是igfxdcd,它是英特爾的GPU調試輔助驅動,用于調試OpenCL程序。它的設計明顯存在缺欠,不管是否在調試,都有一個系統線程在跑,真是不應該。

????繼續搜索超過1小時的系統線程,有兩個,一個是KeBalanceSetManager,是NT內核自己的,用來修剪進程工作集的。

????另一個是ZeroPageThread,是用來準備清零內存頁的,在內核啟動時,是這個線程發起關鍵的執行體初始化動作,內核啟動后,它退居二線,專門負責把內存頁清0,當驅動程序需要已經清0的內存頁時,滿足需要。

????綜上,超過小時級別的系統線程有5個,三個是GPU相關的,另外兩個是普通內存相關的。它們加起來一共消耗了10個小時多的CPU凈時間,很是驚人。



***********************************************************

正心誠意,格物致知,以人文情懷審視軟件,以軟件技術改變人生。

歡迎關注格友公眾號


總結

以上是生活随笔為你收集整理的那些吃CPU的大户的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。