Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Как ограничить использование RAM для процеса и его потомков?  (Прочитано 10414 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн oneri

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Имеем программу которая периодически забирает на себя всю оперативку (firefox, при открытии большого количества табов с картинками большого размера).
Соотвественно система уходит в своп и, как следствие, подвисает работа всех программ.
Через некоторое время firefox оперативку освобождает и можно работать дальше нормально.

Как ограничить использование оперативной памяти для программы?

игра с ulimit не помогла  :-[
1. ulimit -d, ulimit -m не оказывают влияние на выделение оперативки под firefox
2. ulimit -v  вызывает падение firefox
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted

Вопрос: как ограничить использование оперативной RAM памяти для конкретной программы не трогая все остальные?  :idiot2:
Т.е. надо чтобы программа забрала себе максимум оперативки указанной в настройках (например 200МБ) и далее свопилась в файл подкачки, не трогая работу остальных программ и системы.

PS galeon работает также.

PS2. оперу не предлагать, аллергия :) + решение вопроса интересует в принципе.
« Последнее редактирование: 08 Марта 2009, 20:41:53 от oneri »

Оффлайн axe

  • Старожил
  • *
  • Сообщений: 1203
    • Просмотр профиля
Страницы памяти вытесняются в своп по принципу LRU - Less Recently Used, т.е. которые использовались давно. Если текущее приложение - firefox, то его память явно не попадает под это условие.

можно еще покрутить swappinness в сторону уменьшения.. хотя вряд ли это даст заметный эффект.

в общем, я думаю, если что-то и стоит ограничивать, так это себя - по части количества открытых табов :)

Оффлайн oneri

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
swappinness тут абсолютно не причем, т.к. свободная оперативка тупо заканчивается.  :coolsmiley:

ограничивать себя не хочется :)
хочется открыть пару десятков закладок и параллельно заниматься какимнибудь полезным делом, например просмотром фильма  :2funny: а потом когда оттормозится посмотреть странички.

хотя вопрос по такому ограничению, как я и писал, интересует в принципе.  8)

Оффлайн axe

  • Старожил
  • *
  • Сообщений: 1203
    • Просмотр профиля
кстати, в соседней теме проскочила ценная ссылка про настройки самого FF, связанные с потреблением памяти:
http://radamant.org.ua/2009/01/firefox.html

Оффлайн oneri

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
http://radamant.org.ua/2009/01/firefox.html
Покрутить настройки firefox - это первое что я попытался сделать...
Все это сделано, но  browser.cache.memory.capacity  - браузер просто игнорирует настройку и урезанными до 4 одновременными соединениями с серверами.
Сейчас сижу с тупо отключенным ram cache в firefox, систему колбасит меньше, но всетаки она периодически уходит в своп....
Таким образом  крутить настройки firefox не помогает, т.к. ИХМО при массовом открытие табов он пытается все загрузить в память, там распарсить и только после этого положить все в кеш на диск...

Вопрос остается открытым..
PS.  Хочется этот вопрос решить на системном уровне, а не на уровне самого прикладного ПО.  :idiot2:

Оффлайн axe

  • Старожил
  • *
  • Сообщений: 1203
    • Просмотр профиля
Таким образом  крутить настройки firefox не помогает, т.к. ИХМО при массовом открытие табов он пытается все загрузить в память, там распарсить и только после этого положить все в кеш на диск...
oneri, я вижу ты человек довольно сведущий в технических вопросах. Поэтому спрошу вот что: как ты себе представляешь иное поведение браузера, чем "получить HTML со всех страниц, открытых в табах, распарсить и отобразить их, и уж потом уйти в idle/освободить задействованную память/etc"? Не отображать заранее неактивные табы? Так это будет здоровенный лаг при переключении на такой таб...

В общем, я не очень понимаю суть претензий к лисице :). ты говоришь: открой мне дофига всего, она это честно делает, используя столько памяти, сколько ей надо.

А насчет "общего решения": управление виртуальной памятью - это очень тонкая штука... я бы сказал, здесь лучше не мешать ОС, исключая случай, когда ты абсолютно точно знаешь все последствия своих действий. Поэтому искать решения, изменяющие политику вытеснения в своп, я бы остерегся. Это может привести к желаемому результату в данном конкретном случае, но кто скажет, к каким проблемам в других случаях это может привести?...

Оффлайн oneri

  • Автор темы
  • Новичок
  • *
  • Сообщений: 28
    • Просмотр профиля
Axe
Я не наезжаю на лисицу никоим образом, могу даже сказать что остальные браузеры ведут себя аналогичным образом :)

Я просто хочу ограничить потребление ресурсов конкретной программе не вызывая её падения из за наложенных мной ограничений, что бы мне было комфортно работать с остальным софтом  ;)

поэтому я ищу именно такое решение.

PS представь что у тебя большой сервер, который обслуживает кучу пользователей в терминальном режиме. Запуск софта который активно отжирает память  приведет к серьезному падению производительности у ВСЕХ пользователей, а при нахождении решения в моей ситуации только у одного.
Во всех решениях которые я нашел, ограничения тупо не дают выделить память, что вызывает падение процесса который пытается эту память выделить.

PS2 что то мне подсказывает, что виртуалку для такого поднимать это уже черезчур  :D
« Последнее редактирование: 08 Марта 2009, 22:06:36 от oneri »

 

Страница сгенерирована за 0.02 секунд. Запросов: 20.