LINUX.ORG.RU

Почему возникает чрезмерное использование диска?

 ,


1

2

Ubuntu 14.04, обновляемая. 4Gb RAM и 8Gb подкачки. Причем подкачка используется реально.

Но при приближении к исчерпанию RAM, помимо задействования подкачки, начинается жуткое использование диска. Отзывчивость падает до минимума, вплоть до нескольких минут.

Что делать? Спасибо.


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

memory-management ... will ... loop indefinitely trying to free some memory

https://lwn.net/Articles/635354/

Короче зависон не баг а фича, ядро тупо крутит бесконечный цикл если памяти нет))

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

К сожалению не могу это проверить

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

Там диски трещали не из-за свопа, а из-за постоянного обращения к системным файлам.

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

А тормоза свопирования- это тормоза приложений в первую очередь

А юзеру все равно — юзер, в конце концов, работает с приложениями, а не с системой.

dexpl ★★★★★
()

помимо задействования подкачки, начинается жуткое использование диска.

Так и должно быть. Исполняемый код из файлов (в первую очередь динамические библиотеки) не должны попадать в swap. Эти страницы просто выкидываются из озу, а если понадобилось снова читаются с диска. При этом, так как кеша диска уже фактически нет, происходит много операций по чтению с диска (позиционированию головок).

Либо докупайте ОЗУ, либо как-то экономнее его расходуйте — отказ от DE, от запуска кучи приложений, от кучи вкладок в браузерах.

mky ★★★★★
()

SWAP (подкачка) - это и есть HDD. Поэтому и падает производительность. Надо или меньше программ одновременно запускать (либо более лёгкие в плане использования памяти программы), либо докупать RAM. Для начала я бы посмотрел командой top или htop (2-ая - нестандартная, но удобнее), какие именно процессы отъедают память. Если где-то происходят утечки памяти, то никакой объём RAM не спасёт, нужно или патчить эти программы, или менять на менее кривые.

Что касается свопа, то он нужен для гибернации, для временных файлов, если они монтируются в tmpfs (см. вывод команды df) и для временного перемещения ненужных страниц памяти (когда какая-то программа час висит с открытым документом в свёрнутом виде). Но если активным программам не хватает физической памяти, то своп не поможет. Точнее, поможет, но любой чих будет выполняться минимум по несколько минут.

aureliano15 ★★
()

Не понимаю, зачем столько подкачки, ведь даже если пару мегабайт её задействовано, то уже начинаются дикие тормоза. И ещё, свап это и есть диск, поэтому вопрос некорректен.

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

Вывод: если у вас 12309, переходите на FreeBSD.

Да не существует никакого 12309, всё из-за файловой системы EXT, где все файлы разбросаны по всему диску, головке приходиться метаться по всему диску, как бешеной собаке, осюда тормоза и high i/o.

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

> Не понимаю, зачем столько подкачки, ведь даже если пару мегабайт её задействовано, то уже начинаются дикие тормоза

Это баг 12309, раньше такого не было. Чем-то напоминает открытый драйвер для Radeon r600 и r700: там был баг, при котором в UT2004, если FPS - высокий, то всё нормально. Но как только FPS становится низким, то он начинает уменьшаться в прогресии. Вместо 15 или 10 FPS, мы видели 1 FPS. Но стоит устремить взгляд в стену, как всё нормализовывалось.

Баг исправили. И кстати, касался он не только этой игры - просто страница бага была заведена именно на эту игру. Я играл в Сталкер под Wine с открытым драйвером, и там было точно так же. Хорошо что исправили.

Так же и своппинг. Раньше производительность, конечно, падала, так как HDD медленнее ОЗУ. А потом стал падать в прогрессии. Это и есть баг 12309.

Интересно, что проявляется он не на всех системах: например, когда я перетащил HDD с компа на комп, 12309 пропал - несмотря на то, что на втором компе тоже 2 ГБ ОЗУ.

Программисты ядра отрицали существование бага - на их ксеонах с 64 Гб ОЗУ всё работает. Но под давлением общественности, подтвердили баг и начали решать. Я могу ошибаться в этом предположении, но я считаю, что причина 12309 - планировщик CFS (не ввода-вывода), который был принят в ядре Linux 2.6.23. С ним произошла какая-то «мутная» история, чем-то напоминающее «пропихивание» Systemd непонятно зачем и почему.

ZenitharChampion ★★★★★
()

Сколько сообщений, а реальных технических решений по улучшению ситуации никто не дал.

Включите zswap. Данные в swap будут сжиматься перед сбросом на диск, это повысит отзывчивость системы при своппинге. Добавьте следующую строку к строке загузки ядра:

zswap.enabled=1

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

Советы смотреть в сторону zswap и zram уже давались, а реальное техническое решение все равно только одно - память упгрейдить. Потому что когда памяти настолько не хватает, zswap - это мертвому припарки, разве что только ТС не работает с файлами из одних нулей.

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

Я одно не понимаю. Ну вот запущена программа A, которая откушала 95% RAM. Ну вот запускаю я программу B, ей нужна память, она лезет в swap. Проходит время. Я пользуюсь программой B, но программа A ведь не совершает особо никаких операций... Почему не переложить ее данные в swap и вообще не трогать, а часть RAM не отдать B? Не в этом ли состоит кеширование и планирование?

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

Это вы знаете, что программу А можно сразу же переложить в своп. А у системы свои понятия об эффективности и приоритетах. Она не знает, что программа теперь вам совершенно не нужна и пытается балансировать между всеми процессами. Вы можете как-то на это повлиять, например, параметром swappiness (на пальцах, например тут: http://help.ubuntu.ru/wiki/swap )

Но самое главное, в вашем же вопросе-примере содержится ответ, почему вам не удастся легко решить проблему. Смотрите, вы сами пишете - память 4gb, забита она на 95% и вы хотите скинуть ее в своп по запуску второго приложения. То есть вам нужно сгрузить на винт условно говоря, три с половиной гигабайта. Сколько времени у вас обычно занимает копирование файла такого размера? :) В общем, задачи у вас чрезмерно пузатые для вашей памяти

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

Я бы выразился еще так - эффективно будет работать только та система, где в озу гуляет ветер :) . Желательно иметь двухкратный запас от всех ваших одновременно запущенных приложений. Своп - это неэффективная примочка для нищих. Я например, вообще последний раз делал для себя своп в конце 90-х )

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

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

anonymous
()
12 июля 2017 г.
Ответ на: комментарий от cvv

А может у твоего свапа каким то чудом недостаточный приоритет?

Подробнее?

kuraga
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.