windows server를 아주 단순하게 메일서버로만 돌려본적이 있다. 물론 내가 직접 설치한건 아니다. 기사님이 오시잔아..ㅋㅋ

Exchange서버만 돌렸는데 서버라는것이 한번 설정하고 나면 그 뒤로는 전혀 건드리지 않기 때문에 장점이나 단점을 알수가 없었다.  돌리면서 느낀 장점이라고는 xp랑 똑같아서 설명서 보고 대충 건드리다 보면 특별한 어려움 없이 운영은 된다는 거..          그리고 정 안되면 설치한 회사에 전화하면 1~2시간 이내에 기사님이 오셔서 문제를 찾아봐 준다는거..그동안 다른 사람들에게 기술자 온다는 핑계를 대고 난 다른일을 할수 있는 정도 였다. 물론 굉장히 큰 장점이긴 하다. 개발자라고 다 하란법 없잔은가.

이 비싼 장비를 겨우 메일 사용하는데만 쓰는게 항상 아쉬웠다. 메일은 그냥 돈주고 사용하는게 좋을꺼 같다.
필자는 도메인 하나 쓰니까 무료 메일 쓰게 해주더라. 업무용은 돈을 내지만 싸더라. 아니면 리눅스 qmail 을 쓰던가. 한번 설정하면 웬만하면 안 건드리지 않는가.. 아.또 삼천포로 갔다.

게임서버 만드는 분들이 하는 이야기를 들어보면 유일하게 윈도우서버가 유닉스나 리눅스보다 좋은게 IOCP때문이란다.
이벤트로 제어하는 윈도우의 멀티쓰레드구조가 게임처럼 패킷이 실시간으로 난리난리 치는 서버에서는 아주 좋단다.
거기다 나름 유능한 기술자들이 무진장 빨리(?) 기술지원을 해주기 때문에 구현도 나름 빠르단다.
 그렇다고 이대로 윈도를 쓰다보니 돈이 많이 든다. 게임 개발해서 수출할라고 치면 대만이나유럽 아저씨덜이 윈도 비싸단다.
유닉스 나 리눅스처럼 싼마이로 쓸수 없냐고 한다.

 대박난 게임이라면 "그냥 윈도 사서 써!!!"

 하겠지만

 피땀어린 노력을 쏟아부어 만든 나의 게임이 그저 국내유저의 성향과 달라서, 너무 오덕스런 게임이라서.. 유저가 적은데 윈도서버 쓰면 매출대비 수익이 별로 없을꺼 같아..하는 소리 들으면서 사라진다면 억울하지 않은가. 우리나라에서 게임 1000개 중 하나정도가  수익이 난다는데 나머지 999개는 어쩌라고..수출해서 오덕이 많은 나라에서 서비스 해야하지 않겠나? 어딘가 인정해주는 곳이 있을꺼여...

그럼 iocp 밖에 방법이 없느냐? 유닉스나 리눅스 만드는 사람들이 바보는 아니겠지..대안은 있다.
kqueue, epoll  등 이 있단다. 리눅스쪽에선 epoll, FreeBSD에는 kqueue 등등등..성능이 iocp에 비해서 떨어진단 소리도 있는데 그거야 개발자 능력이 아닌가 싶다. 같은 c언어 개발자도 알고리즘 작성하면 빠른 사람도 있고 느린 사람도 있고..버그가 무성한 사람도 있고 거의 없는 사람도 있고..옆의 사이트를 참조하면서 계속 진행하겠다.[여기]

서론이 너무 길었다.
암튼 그래서 이번엔 리눅스에서 사용하는 epoll 에 대해서 좀 알아보자.

시작한다..



1. 우선 리눅스의 커널 버전을 확인.

리눅스 커널 2.6 이상에서는 기본세팅이 되어 있단다.
내가 설치한 Centos 5.2에서는 커널이 2.6이란다..가볍게 통과

2. epoll의 사용이 가능한지 확인하는 소스 작성.

자 그럼 작성해보자. vi를 연다.
%vi test.c

아래의 소스를 넣고 저장한다.
      #include <stdio.h>
      #include <stdlib.h>
      #include <sys/epoll.h>
     
      int main(int argc, char** argv)
      {
               int epoll_fd;
                 
               if ( (epoll_fd = epoll_create(500)) == -1 )
               {
                       printf("epoll 파일디스크립터 생성 오류 \n");
               }
               else
               {
                       printf("epoll 파일디스크립터 생성성공 \n");
                       close(epoll_fd);                     
               }
        }

3. 컴파일 해보자.

%gcc -o epolltest test.c
혹시 에러가 나는가? 어딘가 오타일꺼다. 확인해보라..

4. 실행한다.

%./epolltest

너무 쉬운가?






그럼 오늘은 여기까지..담에는 좀 복잡한 소스를 넣어봐야겠다..



To be continued.    -夜昧-