Я использую Java и RMI для выполнения 100k симуляций Монте-Карло на кластере из сотен ядер.
Я использую подход, чтобы иметь клиентское приложение, которое вызывает процессы RMI и разделяет симуляциина количество доступных (RMI) процессов в сетке.
После того, как симуляции были запущены, я должен повторно объединить результаты.
Единственное ограничение, которое у меня есть, это то, что все это должно произойтименее чем за 500 мс.
Процесс фактически выполняется НО случайным образом, время от времени одному из вызовов RMI требуется еще 200 мсек.
I 'мы добавили множество журналов и таймингов повсюду и в качестве возможной причины, которую я уже отбросил:
1) Симуляции, занимающие дополнительное время 2) Передача данных (это работает постоянно, только иногда проверяется замедление, итолько для подмножества вызовов RMI) 3) Передача результатов обратно (я могу четко определить, сколько времени от последних вызовов RMI вернется к концу процесса)
ЕдинственноеЯ не могу измерить, если какой-либо вызов RMI требует дополнительного времени для инициализации (и, честно говоря, это единственное, что я могу предположить).Причина этого в том, что, к сожалению, часы не синхронизированы: (
Возможно ли, что удаленный процесс RMI был пассивирован / отсоединен / собран, даже если я сохранил (удаленную) ссылку на него от клиента?
Надеюсь, вопрос достаточно ясен (я почти уверен, что это не так).
Спасибо большое и не стесняйтесь задавать больше вопросов, если он недостаточно ясен.
С уважением, Джованни