| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > cached memory |
| Автор: proc_maker 22.3.2007, 08:51 |
| Привет Друзья! Опишу ситуацию. Linux, runlevel 3. Запущено приложение, которое должно работать постоянно (по нескольку суток) без рестарта и перезагрузки системы. Приложение активно работает с динамической памятью, примерно операции new-delete пропускают по 100 килобайт в сек. После 10 - 12 часов работы этой программы я наблюдаю что вся физическая память из free перекачивается в cached (если смотреть top-ом). Проверял с помощью mtrace - утечки памяти нет, т.е. программа получила через new, чтото там сделала и освободила через delete. После того как вся физическая память уходит в cached туда начинает ползти и swap. Результат такой жизни программы - ужасные тормоза системы после 10-12 часов работы этой программы. Посоветуйте плз что можно предпринять чтобы этого избежать. Вариант везде использовать статические буфера неприемлим поскольку программа активно использует библиотеки для обработки видео это раз и во-вторых переделать всю программу реального времени в несколько сотен тысяч строк без граблей нереально. Спасибо!! С уважением, Дмитрий |
| Автор: proc_maker 22.3.2007, 09:26 |
| в то время когда начинает идти в cached и swap, наблюдаю такую ситуацию: total physical memory :256 M used physical memory : около 100M free physical memory : 3M cached: около 150M Swap: 400M swap used: 10M и далее растет swap used и cached, а swap худеет, в то время как параметры физической памяти практически не изменны |