調出系統管理器查看,卻發現無論CPU還是內存都並沒有佔滿,只有大約50%。
Bruce Dawson輕車熟路地啟動Windows系統事件追蹤工具ETW,結果發現Windows 10在進程銷毀方面存在一個嚴重的Bug。
簡單來說,當一個Windows系統/程序進程需要關閉的時候,會通過單獨一個線程進行處理,也就是說即便你有幾十個處理器核心/線程,Windows系統也完全支持它們,但這時候Windows其實是單線程運行的。
一般情況下這也沒什麼,但對於程序員來說,頻繁啟動、關閉大量進程是很常見的,於是悲劇就發生了,而且更糟糕的是,CPU核心數越多,問題反而越嚴重。
Bruce Dawson面臨的就是,1個線程在拚命忙碌,其他47個都在圍觀……
進一步研究發現,這個Bug只在Windows 10上存在,老版本的諸如Windows 7反而沒問題。
Bruce Dawson還寫了一篇詳細的分析文章,感興趣的可以戳這裡。