글
■ 다음은 Linux Kernel 2.6.35.10 Configuration의 설정 항목에 대한 설명이다.
(1) RCU Rubsystem
: RCU는 updater들과 cuncurent하게 reader들을 동작하도록 하여 시스템의 scalability를 향상시키는 lock free
메커니즘이다.
- Update들과 동시에 reader들도 동작할 수 있도록 하기 위한 rwlock이 있긴 하지만 rwlock은 update가 없을 때에만
reader들의 수행을 허락한다. 반면 RCU는 single update와 multiple reader들 사이의 concurrency를 지원한다.
즉 update와 reader가 동시에 수행할 수 있도록 한다는 것이다.
- classic rcu
> non-realtime에서 최고의 읽기 성능을 위해 설계 되었음
- tree rcu
> 수백 수천의 cpu를 가진 SMP 시스템을 위해 설계 되었음
○ Kernel .config support
- 현재 커널이 빌드될 때 사용된 설정을 /proc/config.gz에서 읽을 수 있도록 해줌.
○ Kernel log buffer size (16 => 64KB, 17 => 128KB)
- Kernel의 로그 메시지들을 저장해야 하므로 Log Buffer라는 circular buffer가 정의됨
- kernel은 여기서 설정된 크기보다 작은 kernel 로그 메시지만 저장할 수 있다.
- 사용자가 kernel 로그 메시지를 읽을 때, 큐에서 제거된다.
> 원형 큐로 만든 이유는 Buffer의 크기를 초과해서 로그가 기록될 때 가장 오래전 로그 메시지 영역에 중복 기록하기
위해서이다.
(2) Control Group support
: 그룹으로 묶인 프로세스들의 집합을 지원하기 위한것으로 process control subsystem을 사용할 것인지를 설정.
- Cpusets, CFS, memory controls, device isolation
○ Namespace cgroup subsystem
- namespace들의 집합의 이름을 계층적으로 제공하는 subsystem을 사용 할 것인지를 설정
- 예를 들면 virtual servers와 checkpoint/restart jobs
○ Cpuset support
- CPUSET을 생성하고 관리하는 subsystem옵션
- cpu 집합 안에 dynamically partitioning a system, memory node, 할당된 tasks
- 주로 큰 SMP나 NUMA 시스템에 유용함
- 의존 : SMP && CGROUPS
○ Simple CPU accounting cgroup subsystem
- cgoup안에 task들로써 cpu에 모니터링을 위한 간단한 자원 컨트롤러를 제공
○ Resource counters
- cgroup에 자원을 controller가 독립적으로 카운팅이 가능하도록 해줌
○ Memory Resource Controller for Control Groups
- anonymous memory와 page cache를 관리하는 메모리 자원 컨트롤러를 제공
- fork/exit overhead가 약간 증가 할 수 있음
- 선택 : MM_OWNER가 y로 설정되게 됨.
○ Group CPU scheduler
- 같은 task group에서는 cpu scheduler가 task groups을 인식하고 cpu bandwidth allocation을 제어하도록 한다.
- 프로세스들을 하나의 group으로 만들기 위해서 사용한다.
- 의존 : EXPERIMENTAL
○ Enable deprecated sysfs features to old userspace tools
- sysfs의 layout을 구 버전으로 바꿔주는 옵션
-*- Kernel->user space relay support (formerly relayfs)
- 커널 영역의 많은 양의 data를 user 영역으로 전달을 지원하기 위해 사용
- 아래의 설정에 의해 자동으로 설정 됨
> BLK_DEV_IO_TRACE && BLOCK && SYSFS 이거나 아니면
KVM_TRACE && VIRTUALIZATION && KVM && MARKERS && SYSFS
-*- Namespaces support
UTS namespace
IPC namespace
User namespace (EXPERIMENTAL)
PID Namespaces (EXPERIMENTAL)
Network namespace
- 다른 오브젝트인 task작업에서 같은 id를 사용하기 위해 제공
- 다른 namespace에서 사용될때 같은 IPC id로 다른오브젝트로 보내거나 같은 user id또는 pid로 다른 task로 보낼수있음
- 의존 : EMBEDDED
○ Initial RAM filesystem and RAM disk (initramfs/initrd) support
- initial ram filesystem과 ramdisk의 지원을 위해 사용
- boot procedure전에 boot loader에 의해 로딩 되어진 ramfs을 initial ram file system이라고 함.
- BLK_DEV_RAM 가 y로 설정되면 inital ram disk를 지원한다.
- 의존 : BROKEN or !FRV
○ Initramfs source file(s)
- inital ram filesystem의 이미지를 만듬
○ Optimize for size
- gcc 옵션을 -O2대신에 -Os를 사용함
(3) Configure standard kernel features (for small systems)
- base kernel option을 포함하고 setting을 설정하지 않거나 조정하지 않음
- non-standard kernel 을 특정한 환경에서 사용하기 위한 것
- 무엇을 할 것인지 확실히 알 경우 사용
○ Disable heap randomization
- 무작위의 heap의 위치는 harder를 이용해 heap을 만들지만 libc5를 기반으로 만들어진 binary들은 사용 할 수 없다.
- 이 옵션은 bootup에 기본을 heap randomization disable로 바꾼다.
- 오래된 코드를 사용 할 경우 사용해야 할 것 같음
○ OProfile system profiling (EXPERIMENTAL)
- OProfile은 kernel, kenel modules, libraries, application들을 포함한 시스템 전부를 분석할수 있는 profiliing system이다.
- 의존 : PROFILING && HAVE_OPROFILE
※ 출처 : http://blog.naver.com/minareu?Redirect=Log&logNo=100118548227
※ 참고 : http://blog.naver.com/sdonghwi?Redirect=Log&logNo=90003951444
'L inux > Kernel' 카테고리의 다른 글
menuconfig - 리눅스 커널 설정 (4) (0) | 2011.12.15 |
---|---|
menuconfig - 리눅스 커널 설정 (3) (0) | 2011.12.15 |
menuconfig - 리눅스 커널 설정 (1) (0) | 2011.12.15 |
openWRT (1) | 2011.11.02 |
커널 이미지 생성 과정 Log 분석 (0) | 2011.10.06 |
RECENT COMMENT