LINUX.ORG.RU

Доколе мы будем терпеть морально устаревший swap не позволяющий использовать свопа более 2.5 от объёма ОЗУ?

 , ,


0

2

Собственно что мешает переписать swap так, чтобы редко или вообще неиспорльзуемые индексы хранились не в ОЗУ, а так же бы выносились на диск?

★★★★★

swap не позволяющий использовать свопа более 2.5 от объёма ОЗУ?

Что за глупости я могу установить своп любого размера.

anonymous ()
Ответ на: комментарий от slovazap

Это на какой говённой системе такие глупые ограничения?

На Linux.

Что за глупости я могу установить своп любого размера.

Отвести места под своп конечно можно и больше, но как только заполнение свопа дойдёт до 2.5 ОЗУ он будет полностью заполнен индексом свопа и производительность вычислений упадёт до около нулевого размера.

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 2)

Имеет ли смысл такой большой swap? Если из ОЗУ нужно вытеснить в 2.5 раза больше её объёма, то с системой явно что-то не так. Она всё равно зависнет полностью. Конечно, когда-то может и придёт в себя, но тут уже будет проще использовать reset.

ls-h ★★★★ ()
Ответ на: комментарий от ls-h

Если из ОЗУ нужно вытеснить в 2.5 раза больше её объёма, то с системой явно что-то не так.

Не с системой, а с программой.
И не \«что-то не так\», а вполне законный большой обрабатываемый конкретной программой объём данных.

torvn77 ★★★★★ ()
Последнее исправление: torvn77 (всего исправлений: 1)
Ответ на: комментарий от anonymous

какая разница сколько ОЗУ? если что-то может его заполнить полностью, то своп нужен именно для этого

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           62Gi        52Gi       1,3Gi       985Mi       8,5Gi       8,9Gi
Swap:          19Gi       4,2Gi        15Gi

s-o ()
Ответ на: комментарий от anonymous

В этом треде обязательно отпишется тот, кто в теме, поэтому задам и свой вопрос: нужен ли своп, если озу 64гб, какого объема, и чем грозит его полное отсутствие?

Годами сидел вообще без свопа на 16 гигах, потом на 64 гигах. В конце концов добавил своп-файл (не раздел) только потому что он нужен для suspend-to-disk (пока suspend-to-ram не глючил, пользовался только им).

dimgel ★★★ ()
Ответ на: комментарий от torvn77

я думаю это какое-то гонево

то что при таком соотношении и при активном случайном доступе к озу большая часть времени тратится на своп и система становится колом - это понятно.

sergej ★★★★★ ()
Ответ на: комментарий от anonymous

нужен ли своп, если озу 64гб, какого объема, и чем грозит его полное отсутствие?

Если озу хватает то отсутствие свапа ни чем не грозит, 64 гига это большой объем но не фантастический, не стоит забывать про кеш диска и всякие там tmpfs… с другой стороны есть кейсы когда свап мешает но это исключительные кейсы https://github.com/kubernetes/kubernetes/issues/53533

https://habr.com/ru/post/541214/ вот это можно почитать для общего развития, чувак неплохо раскрыл тему поведения системы в условиях нехватки озу.

TDrive ★★★★★ ()
Ответ на: комментарий от torvn77

И не \«что-то не так\», а вполне законный большой обрабатываемый конкретной программой объём данных.

Или у компьютера слишком мало памяти или программа наговнокодерена, потому что большие объемы данных совсем не обязательно все тащить в RAM для обработки, надеясь, что система разрулит.

praseodim ★★★★★ ()

Собственно что мешает переписать swap так, чтобы редко или вообще неиспорльзуемые индексы хранились не в ОЗУ, а так же бы выносились на диск?

Очевидно мешает нужность этой фичи. Или у вас есть более логичное предположение?

goingUp ★★★★★ ()
Ответ на: комментарий от anonymous

В этом треде обязательно отпишется тот, кто в теме, поэтому задам и свой вопрос: нужен ли своп, если озу 64гб, какого объема, и чем грозит его полное отсутствие?

В Fedora дисковый своп вообще не выделяется при авто-настройке.

Моё имхо - дисковый своп желателен в достаточно большом объёме, в твоём случае хотя бы гигабайтов 20. Смысл в том, чтобы, когда память начнёт подходить к концу по какой-то причине, твой комп начал ощутимо тормозить, ты это заметил и принял меры. А не oom killer отстрелял что-нибудь вместо тебя с непонятными последствиями.

Дисковый своп не нужен, если ты на 100% уверен, что ты никогда ни при каких условиях не превысишь потребление памяти, либо если тебя не беспокоит то, что твои приложения могут быть внезапно убиты при нехватке памяти.

Ну раньше ещё своп делали на объём оперативной памяти +немножко, чтобы hibernate работал. Сейчас вроде им не пользуются…

Legioner ★★★★★ ()
Ответ на: комментарий от torvn77

И не \«что-то не так\», а вполне законный большой обрабатываемый конкретной программой объём данных.

Мне кажется, лучше создать файл нужного размера на диске, сделать в программе mmap этого файла и работать с этой областью памяти. Это будет по функционалу примерно то же, что и своп, но ты не будешь им ограничен. Плюс - можно перезапуск попробовать сделать.

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Legioner

Фактически это swap-файл + anonymous mmap.

Аллокация большого куска памяти в один запрос на самом деле тоже anonymous mmap (man malloc в секции NOTES).

Ну и такое «сохранение» применимо это только для сырых данных, без сложных указателей - типа битмапов, массивов простоых типов и т.п.. Или надо костылиться с адресами.

Nastishka ★★★★★ ()
Ответ на: комментарий от torvn77

Отвести места под своп конечно можно и больше, но как только заполнение свопа дойдёт до 2.5 ОЗУ он будет полностью заполнен индексом свопа и производительность вычислений упадёт до около нулевого размера.

https://www.lektorium.tv/lecture/13929 вот тут есть хорошие лекции Бабенко о том как не использовать x2.5 ОЗУ. Полагаться на swap нельзя при таких рассчетах.

xpahos ★★★★★ ()
Ответ на: комментарий от anonymous

В этом треде обязательно отпишется тот, кто в теме, поэтому задам и свой вопрос: нужен ли своп, если озу 64гб, какого объема, и чем грозит его полное отсутствие?

Если нет каких-то специфичных задач вроде гибернации, то swap не нужен. За 9 лет ни разу не возникало проблема из-за него на dev машинах. На ноуте у меня нет Linux, поэтому не могу ничего про такое использование сказать.

xpahos ★★★★★ ()

Доколе мы будем терпеть

Кто мы-то? Это ты терпишь, а мы наслаждаемся свопом.

морально устаревший swap

Своп ни капли не устарел и рекомендуется в к использованию современными системами.

не позволяющий использовать свопа более 2.5 от объёма ОЗУ?

У меня стоит x4 от объема озу, проблем нет.

См Просто оставлю это здесь: Игра в supertux2 с множественными `tail /dev/zero` в фоне без зависаний

anonymous ()

x2.5 ram это рекомендация из времён когда 4ГБ считалось неслыханным жиром.

Отсутствие свопа грозит лишь вероятностью напороться на какой-нибудь мега-редкий баг (ну или рандомный 12309).

Exmor_RS ★★ ()
Ответ на: комментарий от anonymous

x4 озу, все летает
httpss://www.youtube.com/watch?v=c5bAOJkX_uc

Во первых "Linux 5.9 + le9i.patch"
Во вторых запусти не тест видеокарты, а то что реально работает с памятью, например Blender с моделью высокой детализации

anonymous ()
Ответ на: комментарий от anonymous

В линуксе есть баг: если у тебя нет свопа, а оператива заполнилась процентов на 90 и больше, то возникает глобальный зависон. Комп активно шуршит диском, но ничего не происходит…

В общем, пару гигов свопа все равно надо будет сделать. Я себе просто в корне выделил свопфайл, его и монтирую (хотя на рабочем компе 32ГБ оперативы и своп никогда не использовался).

Eddy_Em ☆☆☆☆☆ ()
Ответ на: комментарий от Legioner

Мне кажется, лучше создать файл нужного размера на диске, сделать в программе mmap этого файла и работать с этой областью памяти.

Это если ты автор программы.

anonymous ()
Ответ на: комментарий от anonymous

Так вот, для случаев с холодными данными. Обычно таких порядка мегабайт, но, как подсказал @torvn77, программы могут течь гигабайтами, и если они будут холодные то тоже вытеснятся.

boowai ★★★★ ()
Ответ на: комментарий от boowai

программы могут течь гигабайтами, и если они будут холодные то тоже вытеснятся.

Во первых не течь, а просто использовать много памяти.

Во вторых данные то уйдут в своп, но индекс свопа то в ОЗУ останется…

anonymous ()
Ответ на: комментарий от anonymous

Вообще для меня удобство свопа в том, что туда выгружаются неиспользуемые страницы памяти.

Простой пример - на старте запускается какой-то демон. Он проводит какую-то процедуру инициализации и потом переходит в рабочий режим. Во-первых процедура инициализации это сколько-то страниц исполняемого кода, которые уже висят в памяти. Во-вторых демон может на всякий случай оставить какие-то данные в памяти, например чтобы перечитать их при SIGUSR1. В-третьих malloc может не вернуть часть освобождённых страниц операционной системе. Итог один: в памяти есть страницы, которые принадлежат приложению, но которые этому приложению не понадобятся. Если есть своп, то система в какой-то момент выпихнет эти страницы в своп и использует физическую память для чего-то полезного. Если свопа нет, то до выключения компьютера эта память будет хранить де-факто бесполезные данные.

Это теория. На практике современный линукс почему-то это перестал делать. Ну и на практике это всё имеет значение для малых объёмов оперативной памяти. Если в компьютере больше 512 MB, думаю, это всё смысла просто не имеет.

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Eddy_Em

В линуксе есть баг: если у тебя нет свопа, а оператива заполнилась процентов на 90 и больше, то возникает глобальный зависон.

Исправляется патчем https://github.com/hakavlad/le9-patch

Демо https://www.youtube.com/watch?v=iU3ikgNgp3M - память забиваем, киллер срабатывает без проблем, зависона нет.

hakavlad ★★ ()
Ответ на: комментарий от hakavlad

Выгружать неиспользуемые данные в своп. Сколько у себя не проверяю, в свопе ровно нуль. Думаю, это в федоре так настроено. Раньше в своп потихоньку данные падали, даже если памяти хватало с запасом.

Legioner ★★★★★ ()
Ответ на: комментарий от Eddy_Em

Этой проблеме уже сто лет в обед! Почему, интересно, патч не включили в мейнстрим?

По той же причине, по которой талантливых музыкантов и артистов не зовут петь на Уэмбли и сниматься в Голливуде: недостаточно инклюзивные свои как-то понадёжнее, чем неизвестные ребята.

Korchevatel ★★★★★ ()
Ответ на: комментарий от Eddy_Em

Этот патч не предлагался для включения.

В 2010 подобный патч присылал гугл под рубрикой RFC, но гугл не занимался активно продвижением патча в мейнлайн.

Больше патч не предлагался и похоже, что ядерщики о нем забыли.

hakavlad ★★ ()