Skip to content

Alykoff/tcs-tst

Repository files navigation

Задача 1. AKKA messaging

Необходимо на базе 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 

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published