Я занимаюсь обработкой файлов, которая, кажется, требует огромного файла подкачки: даже 20 ГБ недостаточно. Какой теоретический максимум? Бег swapon
на файле размером 1 ТБ привело к:
swapon: /mnt/big/swap.swap: swapon failed: Invalid argument
Рассматриваемая система - это виртуальная машина Ubuntu, работающая на OpenStack, а диск смонтирован по NFS. Хотя и более широкие ответы тоже подойдут.
Сообщение об ошибке здесь, вероятно, исходит не из-за размера файла подкачки как такового, а из-за его расположения на монтировании NFS. Нет ничего страшного, верю в файл подкачки размером 1 ТБ. Представьте, какой будет своп на многопроцессорной SMP с 4 ТБ ОЗУ!
Чтобы заменить удаленный файл, вы можете сделать следующее:
# losetup /dev/loop0 /mnt/big/swap.swap
# mkswap /dev/loop0
# swapon /dev/loop0
Microsoft предполагает, что «это в четыре раза больше физического ОЗУ компьютера с округлением до следующих 4 мегабайт (МБ)».
Но я должен согласиться с псуси. Должен быть лучший способ обработки этого файла. Например, если вы можете захватывать его по частям. Таким образом я смог разобрать очень большой XML-файл. А для файлов, в которых вы обращаетесь только к одной строке за раз, использует меньше памяти, чем загрузка всего файла в память с последующим его анализом.