Performance

為什麼我的電腦下載了很多之後就卡住了?

  • November 27, 2014

當我使用Transmission或Wget等程序一次性下載大量數據(例如3GB)時,在下載過程中逐步下載,完成後,電腦似乎總是有點遲鈍,好像它一直在使用交換。但是,free無論是在下載期間還是之後,結果始終顯示使用了 0 字節的交換。

我通常注意到用於下載的程序關閉速度較慢,後續程序打開速度較慢,但僅在第一次打開時,就好像數據正在從交換傳輸到 RAM。

我的交換並free沒有故障,因為在其他情況下會free按預期報告一些交換使用情況。我的電腦從不掛起或休眠;我不使用螢幕保護程序;我的電腦在每天結束時關閉。

我的電腦有 4 GB 的 RAM 和一個快速的處理器,當我下載時/之後,它的使用率永遠不會超過 ~20%。

我正在使用 Linux。

這種行為的原因可能是什麼?

電腦中的 RAM 有兩個用途:儲存程序的記憶體,以及作為最近使用的磁碟內容的記憶體。在典型的健康桌面系統上,大約一半的記憶體進入每個系統。您可以使用free命令檢查記憶體使用情況;“-/+ buffers/cache”的“used”列是用於程序數據的記憶體的數字,“buffers”和“cache”的值是磁碟記憶體。

當你下載了很多東西時,這些數據會填滿磁碟記憶體。當它這樣做時,其他東西將不得不消失,因為記憶體是有限的。您似乎沒有執行任何具有不常用數據的程序,因此沒有數據被寫入交換;相反,其他數據將從記憶體中逐出。

程序在下載後第一次打開速度較慢,因為您已經習慣了程式碼和數據已經在記憶體中的速度,但現在它們已經從記憶體中移出以為下載的文件騰出空間。

由於延遲寫入,下載程序關閉速度可能較慢:它寫入的文件被緩衝,並且只有當系統沒有將磁碟頻寬用於更重要的事情或需要緩衝記憶體時,數據才會完全寫入磁碟被重新利用,或者通過sync命令的明確請求。

你根本沒有看到任何交換有點奇怪。這表明您已將swappiness調整為會降低性能的值( swappiness 的使用是健康的,但網路上有很多建議關閉它,這幾乎總是適得其反)。

引用自:https://unix.stackexchange.com/questions/170328