Ubuntu поддерживает динамический размер файла подкачки?

13

Я не могу себе представить, почему файл подкачки должен быть фиксированного размера. Почему бы не позволить ему динамически изменять размер, как файл образа жесткого диска для виртуальной коробки?

Том Мерсер
источник
Linux не поддерживает динамические размеры пространства подкачки, если не считать возможность добавлять и удалять все пространства подкачки во время выполнения. (Между прочим, и Windows, и даже не последняя.)
Дэвид Фёрстер
Поддерживает ли Mac динамический обмен?
Том Мерсер
Я понятия не имею. Это совершенно другое ядро, которое я не изучал. Скорее всего, это похоже на пространство подкачки в Linux. В любом случае, не могли бы вы открыть новый вопрос Unix & Linux или Ask Different, если у вас есть новый или дополнительный вопрос о ядре Darwin OS X? Раздел комментариев не подходит или предназначен для новых вопросов или расширенного обсуждения. :-) Благодарность.
Дэвид Фёрстер
@DavidFoerster в Windows вы можете установить минимальный и максимальный размеры для каждого файла подкачки, и Windows при необходимости увеличит размер файла подкачки. tomshardware.com/news/...
phuclv

Ответы:

11

Похоже, Linux не поддерживает динамическое изменение размера файла подкачки (во всяком случае, я не смог обнаружить, что размер файла подкачки изменился без swapoff/ swapon).

Предположительно, проще предположить, что файл подкачки не меняет размер файла динамически при написании кода для его поддержки. Я тоже не вижу в этом особой пользы. Поскольку вы можете использовать несколько файлов подкачки, ничто не мешает вам создавать больше файлов подкачки по мере необходимости.

Также обратите внимание на этот пункт из на swaponстраницах руководства :

The  swap file implementation in the kernel expects to be able to write
to the file directly, without the assistance of the  filesystem.   This
is  a problem on preallocated files (e.g.  fallocate(1)) on filesystems
like XFS or ext4, and on copy-on-write filesystems like btrfs.

Я думаю, что та же проблема будет применяться к файлу подкачки динамического размера.

Мур
источник
Похоже, это правда, и пространство подкачки даже не меняет размер динамически подкачки.
Том Мерсер
2

SwapSpace - это утилита, которая позволит вам динамически менять размер свопа, если это то, что вы ищете. Я верю, что это доступно в Ubuntu.

user231695
источник
Хотя он был выпущен 2 года назад , все версии для Ubuntu кажутся древними. Насколько хорошо это работает?
Муру
Я не могу представить, что метод, использованный для записи файла подкачки, изменился, но я не могу сказать наверняка. Отлично работает на Debian.
user231695
Я до сих пор голосую за ваш ответ, так как создать новое пространство так же просто.
user231695
Я попробую и доложу.
Том Мерсер
@ user231695 Хотя создать новое пространство подкачки просто, это ужасно неудобно и, возможно, совершенно неработоспособно в качестве решения. Единственный раз, когда пользователь хочет добавить новое пространство подкачки, это тот самый момент, когда существующий подкачка заполнена. Отсюда мой вопрос для динамического определения размера файла подкачки.
Том Мерсер
1

Я знаю, что уже поздно, но я думаю, что лучшее решение для динамического обмена - это:

sudo apt install dphys-swapfile
sudo update-rc.d dphys-swapfile enable

затем установить CONF_SWAPFACTOR=2в /etc/dphys-swapfileи , наконец ,

sudo service dphys-swapfile start
Денис Пицалис
источник
Это не похоже на динамическое изменение размера свопа. Похоже на скрипт для инициализации файла подкачки определенного размера, который по умолчанию равен 2-кратному объему оперативной памяти.
Том Мерсер
Привет @TomMercer установил параметры swapfactor и maxswap в соответствии с комментариями в файле: «# установить размер в вычисляемое значение, в этот раз размер оперативной памяти, динамически адаптируемый, гарантирует, что достаточно подкачки, не тратя место на диске при избытке». «Динамически адаптируется» кажется, что вы ищете. Лучший
Денис Пицалис
Из-за этого размер моего файла подкачки изменяется, например, от 1 КБ до 16 ГБ, когда я использую ОС и заполняю ОЗУ? Вот что означает «динамическое изменение размера» подкачки. Создание файла подкачки, кратного размеру оперативной памяти, не является динамическим. Нет никакого смысла иметь файл подкачки вообще, пока ОЗУ не заполнится, и тогда вы захотите, чтобы файл подкачки точно соответствовал размеру VRAM, который вы используете. Если вы закрываете вкладки или огромное изображение, над которым работаете, файл подкачки должен динамически изменять размер вниз. Файл подкачки всегда должен быть полностью заполнен на 100% за счет динамического изменения размера.
Том Мерсер
0

Пространство подкачки можно добавить в работающую систему с помощью swaponкоманды. Требуется существующий (неиспользуемый) файл подкачки / раздел. Чтобы создать его, используйте ddкоманду для выделения смежного файла, а затем mkswapдобавьте правильную управляющую информацию в файл / раздел.

Чтобы удалить файл подкачки, используйте swapoff; файл может быть удален.

Я подозреваю, что это то, SwapSpaceчто делает демон @ user231695.

Обратите внимание, что swapoff может быть медленной операцией, если используется swapfile; все данные должны быть перенесены в другую область подкачки.

CSM
источник