Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
themeEmacs
linenumberstrue
using Akka.Actor;
using Akka.Event;
using Akka.Monitoring;

namespace AkkaDotBootApi.Actor
{
    public class InfiniteMessage
    {
        public string Message { get; set; }

        public uint Count { get; set; }
    }

    public class InfiniteReflectionActor : ReceiveActor
    {
        private IActorRef ReplyActor;

        private readonly ILoggingAdapter logger = Context.GetLogger();

        public InfiniteReflectionActor()
        {
            ReceiveAsync<IActorRef>(async actorRef =>
            {
                ReplyActor = actorRef;
            });

            ReceiveAsync<InfiniteMessage>(async infiniteMessage =>
            {
                Context.IncrementCounter("akka.infinite.metric");  // <-- 요녀석이 성능카운터 측정기, 지정된이름으로 메시지당 1증가합니다.(관찰자를 등록함으로 성능이 미비하게 희생될수 있으나,게의치 않겠습니다.)
                var reply = new InfiniteMessage
                {
                    Message = infiniteMessage.Message,
                    Count = ++infiniteMessage.Count
                };
                
                if(reply.Count % 50000 == 0)					 // <-- 작동잘하는지 확인하기위해 5만건당 로그를 찍습니다.( 참고로 콘솔창은 해당 TPS를 못 따라가기때문에 건수마다 찍으면 안됩니다위험합니다.)
                {
                    logger.Info($"Count:{reply.Count}");
                }

                ReplyActor.Tell(reply);							// 카운팅 1증가된 메시지를 되돌려줍니다.(상대편이 받고 다시 받게됩니다. - 무한반사)
            });
        }

    }
}

...

닷넷의 일반적인 스레드풀을 사용하느냐? TPL을 사용하느냐? 또는 forkJoin을 사용하느냐 튜닝이가능합니다.

액터모델의 개수가 작고 단순해서 그런지여기서는, 튜닝값을 이리저리 바꿔도 성능에 큰 차이가 없습니다.오히려 너무많은 무한 액터를 생성하면(5쌍이상)  속도가 저하됩니다없음을 확인하였습니다.

참고링크 : https://getakka.net/articles/actors/dispatchers.html

...

  • 개체별 합리적으로 호출하는지?
  • 해당 개체는 성능적으로 효율적으로 작동하는 개체인지? 
  • 메모리 누수여부?

성능 결과

  • 탁구대 3대정도(공은 두개씩)가 안정적으로 초당 10만건 처리가 가능
  • 기기당 분당 4~6백만건의 메시지 처리초당처리 10만건정도
  • GC는 일어나지만 메모리 누수는 없음

도전과제

Warning

만족할만한 성능이 나온것은 아닌거 같으며 기기당 초당 5천만의 목표치에 도달하지 못하였습니다.

핑퐁테스트가 컨텍스트전환으로 인해 성능적으로 불리한것인지?  GC발생을 조절해야하는지? 

변종실험은 계속됩니다. ( 우선 측정가능한 상태로 만든것에 의미를 두었습니다 .)

...