Arch-Linux

交換為什麼以及如何提高性能,我可以禁用它嗎?

  • November 20, 2016

我有一台8GB執行 RAM的筆記型電腦4.0.4-2-ARCH。最近,我安裝了Android Studio,然後 bam,我通常原始的系統突然結結巴巴並且完全凍結(不止一次)

在使用Android Studio之前,我可以輕鬆地同時執行SMB、Minidlna、Plex、MySQL、PostgreSQL、Apache 和 Chrome,沒有任何問題。現在,我什至很難用Android Studio執行**Chrome。在這兩種情況下,系統監視器都報告只使用了 RAM!free``6.5G

所以我做了一點探勘並啟用了(swapfile)的交換。5G我對性能改進感到驚訝!沒有更多的滯後。但是,在峰值負載期間,(Studio 和 Chrome)使用的是5GRAM +1.5G交換。

這讓我有點困惑,我有兩個問題。

首先,如果只使用過記憶體6G,為什麼會出現口吃,尤其是為什麼會凍結?

其次,我的硬碟 ( 1TB) 大約 3 年了,我寧願保持交換禁用。有沒有其他方法可以在不強調硬碟驅動器的情況下實現*類似交換的性能。*我已經設置swappiness了 10 的低值,它使用1G正常,我的筆記型電腦已經達到了最大RAM限制。

我已經閱讀了這些出色的答案,但我之所以這麼問,是因為我對它們不滿意

編輯:這些答案表明Linux將使用所有可用記憶體,因此,對於新程序,分頁會減慢電腦的速度。但是,如果Linux放入記憶體中的很多內容是無需管理即可管理的內容,為什麼在執行需要大 RAM 的程序時性能會受到影響?我的意思是,充其量程序啟動應該很慢(分頁)。

  1. 如果我有足夠多的 RAM,我是否需要交換空間?
  2. 為什麼在大量記憶體仍然可用時使用交換?
  3. 交換是不合時宜的嗎?

雖然看起來你有足夠多的 RAM,但 Linux 會在記憶體中緩衝文件數據。/tmp將文件系統放置在記憶體中以加快訪問速度也很常見。如果您沒有啟用交換,那麼有很多東西最終可能會卡在記憶體中,這可能會阻止記憶體經常訪問的文件。您的選擇實際上是:將未使用的記憶體分頁到磁碟;或重複從磁碟讀取文件。一旦記憶體(包括緩衝區)被填滿,您就沒有不需要 IO 的選項。

如今,通常將記憶體分頁以交換最近未訪問過的記憶體,而不是換出整個程序。可能被分頁的內容包括:

  • 已載入到程序中並針對其記憶體位置進行修改的非 PIC(位置無關程式碼);
  • 讀入未被積極使用的程序的數據;
  • 沒有被積極使用的臨時文件(可能被分頁);和
  • 任何其他未被積極使用且沒有備用備份儲存的記憶體。

從磁碟讀取的 PIC 和其他未修改的數據可以使用從中讀取它的文件作為備份儲存,而不是使用交換。

您可以使用諸如sar監視分頁、交換和磁碟 I/O 之類的程序。我希望您在啟用交換後會看到更少的磁碟使用。

如果要掛起到磁碟,通常需要相當大的交換空間,掛起時可以將記憶體複製到其中。

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