Библиотека сайта rus-linux.net
Снова о пространстве подкачки
Автор: Алексей Дмитриев
Дата: 9 декабря 2007
Недавно я перевел статью "Все о пространстве подкачки в ОС Линукс". Попытавшись использовать полученные знание в личных целях, проще говоря, применить на практике советы этой статьи, я обнаружил несколько затруднений, о которых и хочу рассказать.
Что я хотел?
В статье говорилось, в частности, следующее: "Подсистема подкачки в Линуксе имеет замечательное свойство: если вы смонтируете с одинаковым приоритетом два (или больше) пространства подкачки (желательно на разных устройствах), Линукс станет использовать их для подкачки поочередно, что существенно увеличит производительность своппинга".
Я решил создать в дополнение к моему swap-разделу /dev/hda5 еще и swap-файл /swapfile, задать им равные приоритеты и посмотреть на увеличение производительности своппинга.
Дело в том, что я работаю на стареньком ноутбуке Toshiba образца 1999 года и
оперативки у меня всего 128Мб. Учитывая процессор Celeron Mendosino
(соответствующий PentiumII), понятно, что KDE у меня существенно тормозит.
Для полноты картины добавлю, что мой жесткий диск размером 60 Гб поделен
на три первичных раздела (/dev/hda1,
/dev/hda3/, /dev/hda4) и один расширенный (/dev/hda2), на котором находится
логический своп-раздел /dev/hda5 размером 1,5 Гб. Операционная система
MopsLinux5.1 находится на /dev/hda4, занимает 13,6 Гб, на нем и будет
создаваться своп-файл.
Что я проделал и какие трудности обнаружил
Первым делом нужно создать swap-файл, для чего в статье рекомендуется команда:
# dd if=/dev/zero of=/swapfile bs=1024 count=1048576
и утверждается, что число 1048576 - это размер файла в килобайтах. Так оно и есть, но только при условии, что вы не забыли задать опцию bs=1024. Команда dd считает не байтами, а блоками. И размер этих блоков задает опция bs, по умолчанию bs=512 (байт, что соответствует размеру сектора на жестком диске). А уж количество таких блоков задает опция count. И только в случае bs=1024, число count=1048576, будет означать размер файла в килобайтах. А если забыть ввести bs=1024, то по умолчанию count=1048576 даст только 1 048 576 Х 512 = 536 870 912 байт.
Я решил создать swap-файл равный удвоенному размеру оперативной памяти - 128 000 000 Х 2 = 256 000 000 байт, поэтому смело пишу в командной строке (как root):
# dd if=/dev/zero of=/swapfile bs=1024 count=250000
в ответ получаю:
250000+0 записей считано
250000+0 записей написано
скопировано 256000000 байт (256 MB), 16,6623 секунд, 15,4 MB/s
Значит порядок - файл создан. Теперь надо подготовить его:
# mkswap /swapfile
Затем смонтировать:
# swapon /swapfile
И, наконец, внести в файл /etc/fstab. Тут тоже ничего сложного, правда правила написания этого важного файла различны для разных дистрибутивов. Если уже есть запись о каком-либо разделе подкачки, то нужно скопировать ее опции. Итак, в моем случае (MopsLinux, русский клон Slackware):
# /swapfile swap swap default 0 0
Далее следует проверить, монтируется ли все правильно, не перезагружая компьютер. Отключим все пространства подкачки:
# swapoff -a
Затем подключим их обратно:
# swapon -a
Наконец, проверим правильность монтирования
# swapon -s
Получаем выход:
Filename Type Size Used Priority
/dev/hda5 partition 3911788 19280 -1
/swapfile file 249992 19256 -2
Вот тебе и раз! Приоритет-то разный получился, а весь смысл моих действий был в том, чтобы создать два пространства подкачки с ОДИНАКОВЫМ приоритетом.
Бросаюсь читать маны, узнаю про опцию -p команды swapon, начинаю всячески регулировать приоритет - ничего не выходит. Не стану вас утомлять всеми моими изысканиями, просто расскажу, что в итоге надо сделать.
Нужно в файле /etc/fstab в четвертой графе "опции" поставить вместо default реальное и, главное, одинаковое значение приоритета, причем у всех пространств подкачки (в моем случае раздела /dev/hda5 и файла /swapfile):
/dev/hda5 swap swap pri=1 0 0
/swapfile swap swap pri=1 0 0
Затем, либо повторить трюк с отключением/подключением пространств подкачки, либо перезагрузить компьютер и убедиться:
# swapon -s
Filename Type Size Used Priority
/dev/hda5 partition 3911788 18704 1
/swapfile file 249992 18696 1
Что и требовалось сделать.
И каков результат?
А результат, господа, положительный. Тяжелые приложения стали загружаться значительно быстрее, а при переходе от одного к другому "тормоза" заметно "ослабли". Так Konqueror, со значка на рабочем столе запускался секунд за 20, а теперь запускается за 10, а при одновременно работающем подключении к Интернету через GPRS, двух браузерах, редакторе Kwrite, калькуляторе, еще можно спокойно раскладывать пасьянсы, причем карты к столу не "прилипают", как было раньше.
Теперь нужно будет поэкспериментировать с различными значениями приоритета.
Чего и всем желаю.