Linux
將程序移入和移出交換
我的 linux 伺服器上有幾個伺服器類型的程序,這些程序佔用了 50MB 的 RAM。它們不會經常被使用,我希望能夠執行比我的 RAM 容量允許的更多的實例。我希望能夠從 RAM 中刪除一個程序並將其移動到磁碟的交換區。linux核心是否提供任何東西來微調每個程序的swappiness?
Linux 核心通過proc文件系統提供了一個屬性,該屬性定義了記憶體頁面(僅限匿名!)交換到磁碟的積極程度。
vm.swappiness屬性適用於每個系統而不是每個程序**。**如果您想盡可能避免交換,請將此值設置得較低。如果您的系統程序長時間休眠,您可能會通過增加此值而從積極的交換行為中受益。
您可以從 CLI 臨時更改它(它不會在系統重新啟動後繼續存在)
echo 90 > /proc/sys/vm/swappiness
或將此行添加到 /etc/sysctl.conf 中
vm.swappiness=90
並應用它
sysctl -p
或者,如果您的系統在最新的 Linux 核心上執行(自 2.6.24 起?!?) ,則應該可以使用cgroups和記憶體子系統使其更加精細。假設您有一個附加了記憶體子系統 (/cgroups/mem) 的 cgroup 層次結構和一個定義了任務/程序 (/cgroups/mem/your_cgroup/tasks) 的 cgroup (/cgroups/mem/your_cgroup)。然後,您可以更改這組任務的交換行為,如下所示:
cd /cgroups/mem/your_cgroup echo 90 > memory.swappiness
有關記憶體子系統的更多詳細資訊,您可以閱讀例如RedHat Resource Guide。