티스토리 뷰

os/Linux

socket option related kernel

Jacob_baek 2015. 3. 9. 09:33

* TCP / UDP socket file 참고사항

1. process 당 open 가능한 file 갯수

   ulimit -n 로 확인 가능하며 대체로 1024가 default로 사용된다.

   ulimit -n 2048 과 같이 설정 가능하며 sysctl을 이용하거나 ulimit.conf를 변경하여 적용할 수 있다.


   (process 당 생성된 소켓파일을 확인하고자 할 경우 /proc/[pid]/fd 디렉토리에서 socket이라는

   이름으로 symbolic link되어 있는 파일들을 확인하면 된다. 또한 socket파일의 경우 netstat -nap

   command를 이용해 생성된 socket file에 대해 확인할 수 있다.)

2. system에서 최대로 open할 수 있는 file 갯수

   /proc/sys/fs/file-max 내에 설정된 count

   echo "65535" > /proc/sys/fs/file-max 같은 command를 이용해 변경할수 있다.


3. buffer queue size

   /proc/sys/net/core/wmem_max

   /proc/sys/net/core/rmem_max 

  

   위 option에 대한 자세한 설명은 man page의 섹션번호 7을 이용하여 참고하면 된다.



* TCP socket

1. TCP_NODELAY


Nagle algorithm 과의 연관관계

해당 옵션은 default로 true 로 되어 있는 nagle algorithm을 off 시키는 것을 의미한다.



Nagle algorithm 이란?

send buffer에 존재하는 데이터를 대기시간을 가지고 송신하여 네트워크의 혼잡을 완화한다.
즉, socket에 data를 복사하여 바로 송신을 하고자 하였지만 아래와 같은 조건에 맞아야지만
송신이 이루어지게 된다.


1. MSS(Maximum Segment Size) 에 도달

2. 상대 서버로 부터 ACK를 수신


즉, 위와 같은 조건에 부합될때까지 outbound data를 다음과 같은 상황까지 축적시킨후 송신한다.


해당 옵션은 SO_RCVBUF 혹은 SO_SNDBUF 옵션을 함께 사용하여 프로그램이 원하는 방향의 동작을 완성시킬수 있다.


2.



간혹 다른 application에서 전송한 UDP packet이 의도치 않게 recv에서 호출되는 경우가 있다.

(우연히 source port를 동일하게 한 경우)

이런 경우를 대비하기 위해 tcp connect stream과 같이 UDP에서 connect 함수를 호출하여 stream을 맺은것과 같은

효과를 줄수 있다.



netstat 를 통한 socket buffer 확인


[Recv-Q / Send-Q]를 netstat 을 통해 확인할 수 있고 해당 field의 의미는 해당 socket buffer에 대기하고 있는 buffer size라고 할 수 있다.


kernel option 중

* /proc/sys/net/ipv4/udp_mem

* /proc/sys/net/ipv4/tcp_wmem

* /proc/sys/net/ipv4/tcp_rmem


- http://man7.org/linux/man-pages/man7/tcp.7.html

- http://man7.org/linux/man-pages/man7/udp.7.html

- http://www.speedguide.net/articles/linux-tweaking-121


참고사이트

- https://cs.uwaterloo.ca/~brecht/servers/openfiles.html

- http://dak1n1.com/blog/12-nginx-performance-tuning : nginx performance tuning

- https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Tuning_and_Optimizing_Red_Hat_Enterprise_Linux_for_Oracle_9i_and_10g_Databases/chap-Oracle_9i_and_10g_Tuning_Guide-Setting_File_Handles.html

- http://www.boundary.com/blog/2012/05/know-a-delay-nagles-algorithm-and-you/

- https://threadbuilder.wordpress.com/2013/02/19/linux-%EC%86%8C%EC%BC%93-%EC%84%B1%EB%8A%A5-%ED%96%A5%EC%83%81/



'os > Linux' 카테고리의 다른 글

changing for size of centos root  (0) 2016.10.28
linux bridge with hairpin  (0) 2016.08.11
socket option related kernel  (0) 2015.03.09
ssh certification  (0) 2014.09.01
desktop icon execution of root privilege in ubuntu  (0) 2013.05.13
standard streams  (0) 2013.04.12
댓글
댓글쓰기 폼