균등한 기회??

잡담 2009/09/21 23:30

Send시에... 어떻게 하면 모든 Session에게 균등하게 Send기회를 줄 수 있을까.

wouldblock시에는 일단 다시 send를 해야 하고... packet의 sequence는 지켜져야 한다.

일단 생각해 본 건, session 별로 send queue를 가지고 있고... 보내야 할 packet이 생기면... buffer pool 에서 buffer를 가져와서 send queue에 푸쉬. 그리고 Sender에있는 Session Queue에 Session을 푸쉬.

Sender에서는 queue에서 팝 시키고, 여기서 두가지로 갈릴 것 같긴 한데... 가장 공평한 방법은 일단 이거겠지.

패킷 하나를 처리(send). wouldblock이거나 sendqueue에 보내야 할 패킷이 남아있을 경우, session queue에 다시 push.
이러면 session queue에 event가 있는 애들은 일단 패킷 하나씩 공평하게 보내지겠지. 근데 사실상... send가 늦어져서 누적이 되어버린다면... 정말 감당하기 힘들어 질 것 같은데...Sender에서도 push, Packet dispatcher에서도 push...이렇게 하다보면 겁내 빠박해질 것 같음.

쓰는동안 갑자기 드는 생각이... wouldblock패킷은 표시를 해 줘서 wouldblock일 때만 session queue에 push시키고, 아닐 경우엔.. 어쨌든 다음 패킷에 대해서는 worker에서 push했을 테니... 안넣어도 될 것 같다.

방법론에대해서는 조금 더 생각 해 봐야 할 것 같음. 춈 딱 아 이거다! 라는 방법이 있을 것 같은데....킁킁...

이올린에 북마크하기(0) 이올린에 추천하기(0)
2009/09/21 23:30 2009/09/21 23:30

트랙백 주소 :: http://www.whitenblack.net/trackback/906

댓글을 달아 주세요