Необходимо на базе AKKA remote на одной машине эмулировать кластер, распределенных в сети нод приложения и реализовать средство, которое позволит:
Оценка:
Пусть активных нод N штук, при этом выставлен интервал отправки сообщений в M сообщений в секунду.
При этом получаем, что к каждой ноде приходит сообщения от (N - 1) ноды.
Тогда общее количество сообщений обрабатываемых в секунду каждой нодой равно
S = (N - 1) * M [формула 1],
при условии что система успевает обрабатывать все приходящие сообщения вовремя.
Общее кол-во сообщений обрабатываемое всеми нодами: N * (N - 1) * M.
оценить предел производительности системы. Пределом можно считать, параметры системы, при которых добавление новых нод или сокращение интервала отправки сообщений не приводит к росту сообщений, обрабатываемых в секунду.
Оценка:
Общее количество сообщений обрабатываемых одной нодой, как было написано выше, равно:
S = (N - 1) * M.
Было проведено ряд экспериментов с кластеором. Ноды запускались на одной физической машине (Процессор Intel Pentium B960).
См. графики (node_plot_1.png, node_plot_2.png).
При малом S (в пределах погрешностnode_plot_1.pngи и в диапозоне N <= 10) наблюдается сохранение зависимости (1).
При росте количества нод количество обрабатываемых сообщений сначало растет, а затем падает.
Это может быть связанно с тем, что затраты процессора на прерывания (и gc) становятся очень дорогими.
Так же стоит отметить при замерах на большом количестве нод (~ 10) наблюдается отклонение от формулы (1) - увеличение кол-во обработанных сообщений,
это так же можно объяснить прерываниями процессора.
В определенный момент нода получает процессорные время и успевает обработать количество сообщений больше среднего.
При достижении определенной нагрузки на процессор ноды начинают "отваливаеться".
Можно грубо прикинуть сколько тратилось тактовый частоты для обработки каждого сообщения при достижении предела производительности:
K - количество ядер в процессоре,
Mhz - частота каждого ядра процессора.
dMhz - частота на каждое сообщение (кол-во тактов процессора).
L - кол-во входящих сообщений при достижении предела.
N_предел - кол-во нод при достижении предела.
(было подсчитано N_предел * L - как среднее значение по экспериментальным данным = 9600)
dMhz = K * Mhz / (N_предел * L) = 2 * 10^9 / 9600 ~ 200 * 10^3 = 200 Khz
Оценка производительности для системы (Intel Pentium B960):
N * (N - 1) = L_предел = 9600