Linux - 使用磁碟作為 RAM

Linux - 使用磁碟作為 RAM

我有一個虛擬機,其中有一個消耗大量記憶體(~200GB)的進程。某種記憶體資料庫。我需要在標準筆記型電腦上運行它,但無法重新編譯它或查看程式碼。

我在/etc/fstab 中新增了pri=32767 的256GB 交換空間,在/etc/sysctl.conf 中新增了vm.swappiness=100,但它載入資料庫的速度不夠快(24 小時後停留在4GB;會)似乎不再增長)。

(編輯:我克隆了機器,將 RAM 從 256GB 更改為 4GB,添加了硬碟,將其格式化為 ext4 並創建了一個大小為 256GB 的交換檔案(dd -> mkswap -> swapon...))

為什麼它停止生長了?

我懷疑緩慢是由於它是交換空間造成的,因此操作系統正忙於“交換”(加載 -> 沒有足夠的空間 -> 決定交換什麼......)。

我正在尋找一種“添加更多內存”但讓作業系統將其視為普通內存的方法。或者我的交換配置可能是錯誤的?

我知道這會損害性能,但對我來說是可以接受的。

虛擬機器是CentOS 6。

答案1

您是否嘗試過多個交換文件? 4 場演出聽起來好像您已經達到了 32 位元系統的檔案大小限制。

我在以下位置找到了這個教程centos.org其中非常清楚地列出瞭如何手動製作交換文件。

新增交換文件:

  1. 確定新交換檔案的大小(以兆位元組為單位)並乘以 1024 以確定區塊數。例如,64 MB 交換檔案的區塊大小為 65536。
  2. 在 shell 提示字元下以 root 身分鍵入下列命令,其中 count 等於所需的區塊大小:

dd if=/dev/zero of=/swapfile bs=1024 count=65536

  1. 使用以下命令設定交換文件:

mkswap /swapfile

  1. 若要立即啟用交換文件但不在啟動時自動啟用:

swapon /swapfile

  1. 若要在開機時啟用它,請編輯 /etc/fstab 以包含下列條目:

/swapfile swap swap defaults 0 0

下次系統啟動時,它會啟用新的交換文件。

cat /proc/swaps新增新的交換檔案並啟用它後,透過查看命令或的輸出來驗證它是否已啟用free

答案2

我最終設法將資料轉換為 SQLite 資料庫,並編寫https://github.com/assafmo/SQLiteQueryServer能夠遠端存取它。它工作完美並且速度超級快。

相關內容