IT/Kernel

linux kernel 옵션

싸후이 2009. 7. 22. 12:07

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