Здравствуйте.
Подскажите, пожалуйста, есть ли ограничение в Linux на объем используемого swap?
В частности, можно ли на системе с 1Гб ОЗУ, задать swap, например, 8 Гб ?
Используется Linux slamd64, но это не принципиально.Заранее спасибо.
>Здравствуйте.
>Подскажите, пожалуйста, есть ли ограничение в Linux на объем используемого swap?
>В частности, можно ли на системе с 1Гб ОЗУ, задать swap, например,
>8 Гб ?
>Используется Linux slamd64, но это не принципиально.
>
>Заранее спасибо.а нужно ли?
# free
total used free shared buffers cached
Mem: 775712 758780 16932 0 146160 243564
-/+ buffers/cache: 369056 406656
Swap: 1048784 640 1048144я даже не помню было-ли когда нибудь Swap used 1Мб,
машина работает в качестве роутера + биллинг + ВЕБ сервер + ФТП
и 90% времени загружены иксы КДЕ, вывод показаний снят с загруженными иксами
>а нужно ли?К сожалению (или к счастью :) ) нужно.
Специфическая задача - входной объем данных(результаты измерений) велик (в данный момент, от 8 до 40 Гб и с перспективой роста) , находятся они удаленном сервере, по ним требуется осуществлять почти что случайный поиск. Один из способов - прочитать все данные в "память". Есть еще способы, но они потребуют других затрат.Похоже, я поспешил с вопросом. Надо было попробовать, но успел начитаться в поиске про 2 Гб ограничение...
Результаты при помощи команды swapon вполне положительные - swap задается, приложению доступен весь суммарный объем виртуальной памяти.
>>а нужно ли?
>
>К сожалению (или к счастью :) ) нужно.
>Специфическая задача - входной объем данных(результаты измерений) велик (в данный момент, от
>8 до 40 Гб и с перспективой роста) , находятся они
>удаленном сервере, по ним требуется осуществлять почти что случайный поиск. Один
>из способов - прочитать все данные в "память". Есть еще способы,
>но они потребуют других затрат.Возможно следует сохранять данные в файл и использовать mmap()? Все равно данные фактически будут находиться на диске, только не в файловой системе, а в свапе. Тем более что на жёстком диске даже как-то надёжнее в случае сбоя программы.
>Возможно следует сохранять данные в файл и использовать mmap()? Все равно
>данные фактически будут находиться на диске, только не в файловой системе,
>а в свапе. Тем более что на жёстком диске даже
>как-то надёжнее в случае сбоя программы.При использовании файла, не очень ясно - где этот файл должен размещаться. Может не хватить свободного места на одном устройстве, может не хватить прав пользователю, пользователь может по незнанию выбрать для файла примонтированый сетевой раздел.. Swap вроде как избавляет от таких проблем - его однажды настроит администратор, и он может состоять, как я понял, из множества кусков.
Надежность у файла теоретически выше, но если произойдет сбой - вероятнее всего, придется загружать данные и пересчитывать заново - слишком неочевиден процесс "подцепляния" старого файла, и неизвестно, на каком шаге остановились вычисления.mmap подходит, когда данные лежат локально (или на дисковом массиве), т.е. для сервера в моем случае.
>[оверквотинг удален]
>>данные фактически будут находиться на диске, только не в файловой системе,
>>а в свапе. Тем более что на жёстком диске даже
>>как-то надёжнее в случае сбоя программы.
>
>При использовании файла, не очень ясно - где этот файл должен размещаться.
>Может не хватить свободного места на одном устройстве, может не хватить
>прав пользователю, пользователь может по незнанию выбрать для файла примонтированый сетевой
>раздел.. Swap вроде как избавляет от таких проблем - его однажды
>настроит администратор, и он может состоять, как я понял, из множества
>кусков.Далеко не у каждого в системе _уже_ есть 8Gb+ свапа. А учитывая то, что свап -- это отдельный раздел, то для создания свапа "традиционным" способом нужно переразбивать диск. Можно конечно же записывать свап в обычный файл, но это фактически то же самое, что и сама программа записывала бы данные в файл, только создаёт лишнюю нагрузку на подсистему виртуальной памяти и ввода-вывода ядра.
Если есть проблемы с сетевыми ФС -- проверяйте, что файл не на сетевой ФС. Или просто напишите в документации, что нельзя класть данные в сеть.
А действия админа нужны в любом случае -- что при создании свапа, что при выдаче прав на каталог на разделе, где есть место, что при создании дискового массива (хотя он нужен только если данных действительно много, диски 400Gb сейчас стоят вполне нормальных денег).
>Надежность у файла теоретически выше, но если произойдет сбой - вероятнее всего,
>придется загружать данные и пересчитывать заново - слишком неочевиден процесс "подцепляния"
>старого файла, и неизвестно, на каком шаге остановились вычисления.ИМХО, любая серьёзная программа, производящая длительные вычисления должна иметь способ восстановления после сбоя. Даже если написать 100% безглючную программу, остаётся масса вариантов сбоя: начиная от kill -9 по незнанию или случайности, заканчивая тем, что юзер Вася зацепил ногой шнур питания.
На большинстве кластеров установлены библиотеки для создания так называемых checkpoint. Более-менее автоматизированное решение проблем со сбоями.
>[оверквотинг удален]
>Специфическая задача - входной объем данных(результаты измерений) велик (в данный момент, от
>8 до 40 Гб и с перспективой роста) , находятся они
>удаленном сервере, по ним требуется осуществлять почти что случайный поиск. Один
>из способов - прочитать все данные в "память". Есть еще способы,
>но они потребуют других затрат.
>
>Похоже, я поспешил с вопросом. Надо было попробовать, но успел начитаться в
>поиске про 2 Гб ограничение...
>Результаты при помощи команды swapon вполне положительные - swap задается, приложению доступен
>весь суммарный объем виртуальной памяти.Может проще с сырым устройством работать или с файловой системой?