Как уменьшить потребление оперативной памяти и поддерживать много процессов одной программы?
Нужно запустить много процессов одной программы. Нет возможности ее переписать. Нужно просто сделать много запусков (у каждого процесса свои настройки) в идеале до 1000 на одной машине. Как можно технически уменьшить потребление памяти? Слышал что можно сделать раздел в оперативной памяти, а в нем раздел имитации жесткого диска и запускать оттуда, чтобы можно было поддерживать множество процессов одновременно, вместо запуска напрямую 500 процессов. Программа представляет собой консольное приложение, работающее на запросах.
Уменьшить потребление программы без переписывания - обычно нельзя.
А какая стоит задача? Что за программа такая? Может результат можно получить другим путем?
Но разве ос будет корректно себя вести, если будет ~250 активных окон? И на счет этого способа с имитацией, нагрузка на жесткий диск меньше должна быть?
Я немного ошибся когда вопрос задавал. Судя по всему способ с имитацией был прочитан мною в контексте уменьшения нагрузки именно к жесткому диску, чтобы к нему не было обращений.
> Но разве ос будет корректно себя вести, если будет ~250 активных окон?
Конечно. Почему нет? Только ОС обычно позволяет лишь одно активное окно. А так - обычно в системе присутствует несколько сотен окон одного только верхнего уровня, а уровнем ниже - в несколько раз больше. А когда много программ - их тысячи.
Кроме того, раз вполне можно запускать программу со скрытым окном и все будет работать фоном.
jaffrey: Если есть подозрения что будет упираться в скорость жесткого диска - купите SSD.
И никаких рамдисков. Оставьте память ОС, она ей лучше распорядиться.
не очень понятен момент с жестким диском, если вы экономите память то увеличиваете своп и получаете сильные тормоза. Если памяти завались а жесткий диск вас замедляет то вам нужен RamDisk.
1) Несколько экземпляров одного приложения будут использовать довольно много общей памяти - страницы с кодом приложения и разделяемые библиотеки будут присутствовать в памяти в единственном экземпляре.
2) В Linux существует подсистема "KSM Page Migration" - система дедупликации страниц памяти, на большом количестве однотипных процессов может существенно сократить потребление оперативной памяти.
Посмотрите, сколько программа потребляет в пике и напишите скрипт запуска с разными параметрами так, что бы одновременно работало не более floor(ram/ramperprocess) процессов программы. А если программа требовательна к ресурсам цп, то лучше ограничить это число количеством ядер/потоков