KSysGuard 錯誤報告記憶體使用情況

KSysGuard 錯誤報告記憶體使用情況

最近有幾次我注意到我的筆記型電腦運行有點慢並且磁碟指示燈頻繁閃爍。它是配備 SSD 和 12GB RAM 的 i7,所以我並不期望瀏覽時會出現太慢的情況。

上次,它困擾著我,所以我快速查看了系統監視器(KSysGuard),它顯示我的2GB 交換分區已100% 利用率,但物理內存僅為4.8GB,滿分11.6(這就是圖表中的位置)去)。所以我想我應該嘗試通過再次關閉和打開交換來清空交換(swapoff -aswapon -a),但由於 RAM 不足,交換失敗。

這讓我很困惑,因為根據 KSysGuard 的說法,我應該有大約 7GB 的空閒空間,所以我想我應該看看 top 怎麼說。頂部顯示大約 150MB 可用 RAM 和 2048/2048MB 交換空間正在使用中。怪不得跑得有點慢!

為什麼 KSysGuard 會如此少地報告記憶體使用情況,我怎麼能讓它成為最能告訴小豬的?

答案1

根據評論,我使用以下命令將交換文件從 2GiB 增加到 6GiB:

sudo swapoff -a
sudo rm /swapfile
sudo dd if=/dev/zero of=/swapfile bs=1M count=6144
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

上述命令分別透過將頁面移回實體記憶體來關閉交換,刪除交換文件,建立一個名為 swapfile 的新 6GiB 文件,將權限設定為僅 root,配置該文件以供交換使用,最後使用以下命令重新開啟交換新文件。

然後,我添加vm.swappiness=70到倒數第二部分的末尾,以/etc/sysctl.conf使頁面文件的交換稍微更加積極(節省一些物理內存)。

然而,要真正回答為什麼 KSysGuard 似乎在使用的 RAM 量方面撒謊的問題,這是因為預設的「記憶體和交換歷史記錄」圖表實際上只顯示來自「應用程式記憶體」感測器的資料。為了解決這個問題,我在 KSysGuard 中添加了一個名為“內存”的選項卡,並包含 2 個圖表 - 一張用於物理內存,一張用於交換。實體記憶體圖配置了以下感測器:已使用記憶體、可用記憶體、緩衝記憶體、快取記憶體。只有「已使用」和「快取」才是真正需要的,但「已使用」指標可以告訴您實際使用了多少記憶體。

答案2

從評論...

注意:請記住,未使用的 RAM 用於檔案和磁碟緩衝區。

真正的問題是你的 2G 交換空間太小,而且你的磁碟正在崩潰。

我會將你的交換空間增加到至少 6G,並將你的 vm.swappiness 從預設的 60 修改為 80。

若要測試 vm.swappiness 的各種設置,請使用sudo sysctl vm.swappiness=80。 vm.swappiness 值大於預設值 60 可以更多地利用交換。小於 60 的值會更多地使用 RAM。

要使其永久,請在最後編輯/etc/sysctl.conf並添加,然後重新啟動。vm.swappiness=80

相關內容