Допустим, у меня есть два раздела подкачки, /dev/sdb and /dev/sdc
, где /dev/sdb
в 4 раза быстрее с точки зрения ввода / вывода, чем /dev/sdc
. Можно ли настроить его таким образом, чтобы, когда ОС решает, что у нее есть 5 МБ содержимого оперативной памяти для выгрузки, она направляет 4 МБ этого объема в /dev/sdb
и 1 МБ в /dev/sdc
для обеспечения оптимальной скорости обмена ?
1 ответ
Если /dev/sdb
в 4 раза быстрее, чем /dev/sdc
, будет быстрее заполнить /dev/sdb
прежде чем начинать с /dev/sdc
.
Имейте в виду, что это не просто разделение последовательных операций чтения и записи; также есть задержки поиска, время раскрутки диска и синхронизация обоих дисков, так что одна записывает четыре части, а другая - одну. Последовательная пропускная способность теоретически может быть выше, но это не практично.
Тем не менее, смонтированные разделы подкачки имеют приоритеты. Если вы хотите смонтировать два раздела подкачки так, чтобы сначала использовался /dev/sdb
, а затем /dev/sdc
, рассмотрите этот пример:
sudo swapon -p 10 /dev/sdb
sudo swapon -p 5 /dev/sdc
В /etc/fstab
вы должны передать параметр pri
чтобы установить приоритет, например:
/dev/sda none swap defaults,pri=10 0 0
/dev/sdb none swap defaults,pri=5 0 0
В качестве практического примера вы могли бы сделать это, если бы вы использовали zram. Поскольку zram намного быстрее, чем жесткие диски и твердотельные накопители, вы бы хотели, чтобы ваши разделы подкачки zram использовались первыми. Здесь вы можете увидеть четыре устройства zram, предпочитаемых медленному устройству /dev/zd16
:
deltik@node51 [~]$ swapon -s
Filename Type Size Used Priority
/dev/zd16 partition 8388604 0 -1
/dev/zram0 partition 1524800 275252 5
/dev/zram1 partition 1524800 275400 5
/dev/zram2 partition 1524800 276296 5
/dev/zram3 partition 1524800 275392 5
(В Ubuntu zram swap удобно предоставляется zram-config
.)
Несмотря на то, что /dev/zram*
на несколько порядков быстрее, чем /dev/zd16
последовательно, я бы не хотел балансировать рабочую нагрузку, потому что /dev/zd16
ищет намного медленнее, чем /dev/zram*
.