Prompt for development and/or incomplete code/drivers
- 커널에 개발중인 새로운 기능과 새로운 드라이버가 포함되어 있는데
이것을 사용할 것인지를 설정해 주는 옵션이다.
- 불안정한 면이 없지 않지만 사용해야 하는 경우도 있다.
- (EXPERIMENTAL) 이란 꼬리표가 붙은 시험 적인 기능들을 말함
- 시스템 특성에 따라 에러가 발생하기도 함
컴파일 과정이나 새 커널로 부팅하는 과정에서 문제가 생겼는데 원인을 모를때 N
Local version - append to kernel release
- uname 명령으로 커널 버전명을 확일할 때 나타나도록 하는 옵션
Automatically append version information to the version string
- 현재 tree의 top에 속하는 git tags를 찾음으로써
현재 tree가 release tree이면 자동적으로 localversion에 추가
Support for paging of anonymous memory (swap)
- swap devices나 swap files을 사용 할 것인지 설정
- 실제 ram 크기가 virtual memory보다 크면 설정 할 필요 없음
- 의존 : MMU && BLOCK
System V IPC
- IPC는 데이터 통신을 위해서 내부 프로세스간 통신을 위한 도구인데
프로세스 사이에 동기화 및 정보 교환을 위한 라이브러리 함수와 시스템 호출을 모아 둔 것
- 공유 메모리를 이 옵션을 통해서 지원 함
- pipe, fifo, message queue, semaphore, shared memory, af_unix
POSIX Message Queues
- 커널에서 전역적으로 관리되며 모든 프로세스에서 접근이 가능하도록 되어 있으므로
하나의 메시지큐 서버가 커널에 요청해서 메시지큐를 작성하게 되면, 메시지큐의 접근자를
아는 모든 프로세스는 동일한 메시지큐에 접근함으로써, 데이터를 공유할 수 있게 된다.
- 많지 않은 정보를 프로세스간 교환하기 위한 용도로 사용하기에 적당한 IPC
- posix message queue안에 모든 메시지는 우선 순위를 가진다.
- 의존 : NET && EXPERIMENTAL
BSD Process Accounting
BSD Process Accounting version 3 file format
- 프로세스가 끝날 때 커널에 의해 프로세스 정보가 파일에 씀.
- 프로세스 정보는 생성시간, 소유권, 커맨드 이름, 메모리 점유율, 터미널 제어 등이 포함
- 이 옵션을 선택하면 유저 영역의 명령들로 프로세스 정보를 확인할 수 있음.
Export task/process statistics through netlink (EXPERIMENTAL)
- 선택된 tasks/processes의 통계 자료를 generic netlink interface를 통해서 출력.
- BSD accounting과 다른점 : 통계 자료는 tasks/processes의 lifetime동안 유용하다.
- BSD accounting과 같은점 : 통계 자료를 task의 유저 공간으로 보낸다.
- 의존 : NET
Auditing support
- SElinux와 같은 다른 커널 서브 시스템과 함께 사용되는 구조 검사 기능을 활성화한다.
- avs message를 위해서 필요함
Selinux는 기록이나 검사(감사), 정책에 의해 허용되었거나 거부된 접근시도에 대한 광범위한
기능을 가지고 있다. 이 감사 메시지를 종종 AVC message라고 부른며 접그시도가 허용되었
거나 거부되었거나 또는 소스나 타겟의 보안 문맥, 그리고 접근 시도에 포함된 자원에 대하여
세부정보를 제공한다.
- 의존 : NET
Enable system-call auditing support
- 독립적으로 사용되거나 SElinux와 같은 다른 커널 서브 시스템과 함께 사용되는 구조 검사의
system-call 기능을 활성화한다.
- 의존 : AUDIT &&( x86 || PPC || PPC64 || S390 || IA64 || UML )
( SPARC64 || SUPERH )
RCU Subsystem --->
- 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의 크기를 초과해서 로그가 기록될 때
가장 오래전 로그 메시지 영역에 중복 기록하기 위해서이다.
Group CPU scheduler
- 같은 task group에서는 cpu scheduler가 task groups을 인식하고
cpu bandwidth allocation을 제어하도록 한다.
- 프로세스들을 하나의 group으로 만들기 위해서 사용한다.
- 의존 : EXPERIMENTAL
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로 설정되게 됨.
Create deprecated sysfs layout for older 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 filesystem이라고함.
- BLK_DEV_RAM 가 y로 설정되면 inital ram disk를 지원한다.
- 의존 : BROKEN or !FRV
Initramfs source file(s)
- inital ram filesystem의 이미지를 만듬
Optimize for size
- gcc 옵션을 -O2대신에 -Os를 사용함
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로 바꾼다.
- 오래된 코드를 사용 할 경우 사용해야 할 것 같음
Choose SLAB allocator (SLUB (Unqueued Allocator)) --->
Profiling support (EXPERIMENTAL)-*- Activate markers
OProfile system profiling (EXPERIMENTAL)
- OProfile은 kernel, kenel modules, libraries, application들을 포함한
시스템 전부를 분석할수 있는 profiliing system이다.
- 의존 : PROFILING && HAVE_OPROFILE
OProfile AMD IBS support (EXPERIMENTAL)
Kprobes
'IT > Kernel' 카테고리의 다른 글
커널 헤더 참고 (0) | 2011.07.18 |
---|---|
Linux Kernel Configuration Guide (0) | 2010.06.16 |
커널 2.6 옵션 설정 (0) | 2007.02.26 |
네트워크 서브 시스템 (0) | 2007.02.26 |
커널 빌드·부팅 과정 분석 (0) | 2007.02.26 |