# swapon -sРезультат будет в виде:
Filename Type Size Used Priority
/dev/hda1 partition 289128 0 -1
Описание вывода команды:
- Filename описывает имеющиеся у вас своп-пространства и где они находятся.
- Type указывает тип пространства: partition (раздел) или file (файл).
- Size сообщает общий размер Swap-пространств.
- Used говорит о том, сколько сейчас свопа задействовано.
- Priority указан приоритет, т.е. какие пространства системе использовать вначале.
Создание swap-файла в Linux
1. Открываем консоль\терминал и получаем полномочия root или используем sudo:
$ su2. Думаем*, какой размер swap-файла нам нужен в мегабайтах. Подумавши, даём команду:
sudo dd if=/dev/zero of=/swapfile bs=1M count=500или
# dd if=/dev/zero of=/swapfile bs=1M count=500В команде dd для задания размеров можно использовать суффиксы K, M, G для килобайт, мегабайт и гигабайт соответственно. В данном примере это 500 Mегабайт файла подкачки.
* Многие задаются фундаментальными вопросами бытия вроде "каков рекомендуемый размер swap в linux"? Можно не думать, а просто создать SWAP-файл по размеру оперативной памяти, периодически посматривая на её, подкачки, использование с помощью команды top. При необходимости добавить\уменьшить своппинг системе. Можно использовать несколько файлов подкачки.
3. Поясняем системе, что созданный пустой файл это всё-таки файл подкачки для Linux:
sudo mkswap /swapfileили
# mkswap /swapfile
4. Подключаем созданный swap-файл:
sudo swapon /swapfileили
# swapon /swapfileПри этом в выводе команды top или команды free должно появиться упоминание, что свопинга в системе поприбавилось. Чтобы отключить файл подкачки, пишем
sudo swapoff /swapfileили
# swapoff /swapfileЧтобы не подключать swap-файл или swap-раздел каждый раз, полезно занести запись в /etc/fstab следующего содержания:
/swapfile none swap sw 0 0На всякий случай отмечу, что каждый раз создавать swap-файл не нужно: просто подключаете и отключаете его с помощью swapon/swapoff. Работа со swap-разделами в Linux происходит аналогичным образом.
Приоритет SWAP-файлов
Создавать и использовать swap-файлов в Linux можно любое количество. При этом можно указать приоритет подключаемого swap-файла или раздела (хотя ядро умеет самостоятельно распределять по разделам/файлам подкачки).
Например, высший приоритет для файла подкачки задаётся так:
swapon -p 1 /opt/swapfileПриоритет является целым числом от 0 до 32767.
Очистка swap-пространства после ресурсоёмких приложений
Командой swapoff -a, запущенной от имени root, можно отключить использование всех разделов и файлов подкачки. После ввода команды содержимое свопа за несколько минут загружается обратно в оперативную память, а сам раздел подкачки отключается.
После загрузки содержимого свопа в оперативную память включем своп обратно командой swapon -a.
2. Системные настройки использования своппинга - Linux
За интенсивность обращения системы к swap-файлам и swap-разделам отвечает параметр swappiness, равный по умолчанию 60. Значение параметра может быть в пределах от 0 - наименьшее использование подкачки, до 100 - подкачка используется часто.
Насчёт оптимального значения параметра swappiness есть много разных мнений. Так, например, один из ведущих разработчиков ядра Эндрю Мортон считает, что для десктопа лучше ставить большое значение, чтобы всякое bloatware скинуть в своп и использовать оперативную память для чего-то нужного.
Чрезмерное значение здесь приведёт к интенсивному использованию swap-файла, что нежелательно. Слишком маленькое значение может привести к тому, что при заполнении памяти будет принудительно запущен OOMkiller (процесс, запускающийся при исчерпании памяти и убивающий наиболее ресурсоёмкие задачи).
Временно (до перезагрузки системы) изменить этот параметр можно с помощью команды:
echo 50 > /proc/sys/vm/swappiness
Чтобы изменить значение по умолчанию, необходимо изменить параметр vm.swappiness:
vm.swappiness=50
в файле /etc/sysctl.conf
Следует, впрочем, отметить, что со vm.swappiness сильно перегибать палку не стоит. При больших значениях система потеряет в отзывчивости (будет вытеснять память, с которой работают приложения, в своп, хотя оперативной памяти ещё много). При малых значениях система работает отзывчивей, но когда оперативная память заканчивается, система начинает активно свопиться и притормаживать.
Также можно попробовать увеличить\уменьшить объём потребляемой системой памяти за счёт изменения размеров дискового кеша. Уровень выделяемой под кеш памяти хранится в/proc/sys/vm/vfs_cache_pressure
Значение по умолчанию: 100. Чтобы использовать меньше памяти под дисковые кеши (что вообще говоря не есть хорошая идея), ставим значение 50. Если, наоборот, хочется больше отзывчивости системы, увеличиваем размер кеша не скупясь:
echo 1000 > /proc/sys/vm/vfs_cache_pressureи далее продолжаем играться с параметрами вплоть до полного удовлетворения. Для того, чтобы настройки стали постоянными, заносим параметр
vm.vfs_cache_pressure = 1000в файл /etc/sysctl.conf и со следующей загрузки дисковые кеши будут смачно чавкать вашей оперативной памятью.
Ссылки
Источники вдохновения здесь, там, среди замечательных комментариев к этому посту и кое-что из Цифровой кладовки.
1ая часть статьи совсем неинтересная, а вот из 2ой почерпнул что-то новое...
ОтветитьУдалитьКстати, форматирование у меня кривовато отображается:
http://omploader.org/vNGNiNQ
В этом абзаце явно что-то не то:
ОтветитьУдалить"За интенсивность обращения системы к swap-файлам и swap-разделам отвечает параметр swappiness, равный по умолчанию 60 (значение параметра может быть в пределах от 0 - наименьшее использование подкачки, до 100 - подкачка используется часто). сообщения, что при большом объёме памяти (от 1Гб) оптимальным значением является 10
Чрезмерное значение здесь приведёт к интенсивному использованию swap-файла, что нежелательно."
А что всё же лучше использовать - целый раздел или файл?
ОтветитьУдалитьНаверное раздел будет пошустрее работать чем файл в файловой системе, хотя у файла проще изменить размер будет в дальнейшем.
Или скорость работы практически не отличается?
Уровень выделяемой под кеш памяти хранится в /proc/sys/vm/vfs_cache_pressure
ОтветитьУдалитьЗначение по умолчанию: 100.
А в чем это значение измеряется?
Проценты, приоритет, размер в мегабайтах зелёные попугайчики? ;)
По-моему линукс по-умолчанию со значением 100 всю свободную память может использовать под дисковый кеш, моментально освообождая её если она потребуется приложениям. А что будет происходить при значении 1000? И при значении 50 - 50% от свободной памяти или 50% от всей?
И каким образом кроме "глаз-алмаз" можно проверить прирост/падение эффективности этого кеширования?
В команде dd для задания размеров можно использовать суффиксы K, M, G. Получается более удобный и понятный вариант:
ОтветитьУдалитьdd if=/dev/zero of=/swapfile bs=1M count=500
А что всё же лучше использовать - целый раздел или файл?
ОтветитьУдалитьНаверное раздел будет пошустрее работать чем файл в файловой системе, хотя у файла проще изменить размер будет в дальнейшем.
А если раздел создать на LVM, то оба преимущества можно будет совместить в одном.
А если раздел создать на LVM, то оба преимущества можно будет совместить в одном.
ОтветитьУдалитьИ получить ещё одну дополнительную прослойку между винчестером и системой, которая скорее всего добавит немножко тормозов, нагрузки на проц и потенциальных багов.
> A что всё же лучше использовать - целый раздел или файл?
ОтветитьУдалитьА если своп-файл создать в начале диска (где линейная скорость вращения цилиндров выше), то можно немного увеличить скорость чтения/записи.
Ещё быстрее было бы использование под своп отдельного диска, расположенного на отдельном шлейфе.
@Анонимный, 17.05.2010 1:59:00
ОтветитьУдалитьа вот из 2ой почерпнул что-то новое
И это главное.
Кстати, форматирование у меня кривовато отображается
Это я накосячил :-) Исправил, спасибо!
@Анонимный, 17.05.2010 8:31:00
В этом абзаце явно что-то не то
Да, что-то я тут намудрил. Пофиксено.
@Murz, 17.05.2010 16:51:00
А что всё же лучше использовать - целый раздел или файл?
Оперативки прикупить :-)
А если серьёзно, то должен быть быстрее своп-раздел вначале винчестера (нет фрагментации + скорость чтения вначале немного больше).
хотя у файла проще изменить размер будет в дальнейшем.
Так на то и swapon придуман: мало свопа - подключаем файл. Много свопа - отключаем файл и стираем его.
@Murz, 17.05.2010 16:55:00
Значение по умолчанию: 100. А в чем это значение измеряется?
Хороший вопрос. Мне нравится вариант с зелёными попугайчиками :-)
И каким образом кроме "глаз-алмаз" можно проверить прирост/падение эффективности этого кеширования?
Тесты, замеры с помощью команды time например (что грубовато, но сойдёт).
@Анонимный, 17.05.2010 17:32:00
В команде dd для задания размеров можно использовать суффиксы K, M, G.
О, точно, а я и забыл. Спасибо, поправил.
@Анонимный, 17.05.2010 17:50:00
Наверное раздел будет пошустрее работать чем файл в файловой системе,
Поддерживаю про раздел. Про LVM не поддерживаю :-)
@Murz, 17.05.2010 18:05:00
И получить ещё одну дополнительную прослойку между винчестером и системой, которая скорее всего добавит немножко тормозов, нагрузки на проц и потенциальных багов.
Во-во, Murz рубит правду-матку. Меньше прослоек - выше скорость. Жаль, что на ноутбуках с вариантами не густо.
@lizardie, 17.05.2010 20:10:00
Ещё быстрее было бы использование под своп отдельного диска, расположенного на отдельном шлейфе.
Верное дело говоришь, но вот только где ж его взять, отдельный винчестер под своп? Или жаба задавит, или се-ля-ви а-ля ноутбук...
Про дисковый кэш приспасибо :)
ОтветитьУдалитьДа, вторая часть статьи действительно полезней и интересней первой. С другой стороны получилась нормальная статья, охватывающая необходимые знания о своппинге.
ОтветитьУдалитьПараметры можно также менять с помощью sysctl, например так:
$ sudo sysctl -w vm.vfs_cache_pressure=1000
Ну и напоследок, как всегда, придирки:
> Что бы изменить значение по умолчанию
> Так же можно попробовать увеличить\уменьшить объём потребляемой системой памяти
@sllxxe пишет...
ОтветитьУдалитьПро дисковый кэш приспасибо :)
Пожалуйста. Я вообще думал это отдельным постом забабахать, но прикинул, что материала маловато.
@ Minoru пишет...
Да, вторая часть статьи действительно полезней и интересней первой.
Дык про кеш там много не наскребёшь, а у меня память вышибает на предмет свопа - постоянно ищу в notecase в своих заметках. Ну и выкатил, наконец, сюды.
С другой стороны получилась нормальная статья, охватывающая необходимые знания о своппинге.
Надо же, кому-то нравится моя графомания :-)
Ну и напоследок, как всегда, придирки:
Не придирки, а ценные замечания :-)
Поименованные ляпы пофиксены, спасибо!
А главную то проблему вы так и не подняли. На современных компах с большими объемами ОЗУ свап нужен только для suspend2disk. Как это реализовать в файле?
ОтветитьУдалитьА если раздел создать на LVM, то оба преимущества можно будет совместить в одном.
ОтветитьУдалитьНу и зачем еще одна прослойка? Если Вы хотите что-то типа stripe RAID-массива, то проще указать одинаковый приоритет (например, swapon -p 1 ...) - ядро умеет самостоятельно распределять по разделам/файлам подкачки.
@Blogger Станислав пишет...
ОтветитьУдалитьА главную то проблему вы так и не подняли. На современных компах с большими объемами ОЗУ
Он есть не у всех и не всегда. Прямо сейчас я пишу с нетбука, на котором памяти, пардон, не вагон и своп ОЧЕНЬ актуален.
свап нужен только для suspend2disk. Как это реализовать в файле?
У меня отрицательное отношение к суспенду вообще (на мой взгляд, это бесполезная рюшечка). Так что я не в теме. Но если у вас получилось\получится это настроить - я принимаю гостевые посты, если что...
@Анонимный, 25.05.2010 21:21:00
Ну и зачем еще одна прослойка?
Согласен, выше уже отписывался.
указать одинаковый приоритет (например, swapon -p 1 ...)
О, тов. Анонимус, вот это вы мне классно напомнили - а я в посте это и упустил. Добавил, спасибо!
свап нужен только для suspend2disk. Как это реализовать в файле?
ОтветитьУдалитьсвап нужен далеко не только для suspend2 disk. Существует огромное кол-во приложений с очень порядочным потреблением памяти, например БД Progress.
Буквально сегодня сервер встал по причине нехватки 4ГБ свапа во время загрузки базы.
Что касается suspend2disk, смотрите tuxonice.net, он может и в файл.
И получить ещё одну дополнительную прослойку между винчестером и системой, которая скорее всего добавит немножко тормозов, нагрузки на проц и потенциальных багов.
ОтветитьУдалитьЭта «дополнительная прослойка» добавляет столько вкусного... А за много лет использования я не замечал ни немножко тормозов, ни нагрузки на проц, ни багов. Три раза тьфу через левое плечо! :)
не плохо бы по поводу swap и SSD что то полезное услышать, типа ext2 или с отключеным журналол ext4 (актуально у кого нетбуки на SSD)
ОтветитьУдалитьswap и ssd (ext2 или ext4-jurnal)?
ОтветитьУдалитьМожно добавить, что с vm.swappiness сильно перегибать палку не стоит. При больших значениях система потеряет в отзывчивости (будет вытеснять память, с которой работают приложения, в своп, хотя оперативной памяти ещё много.)При малых значениях система работает отзывчивей, но когда оперативная память заканчивается, начинается сущий кошмар: система начинает активно свопиться, тормозить, подвисать и вообще ведёт себя неадекватно.
ОтветитьУдалить@А. Стрижак пишет...
ОтветитьУдалитьсвап нужен далеко не только для suspend2 disk. Существует огромное кол-во приложений с очень порядочным потреблением памяти
Собственно, именно с этим я и сталкиваюсь почти каждый день: обработка изображений съедает всё ОЗУ, что есть на машине (сколько не дай - все мало).
@ Анонимный пишет...
Эта «дополнительная прослойка» добавляет столько вкусного...
Народ требует хлеба и зрелищ - в смысле, описаний и примеров этого самого вкусного.
@ Анонимный пишет...
не плохо бы по поводу swap и SSD что то полезное услышать, типа ext2 или с отключеным журналол ext4
Это не SSD, а банальный флеш-мемори. По сообщениям "счастливых" обладателей еееППЦ тормозит оно очень даже страшненько. Настоящие SolidState Disks набраны из DDR RAM по цене от самолёта.
@digiboxroom пишет...
Можно добавить, что с vm.swappiness сильно перегибать палку не стоит.
Эт точно (с) Белое солнце пустыни.
Ещё в вашем блоге понравилось про очистку свопа - я и сам так делаю, но в посте сразу всего не упомнишь. Так что немножко утянул, поставив, естественно, ссылку :-)
Это не SSD, а банальный флеш-мемори. По сообщениям "счастливых" обладателей еееППЦ тормозит оно очень даже страшненько. Настоящие SolidState Disks набраны из DDR RAM по цене от самолёта.
ОтветитьУдалитьГЛУПОСТЬ!!!
1.ееепс комплектуется дешёвым ссд :(
2.DDR RAM технология дешевая и наверняка используют статическую память (дорогая)+какойто блок енергонезависемости - это в случае не флеш.
@Анонимный Анонимный пишет...
ОтветитьУдалить1.ееепс комплектуется дешёвым ссд :(
Я в курсе. Я хочу что-то вроде вот этого, а то, что в ееППЦ стоит, просто не разговор.
2.DDR RAM технология дешевая
Если это i-RAM от Gigabyte, то не стоит оно того. Я говорил о больших SSD, на сотни гигабайт... Но это лишь мечты.
Хотел по поводу SSD высказаться.
ОтветитьУдалитьне плохо бы по поводу swap и SSD что то полезное услышать, типа ext2 или с отключеным журналол ext4 (актуально у кого нетбуки на SSD)
Вот тут неплохо написано, но безоговорочно советам следовать не стоит, а то они там местами с перегибами.
Это не SSD, а банальный флеш-мемори.
Очень даже SSD. Только не RAM based, а NAND based.
По сообщениям "счастливых" обладателей еееППЦ тормозит оно очень даже страшненько.
Как счастливый обладатель ASUS EeePC 1000 с SSD носителем сообщаю, тормозов связанных с дисковой подсистемой за полтора года использования не замечал. В основном тормозит процессор в Gimp, или при воспроизведении flash в firefox. (ubuntu 9.10 + icewm)
Я хочу что-то вроде вот этого, а то, что в ееППЦ стоит, просто не разговор.
Я надеюсь Вы не хотите вставить ЭТО в EeePC. :-) А то сравнение немного некорректно.
На новом ноутбуке изначально стояла Kubuntu, в которой все программы жестоко тормозили и иногда вылетали. Оказалось, что нет раздела подкачки... Ни разу не урезал существующие разделы, поэтому файл подкачки пришёлся "по вкусу".
ОтветитьУдалитьтелефон с linux embedded. Создаю swap файл на nand флешке файловой системы yaffs2. Все проходит замечательно до включения swap. Вылетает ошибка:
ОтветитьУдалить[root@Linux /]#dd if=/dev/zero of=/swapfile bs=1M count=10
10+0 records in
10+0 records out
[root@Linux /]#mkswap /mnt/SD1/swapfile
Setting up swapspace version 1, size = 10481664 bytes
[root@Linux /]#swapon /swapfile
swapon: swapfile has holes
swapon: /swapfile: Invalid argument
Если создавать на флешке microSD то все проходит нормально. Но этот вариант мне не подходит. Проблема заключается в том , что при отмонтировании флешки, отключается swap и оперативки не хватает, вследствии чего слетают и не запускаются все qProcces.
>dd if=/dev/zero of=/swapfile...
ОтветитьУдалить>mkswap /mnt/SD1/swapfile
>swapon /swapfile
----
а если бы так: mkswap /swapfile
А вот так можно освободить память, занятую под дисковые кеши
ОтветитьУдалитьecho 3 > /proc/sys/vm/drop_caches
Этот комментарий был удален автором.
ОтветитьУдалитьСпасибо, Ваша страница помогла!
ОтветитьУдалить@сисадмин комментирует...
ОтветитьУдалитьА вот так можно освободить память, занятую под дисковые кеши
echo 3 > /proc/sys/vm/drop_caches
Можно, но не стоит этого делать - оперативную память надо использовать под кэш, а не солить. Пусть работает. Кстати, надо бы это добавить в пост по /proc.
@Роман Соломаха комментирует...
500 Мб я понял... а что в команде означает 1М?
bs --- block size, размер блока (1 Мегабайт в данном случае), count - счёт (количество) блоков, здесь 500. Получаем 500 Мб.
Всегда Ваш, Оберфельдфебель Эвидэнц :-)