Наши партнеры

UnixForum






Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Файловые системы Linux

Снова о пространстве подкачки

Автор: Алексей Дмитриев
Дата: 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, калькуляторе, еще можно спокойно раскладывать пасьянсы, причем карты к столу не "прилипают", как было раньше.
Теперь нужно будет поэкспериментировать с различными значениями приоритета.

Чего и всем желаю.



Средняя оценка 5 при 1 голосовавших