Рассмотрим следующий сценарий:
- Набор процессов (не большое количество, а более пары) процессов на одной машине;
- Машина с ОЗУ является большим по сравнению с объемом, занимаемым ОС, а также с объемом, занимаемым каждым процессом (т.е. немало процессов занимают большую часть ОЗУ)
- Процессы, ммм, обрабатывают вычислительные задачи последовательно (т.е. они не делают что-то одно: fini sh и d ie)
- Использование памяти процессами неоднородно, но различия не являются экстремальными (скажем, разница в 10 раз при использовании памяти)
- Каждый процесс использует приличный объем памяти (скажем, более 1 ГБ; поэтому мы можем пренебречь всеми видами накладных расходов; и сценарий не похож на какой-то веб-сервер, который обрабатывает множество запросов и подключений и не требует много памяти для каждого)
- Процессы могут появляться и прекращаться - нечасто.
- Эти процессы реализованы на языке программирования C + +, а операционная система - Linux.
- Нет виртуальных машин, docker образов, облачных кластеров и т. д. c.
Примечание. Я не описал обстоятельства. в каких процессах увеличивается или уменьшается использование памяти; считать это произвольным. Дело в том, что я хочу избежать перебоев, и для этой цели общая память, используемая процессами, не должна превышать 90 с лишним процентов от общей оперативной памяти. Для этого используются следующие способы:
- Требование к существующим процессам уменьшить использование памяти
- Предотвращение создания новых процессов
и, конечно, мониторинг как на самом деле вели себя процессы. очевидно, что это не приводит к немедленным изменениям, хотя можно предположить, что процессы соответствуют этим запросам «как можно скорее». В то же время сокращение использования памяти также замедляет работу процессов.
Мой вопрос: что такое solid и, возможно, общий подход к сотрудничеству между этими процессами (с агентством сотрудничества или без него / master / broker et c.) регулировать использование памяти по желанию? Очевидно, есть несколько способов сделать это; но я уверен, что это проблема не только что возникшая, и другие уже занимались этим в прошлом.
Примечания :
- Это вопрос не совсем конкретный c, но конкретный. Если в описании проблемы отсутствуют дополнительные важные детали, я могу (или не могу) предоставить их.
- Хотя я упомянул язык программирования, это не ключевой момент.
- При необходимости можно изменить код процессов и управление внутренней памятью, например, для использования общей памяти, файлов с отображением в память или других механизмов - если они каким-то образом пригодятся.