Swap
為什麼即使系統在將大文件複製到某個地方時系統有可用儲存空間,Linux 也會寫入交換空間?
我注意到,如果我將文件複製到某個儲存設備(系統的 HDD、SSD 或拇指驅動器),少量數據(20 - 30 MB)會寫入交換空間 - 並且數量會增加。是的,即使系統也有可用的 RAM。
寫入交換空間會使設備變得非常慢。顛簸是明顯的例子。
如果我在複製之前關閉交換,文件就會被複製得很好!
這是一個螢幕截圖:
我正在將一個大文件複製到 /dev/sda2。我有可用的 RAM,但總是將一些數據寫入交換。這種行為在我擁有的所有設備以及我有時間玩的設備上都是相同的。
我嘗試使用此命令命令更改 swappiness:
sysctl vm.swappiness=n # n for a value from 0..100
嘗試將swappiness變為0,並嘗試將swappiness變為100。行為沒有改變。任何系統監視器都說我有大量可用 RAM。它仍然將數據寫入交換。
通常,該行為取決於應用程序,複製應用程序是否向核心提供了有關它將如何讀取將要複製的文件的正確指示。
在您的情況下,我看到您的文件僅比您的整體記憶體略大,因此您的 GUI 文件管理器可能會請求文件的完整通用
mmap
文件,而不是分塊複製它。嘗試
cp
從終端視窗複製它。該cp
命令認真地向核心提供指示,並將文件複製到它檢測到最適合系統的任何塊中。您可能仍會看到記憶體填充記憶體,但不應觸發交換,即使由於記憶體壓力激增而不僅僅是一堆字節。