memory & swap (как оптимизировать процесс)

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Аватара пользователя
NTRNO
Сообщения: 17
ОС: suse 10.2

memory & swap

Сообщение NTRNO »

Доброе время суток.
Пока не знаю по какому принципу строится работа Linux (Suse) с памятью и swap'ом, для себя заметил следующее:
оперативки у меня маловато, и в процессе работы (в момент работы нескольких "весомых" программ, система лезит в swap. Если система взяла из swap мег 20-40 то можно еще работать, а если больше 100 Мб то работать уже не комфортно... после выхода из части программ физическая память освобождается, а swap также забит и пк притормаживает... хотя всё что в swap может легко уместится в физической памяти....
посему вопросик: есть ли какие нибудь инструменты для оптимизации размещения данных в памяти... что-нибудь типа "clean swap" :)

умные книжки тоже приветствуются ;)
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: memory & swap

Сообщение serzh-z »

Есть патчи Кона Коливаса (если не путаю, что не суть важно в данном случае) для ядра, которые реализуют технологию 'Swap Prefetch'. Если показать на пальцах, то алгоритм работает примерно следующим образом (за деталями и подробностями алгоритма рекомендую обратиться в LKML):

- в результате работы очень тяжеловесного приложения (пусть будет APP), часть активных страниц памяти (других приложений) вытесняется на диск и заменяется активными страницами APP
- при вытеснении этих страниц обновляется список, который указывает, что эти вытесненные страницы недавно использовались
- приложение APP завершилось, оперативную память освободило

(Что имеем? Забитый своп и свободную оперативную память. Из страничного файла будут переноситься лишь те страницы к которым другие приложения будут обращаться и именно в том момент, когда приложение затребует свой кусок данных (ну назовем это - 'ad-hoc'-чтение из свопа). Разумеется, что следует ожидать задержек при операциях IO.)

- включается 'Swap Prefetch' и начинает, на основании своего списка, неспеша выбирать с диска страницы и помещать их в освободившуюся память, несмотря на то, что они еще не были затребованы приложениями

На мой взгляд подобный подход имеет некоторые минусы: скажем, в своп первыми, обычно, вытесняются редкоиспользуемые страницы. Если 'Swap Prefetch' снова загрузит их в свободную память, а буквально через некоторое время другое активное и приоритетное приложение потребует больше памяти - снова потребуется выгрузка в своп. И так далее. В итоге большая нагрузка на диск. Имхо, куда полезнее освободившуюся память использовать под кеш.

Данный патч, включен в ядро, как минимум, -mm. Если уж есть такое желание, то можете его поставить или применить один лишь патч к своему ядру.
Спасибо сказали:
Аватара пользователя
NTRNO
Сообщения: 17
ОС: suse 10.2

Re: memory & swap

Сообщение NTRNO »

serzh-z писал(а):
10.01.2007 12:51
......


Спасибо за информацию. Что-то подобное себе и представлял :) применять пока не буду, поскольку патчи и ядра пока тема не изученая.. Но всё еще впереди.

и всё равно складывается впечатление, что работает напрямую из swap :) а не перетаскивает страицы обратно в оперативку... но это чисто субъективно.... Вот уже на протяжении недели в swap'e 60 метров валяется.... и не уменьшается... а работать также быстро как и с пустым swap не стал...
Спасибо сказали:
alfamayonez
Сообщения: 28
ОС: openSUSE 10.2

Re: memory & swap

Сообщение alfamayonez »

Попробуй
swapoff -a
а потом
swapon -a
:)
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: memory & swap

Сообщение serzh-z »

NTRNO писал(а):
11.01.2007 02:04
и всё равно складывается впечатление, что работает напрямую из swap :) а не перетаскивает страицы обратно в оперативку...
Это было счастьем для всех, разом, если бы процессоры Intel (?) умели сами обращаться к сектору на диске, вместо адреса памяти. :laugh: Увы, увы - ОС их сначала "перетаскивает" обратно.
Спасибо сказали: