UDP에서 recvmmsg를 사용하여 고성능 Receive 처리하기

recvmmsg 라는 함수를 http://www.jp.square-enix.com/conference/2018/onlinetech/pdf/20180421_ishimori.pdf 라는 문서에서 알게 되었다. Linux에는 recvmmsg 라는 함수를 사용할 수 있고, 시스템 호출 1회로 대량의 패킷을 얻어올 수가 있다. 1024개 패킷을 한꺼번에 얻는다면 시스템 호출로 인한 부하가 그만큼 줄게된다. 마찬가지로 sendmmsg 라는 함수도 있다. 적절히 이용하자....
더 읽기

WSAPoll

개요 Windows Vista부터 새로 생긴 네트워크 API UNIX(Linux) OS의 poll과 비슷한 것이다 복수의 파일 디스크립터를 감시하는 API 지정한 소켓의 상태가 변화했는지 확인하는 기능을 제공한다. 기능적으로는 select와 유사하다 API 설명 WSAPoll function int WSAAPI WSAPoll( WSAPOLLFD fdarray[], ULONG nfds, INT timeout...
더 읽기

TCP/UDP 연결을 하고 있는 프로세스의 정보를 보여주는 "ProcessTCPSummary" 유틸리티

다운로드 ProcessTCPSummary는 TCP/UDP 연결을 하고 있는 프로세스를 나열해 주는 유틸리티이다. 64bit 버전을 포함하여 Windows XP에서 Windows 10까지 대응하고, “NirSoft”의 Web 사이트에서 무료로 다운로드 할 수 있다. TCP 또는 UDP 포트에서 대기중인 프로세스를 실시간으로 볼수 있는 간단한 도구. 각 프로세스의 TCP...
더 읽기

golang - epoll 예제 코드

Golang에서 epoll API를 호출해서 서버 프로그램을 만드는 예제 코드이다. 출처 epoll.go package main import ( "syscall" "fmt" ) const ( EPOLLET = 1 << 31 MaxEpollEvents = 32 ) type epoll struct { fd int } func initEpoll() (epoll, error)...
더 읽기