Как группа взаимодействующих процессов управляет общим использованием памяти? - PullRequest
0 голосов
/ 12 июля 2020

Рассмотрим следующий сценарий:

  • Набор процессов (не большое количество, а более пары) процессов на одной машине;
  • Машина с ОЗУ является большим по сравнению с объемом, занимаемым ОС, а также с объемом, занимаемым каждым процессом (т.е. немало процессов занимают большую часть ОЗУ)
  • Процессы, ммм, обрабатывают вычислительные задачи последовательно (т.е. они не делают что-то одно: fini sh и d ie)
  • Использование памяти процессами неоднородно, но различия не являются экстремальными (скажем, разница в 10 раз при использовании памяти)
  • Каждый процесс использует приличный объем памяти (скажем, более 1 ГБ; поэтому мы можем пренебречь всеми видами накладных расходов; и сценарий не похож на какой-то веб-сервер, который обрабатывает множество запросов и подключений и не требует много памяти для каждого)
  • Процессы могут появляться и прекращаться - нечасто.
  • Эти процессы реализованы на языке программирования C + +, а операционная система - Linux.
  • Нет виртуальных машин, docker образов, облачных кластеров и т. д. c.

Примечание. Я не описал обстоятельства. в каких процессах увеличивается или уменьшается использование памяти; считать это произвольным. Дело в том, что я хочу избежать перебоев, и для этой цели общая память, используемая процессами, не должна превышать 90 с лишним процентов от общей оперативной памяти. Для этого используются следующие способы:

  1. Требование к существующим процессам уменьшить использование памяти
  2. Предотвращение создания новых процессов

и, конечно, мониторинг как на самом деле вели себя процессы. очевидно, что это не приводит к немедленным изменениям, хотя можно предположить, что процессы соответствуют этим запросам «как можно скорее». В то же время сокращение использования памяти также замедляет работу процессов.

Мой вопрос: что такое solid и, возможно, общий подход к сотрудничеству между этими процессами (с агентством сотрудничества или без него / master / broker et c.) регулировать использование памяти по желанию? Очевидно, есть несколько способов сделать это; но я уверен, что это проблема не только что возникшая, и другие уже занимались этим в прошлом.

Примечания :

  • Это вопрос не совсем конкретный c, но конкретный. Если в описании проблемы отсутствуют дополнительные важные детали, я могу (или не могу) предоставить их.
  • Хотя я упомянул язык программирования, это не ключевой момент.
  • При необходимости можно изменить код процессов и управление внутренней памятью, например, для использования общей памяти, файлов с отображением в память или других механизмов - если они каким-то образом пригодятся.
...