Command-Line-Interface

為什麼 DU 會導致 CPU 使用率過高?

  • April 13, 2014

在 CentOS 6.5 上,因為 /home 的計劃磁碟使用du -sk /home而執行,但導致 100% 的 CPU 使用。另外,在它完成之前,另一個 du 執行並堆積起來,使系統陷入癱瘓。sh -c (du -sk \/home) 2>/dev/null``du

我已經禁用了自動檢查,但我也不能du -sk /home手動執行。du在其他目錄上執行良好(快速)(雖然 /home 是最大的 - 4912620 - 它不應該花這麼長時間)

我想知道為什麼 DU 在 /home 上導致 CPU 使用率高


更新 1:完全重啟(主機+來賓)解決了這個問題。

更新2:問題又回來了。當 du 執行時,CPU 使用率在 (us) 和 (sy) 之間分配了近一半。(wa) 永遠不會超過 1%。此外,IOWAIT僅顯示磁碟寫入

當我看到這篇文章時,我終於發現了問題所在。

root> modprobe vhost_net root> echo vhost_net > /etc/modules

由於某種原因,virtio 介面之前沒有載入驅動程序。現在一切都很好。

我不能告訴你確切的原因,但我會這樣做來縮小正在發生的事情:

cd /home
for i in * ; do echo "Starting in ${i}..." ; du -s ${i} ; done

這將為/home目錄中的每個命令執行“du -s”,並向您展示它將要做什麼。這也是假設您使用 sh 或 bash 作為 shell。

當您找到導致問題的目錄時,再移入一個目錄,看看那裡會發生什麼。還要記住,這不會在您開始 for 循環的級別檢查隱藏(“點”)目錄。您可能還需要檢查這些,或修改 glob 表達式以包含它們。

引用自:https://serverfault.com/questions/563857