многопоточность — реализация мультиагентной системы миллионов агентов в Stack Overflow

Я пытаюсь реализовать многоагентную систему в C ++. Чтобы максимизировать количество агентов на ПК, я подумал о следующем дизайне высокого уровня:

  • Каждый агент будет представлен как экземпляр класса. (В многоагентной системе агент является независимой / автономной сущностью).

  • Каждый созданный агент будет порожден как поток.

  • Если ОС (Windows или Linux) допускает максимум процессов A, а каждый процесс позволяет порождать максимум потоков B, то общее число агентов будет A x B.

  • Агенты будут общаться друг с другом, используя посредник сообщений издателя / подписчика. Планируйте использовать RabbitMQ.

  • Чтобы результаты были статистически достоверными, необходимо иметь несколько миллионов агентов (например, 5 миллионов).

В идеале я хотел бы, чтобы каждый агент был реализован как один процесс, а не как один поток. Причины, избегая узкого места в общей памяти и взаимозависимости между агентами. Например. Конкретный сбой потока или сбой процесса может привести к сбою всего пула потоков с ним. Агент, представленный как процесс, не будет иметь таких ограничений.

Однако, насколько я понимаю, верхний предел количества процессов в ОС ограничен (возможно, несколько тысяч процессов)? Если мое понимание верно, требование нескольких миллионов агентов не будет работать со стратегией только для процесса.

Вопрос:

Какова была бы наилучшая из возможных стратегий (если вообще существовала) для реализации такой мультиагентной системы с многомиллионными агентами на сервере ПК (скажем, с процессором i7). По сути, какова будет лучшая стратегия реализации, которая максимизирует количество агентов на процессор без ограничений общей памяти и взаимозависимости?

Заранее спасибо.

2

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]