Linux - использовать диск как RAM

358
assafmo

У меня есть виртуальная машина и в ней процесс, который потребляет много памяти (~ 200 ГБ). Какая-то БД в памяти. Мне нужно запустить его на стандартном ноутбуке, и я не могу перекомпилировать его или увидеть код.

Я добавил 256 ГБ пространства подкачки с pri = 32767 в / etc / fstab и vm.swappiness = 100 в /etc/sysctl.conf, но он просто не загружает БД достаточно быстро (зависает на 4 ГБ через 24 часа; кажется, больше не растет).

(РЕДАКТИРОВАТЬ: я клонировал машину, изменил ОЗУ с 256 ГБ до 4 ГБ, добавил жесткий диск, отформатировал его как ext4 и создал файл подкачки размером 256 ГБ (dd -> mkswap -> swapon ...))

Почему он перестал расти?

Я подозреваю, что медлительность вызвана тем, что это пространство подкачки, поэтому ОС занята «подкачкой» (загрузка -> недостаточно места -> решает, что поменять ...).

Я ищу способ «добавить больше памяти», но заставить ОС воспринимать это как нормальную память. Или, может быть, моя конфигурация подкачки неверна?

Я знаю, что это повредит производительности, но это приемлемо для меня.

ВМ это CentOS 6.

0
«Мне нужно запустить его на стандартном ноутбуке». Ну, вы не будете. Даже если бы вы могли запустить его, база данных в памяти не создана, чтобы справиться с медлительностью доступа к диску. С тем же успехом вы можете выполнить все, что делает программа вручную, ручкой и бумагой, и, вероятно, это будет быстрее. Daniel B 6 лет назад 2
Если бы не было никакой разницы между подкачкой и реальной оперативной памятью, все наши системы имели бы очень маленькую оперативную память. Если вам нужна скорость реальной оперативной памяти, вам нужна настоящая оперативная память. xenoid 6 лет назад 1

1 ответ на вопрос

0
codykochmann

Вы пробовали несколько файлов подкачки? 4 гигабайта звучит так, как будто вы превышаете ограничение размера файла для 32-битной системы.

Я нашел это руководство на centos.org, в котором довольно четко изложено, как создавать файлы подкачки вручную.

Чтобы добавить файл подкачки:

  1. Определите размер нового файла подкачки в мегабайтах и ​​умножьте на 1024, чтобы определить количество блоков. Например, размер блока файла подкачки 64 МБ составляет 65536.
  2. В приглашении оболочки от имени root введите следующую команду с количеством, равным требуемому размеру блока:

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.

Вы можете добавить подробности о том, как это делается для всех, кто не знает, как это сделать. Ramhound 6 лет назад 0
это был чистый ресурс о том, как это сделать. https://www.centos.org/docs/5/html/5.2/Deployment_Guide/s2-swap-creating-file.html codykochmann 6 лет назад 0
Мне больше нравится этот учебник, потому что он включает в себя, как управлять вашими разрешениями https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-centos-6 codykochmann 6 лет назад 0
@Ramhound Это 64-битная система. Благодарю. assafmo 6 лет назад 0
@codykochmann Материал должен быть в теле ответа. Учебник на другом сайте не приносит нам никакой пользы Ramhound 6 лет назад 0
@assafmo Даже если * процессор * 64-битный, это не означает, что файловая система. Например, [FAT32] (https://en.wikipedia.org/wiki/File_Allocation_Table#FAT32) ограничен 4 ГБ файлами. FAT16 и FAT12 еще хуже. jpaugh 6 лет назад 1
Я забыл об этом. :) codykochmann 6 лет назад 0

Похожие вопросы