강좌 & 팁
커널 3.3 에 릴리즈된 주요 내용중 TCP buffer limits 에 대한 내용이 있습니다.
원문은 아래와 같습니다.
1.6. Per-cgroup TCP buffer limits
Recommended LWN article: Per-cgroup TCP buffer limits
This patch introduces memory pressure controls for the TCP protocol which allows to put limits to the size of the buffers used by the TCP code.
Code: (commit 1, 2, 3, 4, 5, 6, 7, 8)
Control group 은 여러가지 용도로 사용될수 있습니다.
Control group 은 프로세스 그룹으로 묶일수 있는 하위 시스템들에 대한 제어를 할수 있도록 제공합니다.
예를 들어 프로세스 자원의 할당을 조절할수 있도록 인터페이스를 제공할수 있습니다.
이것을 지원하기 위해서 mount 를 사용하면 해당 서브시스템에 연결할수 있습니다.
cpu 를 예로 들면 첫번째 cpu 와 두번째 cpu 의 자원 할당을 제어할수도 있습니다.
이렇게 사용되는 cgroup 에 대하여 TCP 연결에서 사용되는 메모리를 세부적으로 제어할수 있도록
기능이 추가된 것입니다.
전체 tcp 연결에 사용가능한 메모리양을 조절하는 파라미터는 있었지만, 이번에 cgroup 을 이용한
세부제어가 가능하도록 기능이 추가된 것으로 보이네요.
이러한 기능들을 알고 시스템을 튜닝할수 있다면 성능좋은 머신을 만들수 있을 것입니다.
아래의 내용은 커널 소스를 다운받으시면 있는 문서의 일부를 발췌한 것입니다.
위치는 Documentation/cgroups/cgroups.txt 입니다.
110 CPU : Top cpuset
111 / \
112 CPUSet1 CPUSet2
113 | |
114 (Profs) (Students)
115
116 In addition (system tasks) are attached to topcpuset (so
117 that they can run anywhere) with a limit of 20%
118
119 Memory : Professors (50%), students (30%), system (20%)
120
121 Disk : Prof (50%), students (30%), system (20%)
122
123 Network : WWW browsing (20%), Network File System (60%), others (20%)
124 / \
125 Prof (15%) students (5%)