본문 바로가기

sysctl3

728x90
Sysctl Configuration for Kernel parameters sysctl은 Redhat 6.2 부터 포함된 kernel parameter 값들을 조절하기 위한 utility 이 다. sysctl 이 조절할수 있는 값들은 /proc/sys/ 아래에 있는 list 들이다. sysctl 에 대해서 언급을 하기전에 아주 강력하게 주의를 요할 것은 sysctl 을 이용하 여 값을 변경할 경우에는 시스템이 crash 되어질 위험요소가 많이 있다는 것을 명심해 야 한다. 즉 자기의 시스템에 무리한 값을 넣었을 경우 그 즉시 시스템이 멈출수도 있 기 때문에 충분한 테스트와 시스템이 crash 가 될 수 있음을 명심하고 책임을 질수 있 을 경우에만 만지기를 권장한다. [ sysctl 사용법 ] 보통 커널의 파라미터를 조정할때 proc 에서 echo 를 이용하여 redirect 로.. 2009. 10. 9.
728x90
sysctl은 Redhat 6.2 부터 포함된 kernel parameter 값들을 조절하기 위한 utility 이
다. sysctl 이 조절할수 있는 값들은 /proc/sys/ 아래에 있는 list 들이다.

sysctl 에 대해서 언급을 하기전에 아주 강력하게 주의를 요할 것은 sysctl 을 이용하
여 값을 변경할 경우에는 시스템이 crash 되어질 위험요소가 많이 있다는 것을 명심해
야 한다. 즉 자기의 시스템에 무리한 값을 넣었을 경우 그 즉시 시스템이 멈출수도 있
기 때문에 충분한 테스트와 시스템이 crash 가 될 수 있음을 명심하고 책임을 질수 있
을 경우에만 만지기를 권장한다.

[ sysctl 사용법 ]

보통 커널의 파라미터를 조정할때 proc 에서 echo 를 이용하여 redirect 로 직접 쓰는
경우가 많았다.  이렇게 조정을 할 경우에는 또 rc.local 같은 파일에 따로 기입을 해
줘야 하는 불편함이 있었다.

RedHat 6.2 이후 배포판에는 procps package 에 sysctl 이라는 utility가 추가되어 이
것들을 관리를 할수 있게 되었다. 일단 조정할수 있는 모든 parameter 들은

$ sysctl -a

명령으로 확인을 할 수가 있다. 그리고 특정값을 수정하기 위해서는 /etc/sysctl.conf
에 해당 키(이건 sysctl -a 명령에서 리스트를 확인 할수 있다)와 키값을 지정한 다음

$ sysctl -p

명령으로 바로 적용을 시킬수 있다. 물론 sysctl.conf 에 기입이 되면 부팅시 마다 자
동으로 적용이 된다. 만약 잠시만 바꾸어 보고 싶다면

$ sysctl -w net.ipv4.icmp_echo_ignore_all=0

과 같이 직접 값을 넣어 줄수도 있다. 이럴 경우에는 부팅이 되어 있는 순간만 적용이
된다. -p 옵션은 sysctl.conf 가 아닌 다른 파일을 설정 파일로 지정을 할 수 있게 한
다. 옵션값이 없으면 default 로 /etc/sysctl.conf 를 읽어 들이며 따로 path 를 지정
하면 해당 path 에 있는 파일을 읽어 들인다.

다음의 설정들은 Kernel 2.4 에서 사용할 만한  kernel parameter 값들을 정의해 놓은
sysctl.conf 의 내용이다.

-----------------------> CUT HERE <----------------------------

##############################################################################
#                  SysCTL Configuration For Kernel 2.4
#                                                            작성일 2000.4.18
#                                              김정균 < http://oops.org >
#                    참고 문서 : http://oops.org/?t=lecture&sb=kernel&n=3
#

##############################################################################
## File System Section
##############################################################################
# 시스템전체에서 열수 있는 파일수(file-max) : file-max=램용량/4*256
# 4M당 256 개
# 128M ->   8192 개
# 256M ->  13684 개
# 512M ->  32768 개
# 1G   ->  65536 개
# 2G   -> 131072 개
# Improve the number of open files 즉, 하나의 프로세서에서 열수 있는 파일 갯수
# 등 조정은 커널소스에서 해야함(fs.h INR_OPEN / limits.h NR_OPEN)
#
# 정확하지는 않지만 커널 2.4.20 이 후부터는 커널이 직접 관리하도록 설정을 하지
# 않는 것이 좋다. 메가바이트당 64M 로 설정하는 것도 변경이 된 듯 싶다.
#
#fs.file-max = 8192

# inode-max 는 file-max 의 3~4 배를 지정하나 kernel 2.4 에서는 inode-max 를 사
# 용하지 않는듯 함

##############################################################################
## Kernel Section
##############################################################################
# 값이 0 일 경우, ctrl-alt-del 은 프로그램들을 일시 정지 시키고,    init(1) 로
# restart 신호을 보내게 된다. 하지만 이 값이 1 보다 클경우, OS 는 dirty buffer
# 의 동기화 없이 바로 reboot을 하게 된다. (이것은 저장한 것들을 모두 날릴수 있
# 다)
#
# 주의:  dosemu 같은 프로그램이 'raw' mode 에 keyboard 를 가질때, ctrl-alt-del
# 은 커널 tty layer에 도달하기 전에 그리고 이것이 무엇을 할지 결정하기 위해 프
# 로그램에 도달하기 전에 프로그램에 의해서 중단이 될 것이다.
#
# reboot 시 정보들을 안전하게 저장하기 위해 0으로 설정
#
kernel.ctrl-alt-del = 0

# the magic-sysrq key 사용여부. 커널에서 magic key 지원 여부를 넣어 줘야 함
#
kernel.sysrq = 1

# panic 의 값은 panic 상태에서 rebooting 하기전 kernel 이 얼마나 기다리는 값을
# 초단위로 나타낸다. watchdog 을 사용할때 60 으로 설정하는 것을 추천함. 0은 이
# 기능을 비활성화 시킴.
#
#kernel.panic                               = 0

# shmmax 는 공유 메로리를 사용할 때 공유 메모리 segment 의 최대 크기를 질의 하
# 는데 사용이 되어질 수 있으며, 또는 공유 메모리 segment 의 최대 크기를 설정할
# 수도 있다. shared memory segment 를 1 GB 이상으로 올리는 것을  커널에서 지원
# 을 한다. 이 값은 SHMMAX 의 기본값이 된다.
#
#kernel.shmmax                              = value

# core dump 시 파일 이름에 PID 를 덧붙일 것인지를 조정한다.  multi-thread 어플
# 리케이션들을 디버깅 하는데 유용하게 사용한다.
#
kernel.core_uses_pid                       = 1

##############################################################################
## TCP Section
##############################################################################
# interface들 사이에 패킷들을 교환시키는 것을 허락. 사내에서 방화벽을 구성하는
# 경우에나 사용
#
net.ipv4.ip_forward                        = 0

# SRR 옵션으로 패킷들을 수용한다. IP source routing 을 제어한다. 보통 호스트로
# 향하게 하는 것을 권장한다. TRUE (router) FALSE (host)
#
net.ipv4.conf.all.accept_source_route      = 0

# ICMP redirect message 들을 불허
#
net.ipv4.conf.all.accept_redirects         = 0
net.ipv4.conf.lo.accept_redirects          = 0
net.ipv4.conf.default.accept_redirects     = 0
net.ipv4.conf.eth0.accept_redirects        = 0

# RFC182에 따른 IP spoof 방지를위한 설정(커널 2.2이상 버전)
#
net.ipv4.conf.eth0.rp_filter               = 1
net.ipv4.conf.lo.rp_filter                 = 1
net.ipv4.conf.default.rp_filter            = 1
net.ipv4.conf.all.rp_filter                = 1
net.ipv4.conf.default.rp_filter            = 1

# Log Spoofed Packets, source Routed Packets, Redirect packetes
# ip주소를 스푸핑한다고 예상되는 경우 로그에 기록하기
#
net.ipv4.conf.all.log_martians             = 0

# TCP 와 UDP 에 의해 사용될 local 포트 범위를 정의한다.  첫번째 숫자는 사용 할
# 영역의 가장 앞부분 포트 번호를 지정하고 두번째는 마지막 포트번호를 지정한다.
# 기본값은 시스템의 사용가능한 메모리의 양에 의해 결정이 된다: 메모리가 128 Mb
# 보다 많을 경우 32768-61000 메모리가 128Mb 보다 적을 경우 1024-4999 또는 이보
# 다 적게 지정한다.  이 값은 TCP 확장을 지원하지 않는 시스템으로 동시에 발생이
# 될수 있는 활성화된 접속들의 수를 결정한다. tcp_tw_recycle 을 가능하게 함으로
# 서 (기본적 으로) 1024-4999 영역은 timestamps를 지원하는 시스템들에 초당 2000
# 개의 접 속 정도를 가능하게 하 는데 충분하다.
#
# 커널 2.4.20 부터는 커널에서 메모리양을 자동으로 계산하여 지정하므로, 따로 설
# 정을 할 필요는 없음
#
#net.ipv4.ip_local_port_range               = 32768 61000

# 세팅되면 프로세스가 로컬 IP 가 아닌 주소에 bind() 할 수 있다. 매우 유용한 기
# 능이지만 어떤 어플리케이션에서는 나쁠 수 있다. 기본값: 0
#
net.ipv4.ip_nonlocal_bind                  = 0

# 0 이 아닌 값을 세팅하면 동적 주소를 (dynamic addresses) 지원한다.  1 보다 큰
# 값을 세팅하면 동적주소가 다시 쓰여질 때마다 로그 메시지가 출력될 것이다.
#
# 이 값은 부팅시에 rc.sysinit 에서 /etc/sysconfig/network-scripts/ifcfg-eth*
# 를 파싱하여 자동으로 설정함
#
net.ipv4.ip_dynaddr                        = 0

# ICMP ECHO 요청을 처리. Ping 과 관련이 있음. 이 값을 이용하여 PING 을 막는 것
# 보다 iptables 를 이용해서 icmp_request 를 막는 것이 효과적
#
net.ipv4.icmp_echo_ignore_all = 0

# 브로드캐스브, 멀티캐스트 주소에 ICMP ECHO 요청을 막음. smurf 공격 방지용
#
net.ipv4.icmp_echo_ignore_broadcasts = 1

# 어떤 router 들은 broadcast frame 들로 거짓 응답을 보냄으로서 RFC 1122를 위반
# 한다. 이러한 위한들은 보통 커널 경고를 통해 로깅이 된다. 이것을 TRUE 로 설정
# 을 할경우 커널은 이러한 경고를 하지않을 것이며, 로그 파일이 지저분해 지는 것
# 을 피할수 있다. 기본값은 FALSE 이다

net.ipv4.icmp_ignore_bogus_error_responses = 1

# 1/100 초 동안에 받아들이는 igmp memberships의 수
#
net.ipv4.igmp_max_memberships              = 20

# 활성화된 TCP 접속이 재전송을 시도하게 하기 위한 최초 SYN시간의 값을 정한다.
# 255 보다 높아서는 안된다. 기본값은 5이며, 180 초에 대응이 된다.
#
net.ipv4.tcp_syn_retries                   = 2

# passive TCP 접속시도가 재접속을 하기 위한 SYNACKs의 값을 정한다. 255 보다 높
# 게 지정할 수 없다. 기본값은 5이며, 180초에 대응이 된다.
#
net.ipv4.tcp_synack_retries                = 2

# keepalive 가 활성되 되어 있을 경우, 얼마나 자주 TCP 가 keepalive 메세지를 보
# 내게 할 것인지를 설정. 기본값은 2시간 이다.
#
net.ipv4.tcp_keepalive_time                = 600

# 연결이 끊어졌다고 판단할 때까지, 얼마나 keepalive probe 를 보낼지 결정. 기본
# 값 9회
#
net.ipv4.tcp_keepalive_probes              = 5

# keepalive_probes 를 보낼 간격을 정함. probe 를 보낸 후, probes * intvl 의 시
# 간이 지나도록 응답이 없으면 연결이 해제된 것으로 간주하게 됨. 기본 값의 사용
# 시 11분 15초 동안 재시도를 하고 연결을 취소함. 값은 초단위
#
net.ipv4.tcp_keepalive_intvl               = 10

# 서버 쪽에서 닫은 TCP 연결을 끊기 전에 확인하는 횟수를 정한다. 기본 값은 7 로
# RTO 50 초에서 16 분 사이에 해당한다. 웹 서버가 운영 중 이라면 이 값을 줄여서
# 소켓 등이 귀한 리소스를 소비하지 않도록 할 수도 있다.
#
net.ipv4.tcp_orphan_retries                = 2

# 무언가 잘못되었을 경우, network layer로 이 현상을 reporting 하기전 다시 확인
# 을 하기 위한 횟수를 지정한다. 최소 RPC 값은 3 이며, 이는 RTO 상에서 3 초에서
# 8 분 사이에 응답을 하도록 하는 것이 기본값이다.
#
net.ipv4.tcp_retries1 = 3

# tcp 연결해제 시간을 줄이며 불필요한 ip확장기능을 사용하지 않음
#
# Decrease the time default value for tcp_fin_timeout connection
# 소켓이 항상 close 되기 전에 마지막 FIN을 기다리는 시간
#
net.ipv4.tcp_fin_timeout                   = 20

# 동시에 유지 가능한 timewait 소켓의 수. 지정된 숫자를 초과할 경우 timewait 소
# 켓이 없다는 경고 메세지 출력. 64M 당 180000 으로 계산을 하면 됨.
# 64M   -> 180000
# 128M  -> 360000
# 256M  -> 720000
# 512M  -> 1440000
# 1G    -> 2880000
# 2G    -> 5760000
#
# 이 값은 부팅시에 자동으로 감지하여 설정이 됨. 고정을 하고 싶을 경우에는
# /etc/sysconfig/kernel-parameter 의 MEM_AMOUNT=램사이즈 를 설정하면 됨.
# 램사이즈는 Mbyte 단위로 1G 는 1024M 로 계산을 함.
#
net.ipv4.tcp_max_tw_buckets                = 2700000

# 빠른 재생 TIME-WAIT 소켓을 사용한다. 기본값은 1이다. 전문가의 조언 /  요청이
# 없다면 절대 바꾸지 마라.
#
net.ipv4.tcp_tw_recycle                    = 1

# 프로토콜 관점에서 안전하다고 판단될 때 새로운 연결에 대하여 TIME-WAIT 소켓을
# 재사용하는 것을 허락한다. 기본값은 0 이다. 이 값은 기술 전문가의 조언이나 요
# 청이 없이 변경하지 않는 것이 좋다.
#
net.ipv4.tcp_tw_reuse                      = 0

# 리스닝 서비스가 새로운 연결을 수락하기에 너무 느리다면 그 서비스를 리셋한다.
# 기본값은 FALSE 이다. 이 것은 갑자기 오버플로가 발생 하더라도 연결이 복구된다
# 는 뜻이다. 리스닝 데몬이 연결을 더 빨리 수락하도록 자리잡지 못하는게 정말 확
# 실할 때에만 이 옵션을 활성화 한다. 이 옵션을 활성화하면 서버에서 손상된 클라
# 이언트라도 리슨 하게 된다.
#
net.ipv4.tcp_abort_on_overflow             = 0

# kernel 을 CONFIG_SYNCOOKIES 를 설정 하여 생성을 하였을 때만 사용이 유효하다.
# socket으로 syn backlog queue 가 넘칠때 syncookies 를 보낸다. 이것은 일반적인
# 'syn flood attack' 이라는 공격을 방어 하기 위해 사용이 된다. 기본 값은 FALSE
# 이다.
#
# syncookies 는 대체 방법일 뿐 이라는 것을 명심해야 한다. 이것은 정상적인 접속
# 에 대해 더 좋은 성능을 내게하는 것에 사용이 되는 것은 아니다.  만약 로그에서
# synflood 경고를 보게 된다면, 하지만 이것들이 정상적인 접속들이 넘쳐서 발생한
# 것들 이라면 이 경고가 사라지기 전에 tcp_syncookies 가 아닌 다른 파라미터들을
# 조절해야 한다.tcp_max_syn_backlog, tcp_synack_retries, tcp_abort_on_overflow
# 를 참고를 하라.
#
# syncookies는 TCP 프로토콜에 심각하게 어긋나며, TCP 확잗들을 사용하는 것을 허
# 락하지 않으며, (SMTP relaying 같은) 특정서비스들의 심각한 손상의 결과가 될수
# 있다. 만약 실제 넘치지 않음에도 불구하고 로그에 synflood경고가 계속 발생한다
# 면, 서버의 설정이 심각하게 잘못되어 있는 것이다.
#
net.ipv4.tcp_syncookies                    = 1

# TCP urg 포인터 필드 해석기가 필요할 때에 사용한다.  대부분 오래된 BSD 해석기
# 를 사용하는데, 리눅스가 그런 것들과 제대로 소통하지 못한다고 판단될 경우, 활
# 성화를 해 볼만하다. 기본값은 FALSE 이다.
#
net.ipv4.tcp_stdurg                        = 1

# 접속한  client 들 중 승인을 받지 못하는 접속 요청들의 최대값을 지정 한다. 만
# 약 승인을 받지 못하고 기다리는 접속 요청들이 이 수를 벗어나는 경우에는 "다시
# 재접속을 해 보라" 라는 메세지를 받게 된다. 128 Mb 의 메모리에서는 기본값으로
# 1024를 사용할수 있으며, 이보다 적은 메모리를 가지고 있을 경우에는 128을 사용
# 하기를 권장한다. 만약 서버에 부하가 많이 걸리게 된다면 이값을 증가해 보기 바
# 란다. 주의할 것은, 1024 보다 크게했을 경우 include/net/tcp.h 에서
# (TCP_SYNQ_HSIZE*16)이 tcp_max_syn_backlog 와 같거나 이보다 작게
# TCP_SYNQ_HSIZE 를 변경해 줘서 커널을 다시 빌드 해야 한다. 커널을 수정하지 않
# 았을 경우의 최대값은 8192 정도 까지 지정할 수 있다.
#
# 이 값은 부팅시에 자동으로 감지하여 설정이 됨. 고정을 하고 싶을 경우에는
# /etc/sysconfig/kernel-parameter 의 MEM_AMOUNT=램사이즈 를 설정하면 됨.
# 램사이즈는 Mbyte 단위로 1G 는 1024M 로 계산을 함.
#
net.ipv4.tcp_max_syn_backlog               = 1024

# RFC1323 에 정의된 window scaling 을 가능하게 한다.
#
net.ipv4.tcp_window_scaling                = 1

# RFC1323 에 정의된 timestamp 들을 가능하게 한다.
#
net.ipv4.tcp_timestamps                    = 1

# SYN 패킷을 전송한 후에 로스가 발생을 하여 ACK 를 일부 받지 못했을 경우, 선택
# 적으로 (selected) 받지못한 ACK 만 받도록 요청하는 것을 허락한다. 로스가 많은
# 네트워크에서는 상당히 중요한 역할을 한다.
#
net.ipv4.tcp_sack                          = 1

# FACK 밀집 회피와 빠른 재전송을 가능하게 한다. tcp_sack 이 활성화가 되어 있지
# 않으면 이 값은 사용되지 않는다.
#
net.ipv4.tcp_fack                          = 1

# TCP가 중복된 SACK 들을 보내는 것을 가능하게 한다.
#
net.ipv4.tcp_dsack                         = 1

# TCP 에 명백한 혼잡 공지(Explicit Congestion Notification) 를 가능하게 한다.
#
net.ipv4.tcp_ecn                           = 0

# TCP stream 에 패킷들의 최대 재 요청을 설정. 기본값은 3 이다.
#
net.ipv4.tcp_reordering                    = 3

# Socket Buffer Turning
# 메모리가 1G 이상이면 사용해 보도록 한다.
#
# 이 값은 부팅시에 자동으로 감지하여 설정이 됨. 고정을 하고 싶을 경우에는
# /etc/sysconfig/kernel-parameter 의 MEM_AMOUNT=램사이즈 를 설정하면 됨.
# 램사이즈는 Mbyte 단위로 1G 는 1024M 로 계산을 함.
#
#net.ipv4.tcp_rmem                          = 4096 25165824 25165824
#net.ipv4.tcp_wmem                          = 4096 65536 25165824
#net.core.rmem_default                      = 25165824
#net.core.rmem_max                          = 25165824
#net.core.wmem_default                      = 65536
#net.core.wmem_max                          = 25165824

# 세팅되면 TCP 스택은 RFC1337을 따른다. 해제되면 RFC를 따르지 않지만 TCP
# TIME_WAIT asassination 은 막아준다. 기본값은 0 이다.
#
net.ipv4.tcp_rfc1337                       = 1

-----------------------> CUT HERE <----------------------------

다음은 sysctl.conf 에서 사용할 kernel parameter 들에 대해 다루겠다. 다음 부터 나
오는 문서들은 kernel doc 에서 sysctl 에 관련된 문서들을 번역한 것들이다.


/proc/sys/vm/* 을 위한 문서

* 역주)
역자가 VM에 관한 지식이 모자르다 보니 번역이 아주 억지식으로 되었다. 될수 있으면
영문 원서를 보는 것을 권장한다. 한글 번역 문서는 대충 이런 것이 있다 정도로 만족
을 하고 실제 여기의 문서들을 적용해 보고 싶다면 영문 원서를 정독하여 하기를 원한
다. 다시 말하지만 이 문서의 번역은 억지로 되어 있다는 것을 말한다.

이 페이지를 읽기 전에 아주 강력하게 주의를 요할 것은 sysctl을 이용하여 이 값들을
변경할 경우나 직접적으로 변경을 할 경우 시스템이 crash 되어질 위험요소가 많이 있
다는 것을 명심해 야 한다. 즉, 자기의 시스템에 무리한 값을 넣었을 경우 그 즉시 시
스템이 멈출수도 있기 때문에 충분한 테스트와 시스템이 crash가 될 수 있음을 명심하
고 책임을 질수 있을 경우에만 만지기를 권장한다.

일반적인 정보와 법적인 짧은 문구는 README 를 보기 바란다.

================================================================================

이 파일은 /proc/sys/vm 에서 sysctl file 들을 위한 문서들을 포함하고 있으며 Linux
Kernel 2.2 이상에서 유효하다.

/proc/sys/vm에 있는 파일들은 리눅스 커널의 가상메모리(VM) 서브시스템의 작동을 설
정하기 위해 사용되며, (bdflush) 파일들의 어떤 것들은 디스크 사용에 조금의 영향을
미칠수도 있다.

이 파일들의 기본값과 초기화 방법은 mm/swap.c 에서 확인할수 있다.

현재, 이 파일들은 /proc/sys/vm 에 있다.
- bdflush
- buffermem
- freepages
- kswapd
- overcommit_memory
- page-cluster
- pagecache
- pagetable_cache

================================================================================

bdflush:

이 파일은 bdflush kernel daemon 의 작동을 조절한다. 이 파일의 구성과 기본값은
/linux/mm/buffer.c 에서 확인을 할수가 있으며 아래의 소스와 같이 dbflush 는 9개의
정수값을 가지고 있으며 이중 커널에서 실제로 적용이 되는 것은 6개의 값이 된다.

From linux/fs/buffer.c:
--------------------------------------------------------------------------------
union bdflush_param {
        struct {
                int nfract;     /* Percentage of buffer cache dirty to
                                   activate bdflush */
                int dummy1;     /* old "ndirty" */
                int dummy2;     /* old "nrefill" */
                int dummy3;     /* unused */
                int interval;   /* jiffies delay between kupdate flushes */
                int age_buffer; /* Time for normal buffer to age */
                int nfract_sync;/* Percentage of buffer cache dirty to
                                   activate bdflush synchronously */
                int dummy4;     /* unused */
                int dummy5;     /* unused */
        } b_un;
        unsigned int data[N_PARAM];
} bdf_prm = {{30, 64, 64, 256, 5*HZ, 30*HZ, 60, 0, 0}};
--------------------------------------------------------------------------------

int nfract:
첫번째 필드 nfract 값은 buffer cache 에 있는 dirty buffer 들의 퍼센테이지를 결정
한다.  Dirty 의 뜻은 디스크에 쓰여지기 위한 buffer 들의 목록을 의미하며, 이는 곧
buffer 에서 지워질 내용을 의미하게 된다. 이 값은 높게 셋팅 하는 것은 디스크에 쓰
여질 내용들을 오래 기다리게 하며 이는 곧 메로리가 꽉 차게 되었을때 I/O에 많은 양
의 정보를 기록하게 한다. 값이 너무 작을 경우에는 I/O로의 접근이 빈번하게 되어 수
행 능력을 떨어뜨릴수 가 있다.

int dummy1:
두번째 필드 dummy1 은 예전의 ndirty 로서, 한번에 bdflush 가 디스크에 적을수 있는
dirty buffer 의 최대값을 제공한다. 500으로 설정돼 있으므로 한번 하드 디스크에 기
록을 할 때 500개 의 더티 버퍼가 사라진다. 이 값 또한 작을수록 하드 디스크로의 접
근이 빈번하게 일어난다.

int dummy2:
3 번째 필드 dummy2 는 예전의 nrefill 로서 refill_freelist() 함수가 호출 되었을때
bdflush 가 추가 할 free buffer 의 list 수를 설정한다.  이것은 buffer 들이 memory
page 들과 어떤 기록 할것이 미리 작성될 필요가 있는것과는 다른 크기을 가지는 동안
미리 free buffer 를 위치시킬 필요가 있다. 높은값은 더많은 메모리를 낭비할수 있으
나 refill_freelist() 함수를 더 적게 실행을 하기 때문에 효율적으로 관리를 할 수도
있다.

int dummy3:
사용하지 않음

int interval:
5 번째 필드 interval 은 kupdate 가 wake 하고 flush 를 할 최소 비율이다.  이 값은
jiffies (clockticks) 를 나타내며, giffies 의 수는 초당 보통 100 이다. (알파는 보
통 1024 이다.) 그러므로 x*HZ 는 x초 이다. 기본값은 5초 이며 최소 0초 최대 600 초
이다.

int age_buffer:
6 번째 필드 age_buffer 는 dirty buffers 를 디스크에 쓰기 전 Linux 가 기다릴 최대
시간을 지정한다. 즉 여기 에 지정된 시간이 흐르면 disk 에 쓰게 된다는 것을 의미한
다. 값은 jiffies 에 지정 되어 있으며 기본값은 30 초, 최소 1 초, 최대 6,000 초 이
다.

int nfract_sync:
7 번째 필드 nfract_sync 는 bdflush 가 동시에 발생하기 전의 dirty buffer의 캐쉬의
퍼센테이지를 지정한다.  bdflush 가 디스크에 buffer 들을 기록하기 전의 hard limit
로 보일 수 있다. 기본값은 60% 이며, 최소 0%, 최대 100% 까지 지정을 할 수 있다.

int dummy4:
사용하지 않음

int dummy5:
사용하지 않음

역자주)
필자가 번역을 하고도 이 분야에 대한 지식이 모자른 관계로 무슨 소리인지 하나도 모
르겠다. 그래서 다른 분이 이 부분에 대해 적은 글을 첨부 한다. 아래의 글은 현재 커
널 버젼(2.4.17) 과 약간 변경이 있었지만 그래도 어느정도 참고는 될 것이다.

  [출처] http://maso.zdnet.co.kr/maso/2000/09/07/014004,968307791,178.html

  bdflush 는 9개의 필드를 가지며 실제로 6개의 값만 사용

  nfract

  9개의 필드로 구성된 bdflush의 설정값 중 가장 앞에 나오는 40은 전체 버퍼 캐시의
  더티 버퍼(dirty buffer) 비율을 나타낸다. 여기서 '더티' 는 주로 버퍼에서 비워질
  내용을 말하는데, 즉 프로세스에서 모디파이돼 하드 디스크에 쓰여질 데이터를 의미
  한다. 버퍼에서 하드 디스크에 쓸 내용이 담긴 버퍼를 더티 버퍼라 한다. 쉽게 말해
  하드 디스크에 쓰여질 데이터를 저장한 버퍼다. 40 으로 설정됐다면 전체 버퍼 캐시
  의 더티 버퍼 크기가 40% 이하가 되게 한다. 40% 가 되면 더티 버퍼의 내용을  하드
  디스크에 기록하고 버퍼를 비우기 위한 시도를 한다. 값이 클수록 하드 디스크에 쓰
  여질 데이터는 오래 기다리며, 값이 작을 경우 하드 디스크로의 접근이 빈번해 전체
  시스템의 수행 속도가 느려질 수 있다.

  ndirty

  두 번째 값인 500은 하드 디스크에 한번에 기록하는 버퍼의 크기를 나타낸다. 500으
  로 설정돼 있으므로 한번 하드 디스크에 기록을 할 때 500 개의 더티 버퍼가 사라진
  다. 이 값 또한 작을수록 하드 디스크로의 접근이 빈번하게 일어난다.

  nrefill

  세 번째 값은 사용하지 않는 버퍼들의 리스트 작성에 사용한다. 64 로 돼 있는데 이
  는 한번에 64 개의 빈 버퍼를 만들라는 것이다. 이 값은 클수록 전체 메모리 낭비를
  가져오지만 입출력 버퍼가 증가해 하드 디스크 접근 속도를 높일 수 있다.

  기타 bdflush 설정 항목

  nref_dirt  : bdflush 가 동작하는 경계를 나타낸다. 기본값이 256인데 더티 버퍼가
               256 이상이면 bdflush가 동작한다.
  dummy1     : 사용하지 않는 값이다.
  age_buffer : 더티 버퍼의 수명을 말한다. 각 더티 버퍼는 생성 후 최대 age_buffer
               에 나타난 시간이 지나기 전에 디스크에 기록된다는 의미다.
  age_super  : supper block의 수명을 나타낸다.
  dummy2     : 사용되지 않는 값
  dummy3     : 사용되지 않는 값


================================================================================
buffermem:

이 파일에는 buffer_mem구조의 값에 대응하는 3개의 값이 있다. 이것은 buffer memory
에 사용이 되는 memory 를 얼마나 지정할 것인지를 조절한다. 전체 메모리의 퍼센트지
처럼 퍼센테이지로 계산이 되어진다.

The values are:
min_percent     -- buffer memory 로 사용될 memory 의 최소 퍼센테이지
borrow_percent  -- 사용안함
max_percent     -- 사용안함

================================================================================
freepages:

이 파일은 freepage 구조의 값을 포함 하고 있다. 이 구조는 min, low, high 의 3개의
값을 포함한다. 설정 값의 뜻은 다음과 같다:

freepages.min   system 의 free page 의 수가 이 숫자에 도달할 때, kernel 은 더 많
                은 메모리를 위치 시킨다.
freepages.low   free page 의 숫자가 이 값보다 낮을 경우 kernel 은 swapping 을 시
                작한다.
freepages.high  kernel 은 이 값이 지정된 만큼의 양을 남겨 놓게 된다. 메로리가 이
                값이 도달을 하게 되면, kernel은 실제로 적극적인 swapping 을 행하
                는 것은 아니고 할수 있으면 자연스럽게 swapping 을 시작하게 된다.

================================================================================

kswapd:

Kswapd 는 kernel swapout daemon 이다.  kwaptd 는 kernel 의 전제 또는 조각을 얻게
되었을때 남아 있는 메모리 조각을 의미 한다. 모든 시스템이 다르며, 이 시스템의 조
각으로서 원하는 조정을 할수가 있을 것이다.

이 page의 수들은 tries_base, tries_min, swap_cluster 와 같은 struct pager_daemon
의 수들에 일치한다. tries_base 와 swap_cluster는 아마 system 성능에 큰 영향을 미
칠 것이다.


tries_base      kswapd 가 한번에 시도하기 위한 free page 의 최대값은 이 값으로부
                터 계산되어 진다. 보통 이값은 4또는 8로 나누어 지며 (mm/vmscan.c
                를 참조하라), 이것은 보이는 만큼 크지는 않다.
                swap 으로 또는 swap으로 부터의 대역폭을 증가할 필요가 있을때, 이
                수를 증가 시킬수 있다.
tries_min       kswapd 가 매번 호출을 하기 위한 하나의 free page 의 최소값 이다.
                기본적으로 kswapd 은 최소 순위로 호출이 되어 질때 어떤 page 들을
                자유롭게 하는 것이 확인 되었다.
swap_cluster    이것은 한번에 kswapd 가 쓸수 있는 page 의 값이다.  kswapd 가 I/O
                에 많은 양의 데이터를 넣고 disk를 자주 읽지 않게 하기 위해 이 값
                을 크게 하기를 원할것이다. 하지만 이 값이 너무 크면 요청 queue가
                넘치게 될지도 모른다.

================================================================================

overcommit_memory:

이 값은 memory overcommitment 를 가능하게 하는 falg 를 포함하고 있다. 이 flag 가
0 일 경우,  kernel 은 각 malloc() 함수를 호출하기 전에 memory 가 얼마나 충분하게
남았는지를 체크를 하게 된다. 만약 flag 가 0 이 아니라면, system은 항상 충분한 메
모리를 확보 하려고 하게 된다.

이 요소는 수많은 프로그램이 malloc() 함수를 사용함으로 해서 메모리를 잠식하는 것
을 방지 하기 위해 아주 유용하게 사용을 할수가 있다.

더 많은 정보를 위해서는 mm/mmap.c::vm_enough_memory() 을 참조 하라

================================================================================

page-cluster:

Linux 가상 메모리 subsystem은 디스크 결함에 의한 다중 page 를 읽어 들임으로 인한
과도한 디스크 seek 를 회피한다. page 의 수는 기계의 메모리의 양에 따라 읽어 들이
게 된다.

커널이 한번에 읽을수 있는 page 의 수는 2 ^ page-cluster 와 같다. 2 ^ 5 이상의 값
은 32-page group 안에서만 swap date 를 cluster 할수 있기 때문에 사용할수 없다.

================================================================================

pagecache:

이 파일은 버퍼 메모리와 같이 정확하다. 이 파일은 오직 struct page_cache를 조절하
고 앞서 말한바와 같이 page cache 를 위해 사용되어지는 memory 의 양을 조절한다.

커널 2.2 에서, page cache 는 3 개의 주 목적에 사용이 되어 진다:
- caching read() data from files
- caching mmap()ed data and executable files
- swap cache

시스템이 swap 과 cache 가 둘다 가중할 때,  아마도 swap 되어진 data 가 caching 이
되어서 일것이다. 이것은 커널 2.0 에서 가능한 효과적인 swapping 보다 더 많이 기록
을 할수 있기 때문이다.

================================================================================

pagetable_cache:

커널은 각 프로세서 캐쉬 에서 page table의 수를 지킨다. (이것은 SMP 시스템에서 도
움을 받는다) 각 프로세서를 위한 캐쉬 크기는 log 와 high 값 사이에서 지정된다.

low-memory 에서, single CPU 시스템은 메모리 낭비 없이 이 값을 안전하게 0 으로 설
정할수 있다. 다중 CPU 시스템들에서는 kernel memory lock 이 요구되는 것 없이 fast
pagetabel 할당을 하기 위해 사용하고는 한다.

대형 시스템들을 위해서, 설정값은 아마 OK 일것이다. 일반적인 시스템들을 위해서는
조각을 낼 필요는 없다. 소형 시스템들 (램의 용량이 16M 보다 작을 경우) 에서는 두
값을 모두 0 으로 하는 것이 더 낳을 것이다.


/proc/sys/fs/* 을 위한 문서

* 역주)
이 페이지를 읽기 전에 아주 강력하게 주의를 요할 것은 sysctl을 이용하여 이 값들을
변경할 경우나 직접적으로 변경을 할 경우 시스템이 crash 되어질 위험요소가 많이 있
다는 것을 명심해 야 한다. 즉, 자기의 시스템에 무리한 값을 넣었을 경우 그 즉시 시
스템이 멈출수도 있기 때문에 충분한 테스트와 시스템이 crash가 될 수 있음을 명심하
고 책임을 질수 있을 경우에만 만지기를 권장한다.

일반적인 정보와 법적인 짧은 문구는 README 를 보기 바란다.

================================================================================

이 파일은 /proc/sys/fs 에서 sysctl file 들을 위한 문서들을 포함하고 있으며 Linux
Kernel 2.2 이상에서 유효하다.

/proc/sys/fs  디렉토리에 있는 파일들은 리눅스 커널의 작동에 대한 잡다한 정보들과
일반적인 정보들을 설정하고 모니터링 하는데 사용이 되어질수 있다. 이값들을 적용할
때 조심하지 않으면 시스템을 엉망으로 만들 수 있으므로 실제 값을 적용하기 전에 문
서와 커널 소스를 반드시 읽어 보는 것이 현명할 것이다.

현재 /proc/sys/fs 에서는 다음의 파일들을 볼수 있다:
- dentry-state
- dquot-max
- dquot-nr
- file-max
- file-nr
- inode-max
- inode-nr
- inode-state
- overflowuid
- overflowgid
- super-max
- super-nr

/proc/sys/fs/binfmt_misc의 파일들에 대한 문서는 Documentation/binfmt_misc.txt 이
다.

================================================================================

dentry-state:

From linux/fs/dentry.c:
--------------------------------------------------------------------------------
struct {
        int nr_dentry;
        int nr_unused;
        int age_limit;         /* age in seconds */
        int want_pages;        /* pages requested by system */
        int dummy[2];
} dentry_stat = {0, 0, 45, 0,};
--------------------------------------------------------------------------------

Dentries 는 동적으로 할당 되어 지고, 재할당 되어 지며, nr_dentry 는 언제나 0으로
되어지는듯 하다. 앞으로는 오직 nr_unused, age_limit, want_pages 가 사용되어 지게
될것 같다. Nr_unused 는 그 이름이 무엇을 말하는지 정확한 것 같다.
Age_limit 는 dcache entriy 들이 shrink_dchcae_pages() 가 호출되고 dcache 가 아직
삭제되지 않았을 경우 memory 가 작고 want_pages 가 0 이 아닐때 재요구되어 지는 이
후의 시간의 한계이다.

================================================================================

dquot-max & dquot-nr:

dquot-max 는 cache disk 의 quota 목록들의 최대값을 보여준다.

dquot-nr 은 할당되어진 disk quota 목록들과 사용하지 않는 disk quota목록들의 값을
보여준다.

사용되지 않는 cached disk quota의 수는 대단히 적고, 동시에 로그인 해 있는 유저들
의 수가 엄청나게 많을 경우 이 값의 제한을 올려 줄수 있다.

================================================================================

file-max & file-nr:

커널은 동적으로 file handle 들을 할당한다. 하지만 아직은 그들을 다시 자유롭게 하
지는 못한다.

file-max의 값은 Linux커널이 할당할수 있는 file-handle 의 최대값을 나타낸다. file
handle 에 대한 수많은 메세지를 만나게 될 경우, 이 값의 제한을 올려줄수 있다.

file-max 는 정확치는 않지만 2.4.20 부터는, 커널에서 자동으로 메모리양을 측정하여
알맞은 값으로 올리도록 변경이 되었다. 그러므로 굳이 따로 설정을 할 필요가 없어졌
다.

file_nr 의 세 값은 file handle의 할당수와 file handle 의 사용되는 값 그리고 file
handle 의 최대값을 나타낸다. 할당된 file handle 들이 최대값에 다가가지만 실제 사
용되어 지는 값들이 얼마 되지 않는다면, file handle 의 사용량이 최정점에 이르더라
도 최대값을 증가할 필요는 없다.

================================================================================

inode-max, inode-nr & inode-state:

file handle 에 따라 커널은 동적인 inode structure를 할당한다. 하지만 아직 이것을
자유롭게 하지는 못한다.

inode-max 의 값은 inode handler의 최대값을 나타낸다. 이 값은 stdin, stout 그리고
network 소켓들을 위한 inode struct들도 필요로 하게 되므로 file-max 보다 보통 3-4
배 정도가 커야 한다. 일반적으로 inode가 할당이 된다면 이 값을 증가시킬 필요는 없
다.

inode-nr 은 inode-state 로 부터 처음 2개의 item 을 포함한다. 그래서 이 파일에 대
한 설명은 생략한다.

inode-state 는 3개의 실제값과 4개의 사용하지 않는 값을 포함한다. 실제로 사용되는
3개의 값은 nr_inodes, nr_free_inodes 그리고 preshrink 를 나타낸다.

nr_inodes 는 inode의 수를 나타낸며, 시스템은 nr_inodes > inode-max 이고 시스템이
더 할당되어진 것들 대신 inode list를 줄일 필요가 있을때 preshrink 의 값을 0이 아
닌 값을 가지게 된다.

================================================================================

overflowgid & overflowuid:

UID 와 GID 가 32 bit 인 Linux 라도 어떤 filesystem 들은 오직 16bit UID 와 GID 만
지원한다. 이런 filesystem 들 중 하나가 쓰기가 가능한 상태로 마운트가 되어 있을경
우, 65535 를 넘어서는 UID 또는 GID 는 disk 에 쓰여지기 전에 고정된 값으로 변환이
된다.

sysctl 은 고정되어 있는 UID 와 GID 를 변경하는 것을 가능하게 한다. 기본값은
65534 이다.

================================================================================

super-max & super-nr:

이 값들은 super block 들의 최대값을 조절하고, 따라서 kernel에 마운트 되어진 파일
시스템들의 최대값을 조절하는 의미도 된다. super-max 에 지정되어 있는 현재값 보다
더 많은 filesystem 을 마운트 할 필요가 있다면 super-max 를 증가 시켜야 한다.


/proc/sys/kernel/* 을 위한 문서

* 역주)
이 페이지를 읽기 전에 아주 강력하게 주의를 요할 것은 sysctl을 이용하여 이 값들을
변경할 경우나 직접적으로 변경을 할 경우 시스템이 crash 되어질 위험요소가 많이 있
다는 것을 명심해 야 한다. 즉, 자기의 시스템에 무리한 값을 넣었을 경우 그 즉시 시
스템이 멈출수도 있기 때문에 충분한 테스트와 시스템이 crash가 될 수 있음을 명심하
고 책임을 질수 있을 경우에만 만지기를 권장한다.

일반적인 정보와 법적인 짧은 문구는 README 를 보기 바란다.

================================================================================

이 file은 Linux 커널 버젼 2.2이상에서 유효하며, /proc/sys/kernel/ 에 있는 sysctl
파일들에 관한 언급이 포함되어 있다.

/proc/sys/kernel  디렉토리에 있는 파일들은 리눅스 커널의 작동에 대한 잡다한 정보
들과 일반적인 정보들을 설정하고 모니터링 하는데 사용이 되어질 수 있다. 이 값들을
적용할 때 조심하지 않으면 시스템을 엉망으로 만들수 있으므로 실제값을 적용하기 전
에 문서와 커널 소스를 반드시 읽어 보는 것이 현명할 것이다.

현재 이 파일들은 (설정에 따라 다를수도 있다) /proc/sys/kernel 에서 볼수 있다:
- acct
- ctrl-alt-del
- dentry-state
- domainname
- hostname
- htab-reclaim                [ PPC only ]
- java-appletviewer           [ binfmt_java, obsolete ]
- java-interpreter            [ binfmt_java, obsolete ]
- l2cr                        [ PPC only ]
- modprobe                    ==> Documentation/kmod.txt
- osrelease
- ostype
- overflowgid
- overflowuid
- panic
- powersave-nap               [ PPC only ]
- printk
- real-root-dev               ==> Documentation/initrd.txt
- reboot-cmd                  [ SPARC only ]
- rtsig-nr
- rtsig-max
- sg-big-buff                 [ generic SCSI device (sg) ]
- shmmax                      [ sysv ipc ]
- version
- zero-paged                  [ PPC only ]

================================================================================

acct:

highwater lowwater frequency

BDS-style process accounting 이 가능하다면, 이 값들을 이 행동들을  조절 하는것이
가능 하다. 로그가 남는 filesystem 의 남은 공간이 <lowwater>% 보다 적을 경우
accounting 을 일시 정시 한다. 남은 공간이 <highwater>% 보다 많게 되면 accounting
은 다시 시작된다. <Frequency> 는 얼마나 자주 남은 공간의 양을 체크할 것인지를 결
정한다 (초단위로 지정).

기본값은 4 2 30 이다.

이것은 남은 공간이 2% 이거나 이보다 적게 남았을 경우 accounting을 일시 정지 시키
며, 4% 이거나 이보다 많이 남았을 경우 accounting을 재시작 시킨다는 것을 의미하며
30초 간격으로 남은 공간의 양에 대한 정보를 고려하게 한다.

================================================================================

ctrl-alt-del:

이 file 의 값이 0 일 경우, ctrl-alt-del 은 프로그램들을 일시정지 시키고, init(1)
로 restart 신호을 보내게 된다. 하지만 이 값이 1 보다 클 경우, OS 는 dirty buffer
의 동기화 없이 바로 reboot 을 하게 된다. (이것은 저장한 것들을 모두 날릴수 있다)

주의: dosemu 같은 프로그램이 'raw' mode 에 keyboard 를 가질때, ctrl-alt-del은 커
널 tty layer 에 도달하기 전에 그리고 이것이 무엇을 할지 결정하기 위해 프로그램에
도달하기 전에 프로그램에 의해서 중단이 될 것이다.

================================================================================

domainname & hostname:

이 파일들은 system 에 NIS/YP domainname 과 hostname 을 지정하는데 사용하며 다음
과 같이 지정할수 있다:

# echo "darkstar" > /proc/sys/kernel/hostname
# echo "mydomain" > /proc/sys/kernel/domainname

위의 설정은 아래와 같이 할수도 있다.

# hostname "darkstar" > /proc/sys/kernel/hostname
# domainname "mydomain" > /proc/sys/kernel/domainname

하지만 전통적인 darkstar 지정에 대해서는 주의해야 한다. frog.org는 "darkstar" 라
는 hostname을 가지며, DNS(Internet Domain Name Server) "frog.org"라는 domainname
을 가지며, NIS (Network Information Service) 또는 YP (Yello Pages) domainname 과
는 혼동되지 않아야 한다. 이 두 domainname 들은 일반적으로 서로 다르다. 좀더 자세
한 논의를 보기 위해서는 hostname(1) man page 를 참조하도록 하라.

================================================================================

htab-reclaim: (PPC only)

Setting this to a non-zero value, the PowerPC htab
(see Documentation/powerpc/ppc_htab.txt) is pruned
each time the system hits the idle loop.

================================================================================

l2cr: (PPC only)

This flag controls the L2 cache of G3 processor boards. If
0, the cache is disabled. Enabled if nonzero.

================================================================================

osrelease, ostype & version:

# cat osrelease
2.1.88
# cat ostype
Linux
# cat version
#5 Wed Feb 25 21:49:24 MET 1998

osrelease 와 ostype file 은 말그대로 명확한 정보를 가지고 있다.  version 은 조금
은 더 자세한 설명이 필요하다. 위에서 '#5' 는 이 source 기반에서 5 번째 커널 빌드
가 이루어 졌음을 의미하며, 나머지는 kernel 이 만들어진 시간을 나타낸다.  이 값들
을 조정하기 위해서는 커널을 재빌드 하는 방법외에는 없다.

================================================================================

overflowgid & overflowuid:

시스템이 32-bit UID를 지원하지 않는다면 (예를 들어 arm, i386, m68k, sh, sparc32)
실제 UID 또는 GID 가 65536를 넘어설 경우, 고정된 UID와 GID는 이전 16 bit UID/GID
system 호출에서 사용되는 application 으로 변환이 될것이다.

sysctl은 고정되어 있는 UID 와 GID 를 변경하는 것을 가능하게 한다. 기본값은 65534
이다.

================================================================================

panic:

panic 의 값은 panic 상태에서 rebooting 하기 전 kernel 이 얼마나 기다리는 값을 초
단위로 나타낸다. watchdog 을 사용할때 60 으로 설정하는 것을 추천한다.

================================================================================

powersave-nap: (PPC only)

If set, Linux-PPC will use the 'nap' mode of powersaving,
otherwise the 'doze' mode will be used.

================================================================================

printk:

printk 에는 각각 console_loglevel default_message_loglevel minimum_console_level
default_console_loglevel 과 같이 4개의 값이 있다.

이 값들은 error 메세지들을 logging 하거나 출력할때 printk() 함수가 작동을 하는데
영향을 미친다. 서로다른 logleves 들에 대한 더많은 정보를 얻으려면 'man 2 syslog'
명령을 실행하라

- console_loglevel: console 에 출력되는 것들 보다 더 우선되는 메세지들
- default_message_level: 명시적인 우선권이 없는 메세지들이 이 값에 지정된 우선순
  위로 출력되게 됨
- minimum_console_loglevel: console_loglevel 을 설정할 가장 작은 값 (즉 가장 높
  은 loglevel - loglevel 은 값이 낮을수록 우선순위)
- default_console_loglevel: console_loglevel 의 기본값

주의: linux/kernel/pringk.c 에서 보여지는 quick은 이 값들이 구조안에 들어가지 않
는 것을 보여줄 것이며, 그러므로 이 값들은 compiler 를 변경했을 경우, 내부 코어는
형식적으로 보증되지 않으며, 불필요한 값들이 발생할 것이다. (???)

================================================================================

reboot-cmd: (Sparc only)

??? This seems to be a way to give an argument to the Sparc
ROM/Flash boot loader. Maybe to tell it what to do after
rebooting. ???

================================================================================

rtsig-max & rtsig-nr:

rtsig-max 는 시스템에서 해결이 되어지지 않는 POSIX realtime (queued) signal 들의
최대값을 설정하는데 사용이 되어진다.

rtsig-nr 은 현재 대가하고 있는 RT signal 들의 숫자를 보여준다.

================================================================================
sg-big-buff:

sg-big-buff 는 일반적인 SCSI buffer 의 크기를 보여준다. 이 파일의 값은 아직 변경
할수 없다. 하지만 include/scsi/sg.h 에서 SG_BIG_BUFF의 값을 변경하여 다시 컴파일
을 한다면 이 값이 변경시킬수 있다.

이 값을 변경 시킬 이유는 별로 없다. 만약 이 값을 높이려고 한다면, 아마 무슨 일을
하려고 하는지에 대해서 많은 지식을 가지고 있어야 할것이다.

================================================================================

shmmax:

shmmax 는 공유 메로리를 사용할 때 공유 메모리 segment 의 최대 크기를 질의 하는데
사용이 되어질 수 있으며, 또는 공유 메모리 segment 의 최대크기를 설정할 수도 있다
. shared memory segment 를 1Gb 이상으로 올리는 것을  커널에서 지원을 한다. 이 값
은 SHMMAX 의 기본값이 된다.

================================================================================

zero-paged: (PPC only)

When enabled (non-zero), Linux-PPC will pre-zero pages in
the idle loop, possibly speeding up get_free_pages. Since
this only affects what the idle loop is doing, you should
enable this and see if anything changes.


/proc/sys/net/ipv4/* 을 위한 문서

* 역주)
이 페이지를 읽기 전에 아주 강력하게 주의를 요할 것은 sysctl을 이용하여 이 값들을
변경할 경우나 직접적으로 변경을 할 경우 시스템이 crash 되어질 위험요소가 많이 있
다는 것을 명심해 야 한다. 즉, 자기의 시스템에 무리한 값을 넣었을 경우 그 즉시 시
스템이 멈출수도 있기 때문에 충분한 테스트와 시스템이 crash가 될 수 있음을 명심하
고 책임을 질수 있을 경우에만 만지기를 권장한다.

* 참조)
http://kldp.org/KoreanDoc/html/Kernel-KLDP/network.html

ip_forward - 01 연산
        0              - 사용안함 (기본값)
        0 이 아닐 경우 - 사용함

        interface 들 사이에 패킷들을 교환시키는 것을 허락.

        이 변수의 변경은 기본적인 상태로 모든 설정 파라미터들을 리셋 시킨다.
        (RFC1122 for hosts, RFC1812 for routers)

ip_default_ttl - 정수
        기본값: 64

        TTL (Time To Live) 은 IP 패킷 안에 들어있는 (대개 0부터 255 사이) 정수값
        으로 TTL 이라는 말 그대로 패킷의 수명을 카운트한다. 라우터 하나를 지날때
        마다 초기 값에서 1 (혹은 그 이상)을 빼는데 값이 0 이 되면 라우터는 그 패
        킷 을 버리고 재전송을 요청하는 ICMP 메시지를 발신지 호스트에 보낸다.  리
        눅스는 그 값이 255 이나 윈도우 95 나 98 의 TTL 기본 값은 32 홉으로, 운영
        체제마다 다를 수 있다.

        ping 과 traceroute 유틸리티는 TTL 값을 사용하는 대표적인 프로그램인데 사
        용자가 TTL 값을 조정할 수 있으며 traceroute 는 TTL 기본값을 30 으로 낮추
        어 패킷을 전송한다.

        멀티캐스팅에서는 TTL 값이 패킷이 전달되어야 하는 범위나 구역을 가리킨다.

               0 은 같은 호스트로 제한된다.
               1 은 같은 서브넷으로 제한된다.
               32 는 같은 사이트로 제한된다.
               64 는 같은 지역으로 제한된다.
               128 은 같은 대륙으로 제한된다.

ip_no_pmtu_disc - 01 연산
        MTU discorery 경로를 사용안함
        기본값 FALSE (사용함을 의미)

        MTU (Maximum Transmission Unit) 는 프레임이나 패킷이 한번에 하나 씩 전송
        될 때 통과할 수 있는 크기로 프로토콜마다 그 크기가 다르다. 예를들어 이더
        넷에서는 1500 이지만, X.25 에서는 576 이다. Path MTU 는 두 호스트사이 경
        로 (path) 에서 가장 작은 MTU 값이다.

        호스트가 같더라도 라우팅 경로나 프로토콜은 매번 바뀌므로,  MTU 값도 계속
        달라지게 된다. 현재 패킷보다 작은 MTU 값을 가진 라우터를 통과할 때, 패킷
        은 그 라우터 MTU 에 맞춰 잘게 쪼개진다.  수신하는 호스트에서는 그렇게 쪼
        개진 조각들을 모두 받아서 다시 재조립하는데, 그 가운데 한조각이라도 드롭
        되면 모든 조각을 다시 전송받아야 한다. 이 경우, 라우터는 조각을 나누느라
        바쁘고, 호스트는 재조립하느라 바빠지며,  재전송이 많아지는 등 퍼포먼스를
        떨어트리게 된다.

        이럴 때 pmtu discovery 를 사용한다. 먼저 패킷 발송 시, 헤더에  DF (Don't
        Fragment) 비트를 설정해서 조각내지 말라고 알린다.  DF 비트가 설정된 패킷
        을 받은 라우터는 자신의 MTU 보다 큰 경우 조각화하는 대신, Can't Fragment
        에러와 MTU 값을 돌려보낸다.  그 값을 돌려받는 호스트가 라우터의 MTU 값에
        맞추어 패킷을 다시 전송한다. 조각나는 것을 피하면서, 가장 큰 패킷을 보내
        기 위해 pmtu discovery를 사용하는 것이다.

        단, 이 기능을 사용하기 위해서는 ICMP 메시지 타입 3 가운데 code 4
        (Fragmentation Needed and Don't fragment)를 허용해야한다.

IP Fragmentation:

ipfrag_high_thresh - 정수
        Maximum memory 는 IP 조각들을 재조합을 한다. 메모리의 ipfrag_high_thresh
        byte가 이결과를 통해 재할당 된다면, fragment handler는 ipfrag_low_thresh
        가 도달하기 전에 패킷들을 전달을 할것이다.

ipfrag_low_thresh - 정수
        ipfrag_high_thresh 를 참고하라

ipfrag_time - 정수
        메모리에서  IP fragment 를 유지하는 시간 (초단위)

INET peer storage:

inet_peer_threshold - 정수
        스토리지의 대략적인 크기이다. 이 threshold목록들로 부터 시작하는 것은 침
        입의 요소를 안게 될 것이다. 이 threshold 는 garbage collection passes 사
        이에서 목록들의 time-to-live 와 time intervals를 한정을 한다. 또 다른 정
        보를 얻고 싶다면 less time-to-live 나 less GC interval 을 하라.

inet_peer_minttl - 정수
        Minimum time-to-live of entries.  Should be enough to cover fragment
        time-to-live on the reassembling side.  This minimum time-to-live  is
        guaranteed if the pool size is less than inet_peer_threshold.
        Measured in jiffies.

inet_peer_maxttl - 정수
        Maximum time-to-live of entries.  Unused entries will expire after
        this period of time if there is no memory pressure on the pool (i.e.
        when the number of entries in the pool is very small).
        Measured in jiffies.

inet_peer_gc_mintime - 정수
        Minimum interval between garbage collection passes.  This interval is
        in effect under high memory pressure on the pool.
        Measured in jiffies.

inet_peer_gc_maxtime - 정수
        Minimum interval between garbage collection passes.  This interval is
        in effect under low (or absent) memory pressure on the pool.
        Measured in jiffies.

TCP variables:

tcp_syn_retries - 정수
        활성화된 TCP 접속이 재전송을 시도하게 하기 위한 최초 SYN시간의 값을 정한
        다. 255 보다 높아서는 안된다. 기본값은 5이며, 180 초에 대응이 된다.

tcp_synack_retries - 정수
        passive TCP 접속 시도가 재접속을 하기 위한 SYNACKs의 값을 정한다. 255 보
        다 높게 지정할 수 없다. 기본값은 5이며, 180초에 대응이 된다.

tcp_keepalive_time - 정수
        keepalive 가 활성되 되어 있을 경우 얼마나 자주 TCP 가 keepalive 메세지를
        보내게 할 것인지를 설정. 기본값은 2시간 이다.

        KEEPALIVE 시간을 줄이면 비정상적으로 stable 된 접속을 해제하는 시간을 줄
        일수 있음.

tcp_keepalive_probes - 정수
        접속이 끊어지는 것을 결정하기 전까지 keepalive 가 TCP send out 을 얼마나
        살피게 할지 지정한다. 기본값은 9 이다.

tcp_keepalive_intvl - 정수
        얼마나 자주 send out 을 체크할지를 정한다.  tcp_keepalive_probes 에 의해
        증가되어진 probes 는 probes 가 시작된 후에는 responding connection 을 죽
        일수 없다. 기본값은 75초 이다. 기본 값의 사용시 11분 15초 후에 연결이 해
        제된 것으로 간주 된다.

tcp_retries1 - 정수
        무언가 잘못되었을 경우, network layer 로 이 현상을 reporting 하기전 다시
        확인을 하기 위한 횟수를 지정한다. 최소 RPC 값은 3 이며, 이는 RTO상에서 3
        초에서 8분 사이에 응답을 하도록 하는 것이 기본값이다.

tcp_retries2 - 정수
        살아있는 TCP 연결을 끊기 전에 확인하는 횟수를 정한다. RFC1122 는 100초보
        다 길게 제한하라 하지만 너무 작은 값이다. 기본값은 15로 RTO 13-30분에 해
        당한다.

tcp_orphan_retries - 정수
        우리 쪽에서 닫은 TCP 연결을 끊기 전에 확인하는 횟수를 정한다. 기본값은 7
        로 RTO 50 초에서 16 분 사이에 해당한다. 웹 서버가 운영 중 이라면 이 값을
        줄여서 소켓 등이 귀한 리소스를 소비하지 않도록 할 수도 있다.

tcp_fin_timeout - 정수
        서버에 의해 닫혀질때 FIN_WAIT-2 상태의 소켓을 유지 시킬 시간을 지정한다.
        peer는 파괴될수 있지만 결코 스스로 닫지는 않거나, 에상치 못하게 죽을수는
        있다. 기본값 60초 이다. 보통 커널 2.2 에서는 180 초를 사용 하지만 수정을
        할수는 있다. 하지만 시스템이 웹서버의 용도라면 수많은 죽은 소켓들로 인해
        메모리가 폭주할 위험도 있다. FIN-WAIT-2 소켓들은 최고 1.5K 정도의 메모리
        를 사용하기 때문에 FIN_WAIT-1 보다 덜 위험 하지만 tcp_max_orphans 값보다
        더 오래 유지되려는 경향이 있다.

        FIN_TIMEOUT 대기 시간을 줄이면 끊어진 소켓의 소거 시간을 줄일 수 있음.

tcp_max_tw_buckets - 정수
        동시에 유지 가능한 timewait 소켓의 수. 지정 숫자를 초과할 경우, timewait
        소켓이 없다는 경고 메세지 출력한다. 이 제한은 단순한 DoS 공격을 방어하기
        위해서만 필요하며, 기본값보다 작게해서는 절대 안된다. 네트워크 환경이 기
        본값보다 큰 값을 요구한다면 늘려도 된다. 보통 램 64M 당 180000 으로 계산
        을 하면 된다.

tcp_tw_recycle - 01 연산
        빠른 재생 TIME-WAIT 소켓을 사용한다. 기본값은 1이다. 전문가의 조언 /  요
        청이 없다면 절대 바꾸지 마라.

tcp_tw_reuse - 01 연산
        프로토콜 관점에서 안전하다고 판단될 때 새로운 연결에 대하여 TIME-WAIT 소
        켓을 재사용하는 것을 허락한다. 기본값은 0 이다. 이 값은 기술 전문가의 조
        언이나 요청이 없이 변경하지 않는 것이 좋다.

tcp_max_orphans - 정수
        시스템에 고정 되었거나, 사용자 파일 핸들에 연결되지 않은 TCP 소켓의 최대
        값을 지정한다. 고아 연결이 이 값을 초과하면, 즉시 리셋되고 경고를 출력한
        다. 이 제한은 단순한 DoS 공격을 방어하기 위해서만 필요하며,  기본 값보다
        작게해서는 절대 안된다. 네트워크 환경이 기본값보다 큰 값을 요구하거나 오
        래 버텨서 그런 문제들은 더 공격적으로 죽이기 위해 네트워크를 조율 한다면
        늘려도 된다 (아마, 설치된 메모리를 증설한 다음) 한번 더 당부하자면: 고아
        연결들은 스왑할 수 없는 메모리를 각자 64K 이상 차지하게 된다..

tcp_abort_on_overflow - 01 연산
        리스닝 서비스가 새로운 연결을 수락하기에 너무 느리다면, 그 서비스를 리셋
        한다. 기본값은 FALSE 이다. 이 것은 갑자기 오버플로가 발생하더라도 연결이
        복구된다는 뜻이다. 리스닝 데모이 연결을 더 빨리 수락하도록 자리잡지 못하
        는게 정말 확실할 때에만 이 옵션을 활성화 한다. 이 옵션을 활성화하면 서버
        에서 손상된 클라이언트라도 리슨 하게 된다.

tcp_syncookies - 01 연산
        kernel 을 CONFIG_SYNCOOKIES 를 설정하여 생성을 하였을 때만 사용이 유효하
        다. 소켓으로 syn backlog queue 가 넘칠때 syncookies 를 보낸다. 이것은 일
        반적인 'syn flood attack' 이라는 공격을 방어 하기 위해 사용이 된다. 기본
        값은 FALSE 이다.

        syncookies 는 대체 방법일 뿐 이라는 것을 명심 해야 한다. 이것은 정상적인
        접속에 대해 더 좋은 성능을 내게하는 것에 사용이 되는것은 아니다. 만약 로
        그에서 synflood 경고를 보게 된다면, 하지만 이것들이 정상적인 접속들이 넘
        쳐서 발생한 것들이라면 이 경고가 사라지기 전에 tcp_syncookies 가 아닌 다
        른 파라미터들을 조절해야 한다. tcp_max_syn_backlog,  tcp_synack_retries,
        tcp_abort_on_overflow 를 참고를 하라.

        syncookies 는 TCP 프로토콜에 심각하게 어긋나며, TCP 확잗들을 사용하는 것
        을 허락하지 않으며, (SMTP relaying 같은) 특정서비스들의 심각한 손상의 결
        과가 될수있다. 만약 실제 넘치지 않음에도 불구하고 로그에 synflood 경고가
        계속 발생한다면, 서버의 설정이 심각하게 잘못되어 있는 것이다.

tcp_stdurg - 01 연산
         TCP urg 포인터 필드 해석기가 필요할 때에 사용한다. 대부분 오래된 BSD 해
         석기를 사용하는데, 리눅스가 그런 것들과 제대로 소통하지 못한다고 판단될
         경우 활성화를 해 볼만하다. 기본값은 FALSE 이다.

tcp_max_syn_backlog - 정수
        접속한 client 들 중 승인을 받지 못하는 접속 요청들의 최대값을 지정 한다.
        만약 승인을 받지 못하고 기다리는 접속 요청들이 이 수를 벗어나는 경우에는
        "다시 재접속을 해 보라" 라는 메세지를 받게 된다. 128Mb의 메모리에서는 기
        본값으로 1024를 사용할수 있으며, 이보다 적은 메모리를 가지고 있을 경우에
        는 128 을 사용하기를 권장 한다. 만약 서버에 부하가 많이 걸리게 된다면 이
        값을 증가해 보기 바란다.

tcp_window_scaling - 01 연산
        RFC1323 에 정의된 window scaling 을 가능하게 한다.

tcp_timestamps - 01 연산
        RFC1323 에 정의된 timestamp 들을 가능하게 한다.

tcp_sack - 01 연산
        SYN 패킷을 전송한 후에, 로스가 발생을 하여 ACK 를 일부 받지 못했을 경우,
        선택적으로 (selected) 받지 못한 ACK 만 받도록 요청하는 것을 허락한다. 로
        스가 많은 네트워크에서는 상당히 중요한 역할을 한다.

tcp_fack - 01 연산
        FACK 밀집 회피와 빠른 재전송을 가능하게 한다.  tcp_sack 이 활성화가 되어
        있지 않으면 이 값은 사용되지 않는다.

tcp_dsack - 01 연산
        TCP가 중복된 SACK 들을 보내는 것을 가능하게 한다.

tcp_ecn - 01 연산
        TCP 에 명백한 혼잡 공지(Explicit Congestion Notification) 를 가능하게 한
        다.

tcp_reordering - 정수
        TCP stream 에 패킷들의 최대 재 요청을 설정.

        기본값: 3

tcp_retrans_collapse - 01 연산
        망가진 프린터에 Bug-to-bug 호환. 더 큰 패킷을 재전송해서 어떤 TCP 스택에
        있는 버그를 피해간다.

tcp_wmem - vector of 3 INTEGERs: min, default, max
        min: TCP 소켓에서 send buffer 에 할당될 메모리 양.  각 TCP 소켓들은 연결
        이 유지된 상태에서는 이 메모리를 사용한 권한을 가지게 된다. 기본값은 4K

        default: TCP 소켓에서 기본으로 할당이 되는 send 버퍼의 메모리 양. 이값은
        다른 프로토콜에서 의해 사용되는 net.core.wmem_default 값 보다 우선 한다.
        기본값은 16K

        max: TCP 소켓에서 자동으로 선택된 send 버퍼를 위한 최대 메모리 크기.  이
        값보다 net.core.wmem_max 값이 우선한다. 기본값은 128K

tcp_rmem - vector of 3 INTEGERs: min, default, max
        min: TCP 소켓에서 receive buffer 에 할당될 메모리 양. 각 TCP 소켓들은 연
        결이 유지된 상태에서는 이 메모리를 사용할 권한을 가지게 된다. 기본값은 8K

        default: TCP 소켓에서 사용되어 지는 receive buffer 의 기본값. 이 값은 다
        른 프로토콜에 의해 사용되는 net.core.rmem_default 값 보다 우선한다. 기본
        값은 87380 byte 이다. 이 값은 tcp_adv_win_Scale 의 기본 설정과 tcp_app_win:0
        과 기본 tcp_app_win 을 위한 bit less 와 함께 65535 의 window 를 가지게된
        다.

        max: TCP 소켓에 대하여, 자동적으로 최대한 사용할 수 있는  receive buffer
        의 최대크기 이 값은 net.core.rmem_max 의 값을 덮어쓰지 못하며, SO_RCVBUF
        를 통한 "정적"인 연결은 이 값을 사용하지 않는다. 기본값은 87380*2 byte.

tcp_mem - vector of 3 INTEGERs: min, pressure, max
        low: below this number of pages TCP is not bothered about its
        memory appetite.

        pressure: when amount of memory allocated by TCP exceeds this number
        of pages, TCP moderates its memory consumption and enters memory
        pressure mode, which is exited when memory consumtion falls
        under "low".

        high: number of pages allowed for queueing by all TCP sockets.

        Defaults are calculated at boot time from amount of available
        memory.

tcp_app_win - 정수
        Reserve max(window/2^tcp_app_win, mss) of window for application
        buffer. Value 0 is special, it means that nothing is reserved.

        기본값: 31

tcp_adv_win_scale - 정수
        Count buffering overhead as bytes/2^tcp_adv_win_scale
        (if tcp_adv_win_scale > 0) or bytes-bytes/2^(-tcp_adv_win_scale),
        if it is <= 0.

        기본값: 2

tcp_rfc1337 - BOOLEAN
        세팅되면 TCP 스택은 RFC1337을 따른다. 해제되면 RFC를 따르지 않지만 TCP
        TIME_WAIT asassination은 막아준다.

        클라이언트의 소켓으로 부터 RST를 받아 TIME_WAIT 상태로 가는 경우 즉시 소
        켓을 종료 시킴.  웹서버와 같은 유형의 서버에서는 소켓을 열고 닫는 회수가
        많으므로, 이 설정을 적절하게 설정하여 사용하는 것이 좋음. 또는
        net.ipv4.tcp_max_tw_buckets 값을 줄이는 것으로도 가능함

        기본값: 0

tcp_low_latency - BOOLEAN
        If set, the TCP stack makes decisions that prefer lower
        latency as opposed to higher throughput.  By default, this
        option is not set meaning that higher throughput is preferred.
        An example of an application where this default should be
        changed would be a Beowulf compute cluster.
        기본값: 0

ip_local_port_range - 2 정수값
        TCP 와 UDP 에 의해 사용될 local 포트 범위를 정의한다. 첫번째 숫자는 사용
        할 영역의 가장 앞부분 포트 번호를 지정하고 두번째는 마지막 포트번호를 지
        정한다. 기본값은 시스템의 사용가능한 메모리의 양에 의해 결정이 된다:
        메모리가 128Mb 보다 많을 경우 32768-61000
        메모리가 128Mb 보다 적을 경우 1024-4999 또는 이보다 적게..
        이 값은 TCP 확장을 지원하지 않는 시스템으로 동시에 발생이 될수 있는 활성
        화된 접속들의 수를 결정한다. tcp_tw_recycle 을 가능하게 함으로서 (기본적
        으로) 1024-4999 영역은 timestamps를 지원하는 시스템들에 초당 2000개의 접
        속 정도를 가능하게 하 는데 충분하다.

        정확치는 않지만 2.4.20 이 후 부터는 커널에서 자동으로 감지를 하여 잡으므
        로 신경을 쓰지 않아도 상관이 없다.

ip_nonlocal_bind - BOOLEAN
        세팅되면 프로세스가 로컬 IP 가 아닌 주소에 bind() 할수 있다. 매우 유용한
        기능이지만 어떤 어플리케이션에서는 나쁠 수 있다.

        기본값: 0

ip_dynaddr - BOOLEAN
        0 이 아닌 값을 세팅하면 동적 주소를 (dynamic addresses) 지원한다. 1 보다
        큰 값을 세팅하면 동적주소가 다시 쓰여질 때마다 로그 메시지가 출력될 것이
        다.

        기본값: 0

icmp_echo_ignore_all - 01 연산
        이 값을 1 로 할 경우 kernel 은 모든 ICMP ECHO 요청을 무시해 버린다.
        즉 ping 이 안되게 한다.
icmp_echo_ignore_broadcasts - 01 연산
        만약 모든  ICMP ECHO  요청을 커널이 무시하게 하거나,   ICMP ECHO 요청 중
        broadcast 와 multicast 주소에만 무시하게 할때 1의 값은 무시, 0의 값은 리
        턴을 하게 된다.  만약 boardcast/multicast 주소의 ICMP ECHO 요청을 수용하
        게 한다면, network가 다른호스트로 denial of service(DOS) packet flooding
        공격을 하는데 이용이 될수가 있다.

icmp_ratelimit -  정수
        아래의 icmp_ratemask 에 지정된 BIT 와 일치하는 타입의 ICMP 패킷을 보내기
        위한 최대 빈도를 제한한다.

        0 은 제한을 없애며 그 밖의 값은 jiffies(1) 의 최대 빈도를 의미한다.

        기본값: 100

icmp_ratemask - 정수
        Mask made of ICMP types for which rates are being limited.
        Significant bits: IHGFEDCBA9876543210
        Default mask:     0000001100000011000 (6168)

        Bit 정의 (see include/linux/icmp.h):
                0 Echo Reply
                3 Destination Unreachable *
                4 Source Quench *
                5 Redirect
                8 Echo Request
                B Time Exceeded *
                C Parameter Problem *
                D Timestamp Request
                E Timestamp Reply
                F Info Request
                G Info Reply
                H Address Mask Request
                I Address Mask Reply

        * These are rate limited by default (see default mask above)

icmp_ignore_bogus_error_responses - 01 연산
        어떤 router 들은 broadcast frame 들로 거짓 응답을 보냄으로서 RFC 1122 를
        위반한다. 이러한 위한들은 보통 커널 경고를 통해 로깅이 된다. 이것을 TRUE
        로 설정을 할경우 커널은 이러한 경고를 하지 않을 것이며, 로그 파일이 지저
        분해 지는 것을 피할수 있다.

        기본값: FALSE

igmp_max_memberships - 정수
        멀티캐스트 그룹에 참여할 수 있는 최대값을 변경한다.
        기본값: 20

conf/interface/*  changes special settings per interface (where "interface" is
                  the name of your network interface)
conf/all/*        is special, changes the settings for all interfaces


log_martians - 01 연산
        불가능한 주소들을 지닌 패킷을 kerenl log 에 기록한다. IP soppfing packet
        을 체크하는데 유용하다.
        Log packets with impossible addresses to kernel log.
        log_martians for the interface will be enabled if at least one of
        conf/{all,interface}/log_martians is set to TRUE,
        it will be disabled otherwise

accept_redirects - 01 연산
        ICMP redirect message 들을 허용한다.
        기본값  TRUE (host)
                FALSE (router)
        Accept ICMP redirect messages.
        accept_redirects for the interface will be enabled if:
        - both conf/{all,interface}/accept_redirects are TRUE in the case forwarding
          for the interface is enabled
        or
        - at least one of conf/{all,interface}/accept_redirects is TRUE in the case
          forwarding for the interface is disabled
        accept_redirects for the interface will be disabled otherwise
        default TRUE (host)
                FALSE (router)

forwarding - 01 연산
        이 interface 로 IP forwarding 을 가능하게 한다.

mc_forwarding - 01 연산
        multicast routing을 가능하게 한다. 이 값을 사용하기 위해서는 커널 config
        에서 CONFIG_MROUTE 를 설정해서 빌드를 해야 하며, multicast routing 이 가
        능한 데몬이 요구되어 진다.

medium_id - 정수
        Integer value used to differentiate the devices by the medium they
        are attached to. Two devices can have different id values when
        the broadcast packets are received only on one of them.
        The default value 0 means that the device is the only interface
        to its medium, value of -1 means that medium is not known.

        Currently, it is used to change the proxy_arp behavior:
        the proxy_arp feature is enabled for packets forwarded between
        two devices attached to different media.

proxy_arp - 01 연산
        프록시 ARP는 지정한 인터페이스와 연결된 다른 호스트의 ARP 주소를 대신 뿌
        려주고, 받는다. 투명하게 동작하는 네트워크 장비에 반드시 필요하다.

shared_media - 01 연산
        RFC1620 미디어 공유 리다이렉트를 보내거나 (라우터) 수락 (호스트)한다. 이
        옵션 값이 0 이면 한 장치에 설정된 서로 다른 서브넷을 직접 통신할 수 없다.
        기본값: TRUE

secure_redirects - 01 연산
        디폴트 게이트웨이 목록에 올라있는 게이트웨이에만 ICMP 리다이렉트 메시지를
        허용한다. 기본값은 TRUE

send_redirects - 01 연산
        router 로 사용이 된다면 redirect 를 보낸다. 기본값은 TRUE 이다.
        Accept ICMP redirect messages only for gateways,
        listed in default gateway list.
        secure_redirects for the interface will be enabled if at least one of
        conf/{all,interface}/secure_redirects is set to TRUE,
        it will be disabled otherwise
        default TRUE

send_redirects - BOOLEAN
        Send redirects, if router.
        send_redirects for the interface will be enabled if at least one of
        conf/{all,interface}/send_redirects is set to TRUE,
        it will be disabled otherwise
        기본값: TRUE

bootp_relay - 01 연산
        Accept packets with source address 0.b.c.d destined
        not to this host as local ones. It is supposed, that
        BOOTP relay daemon will catch and forward such packets.

        default FALSE
        Not Implemented Yet.

accept_source_route - 01 연산
        SRR 옵션으로 패킷들을 수용한다. IP source routing 을 제어한다. 보통 호스
        트로 향하게 하는 것을 권장한다. 이 값이 참이면 패킷 경로를 출발지에서 조
        작이 가능하므로, IP 스푸핑에 악용될 소지가 있다.
        기본값  TRUE (router)
                FALSE (host)

rp_filter - 01 연산
        1 - 집에서 사용하는 싱글 호스트나 몇개의 서브넷으로 나뉘어진 네트워크 같
            이 RFC1812에 지정되어진 역경로에 의한 소스 유효성을 체크한다. 분석하
            기 어려운 네트워크에서 느리고 신뢰할 수 없는 프로토콜 또는 정적인 네
            트워크를 통해 문제를 야기할수도 있다.

            보통은 IP spoofing 을 방지하기 위해 많이 사용을 한다.

        0 - 소스 유효성 체크를 하지 않는다.

        conf/all/rp_filter must also be set to TRUE to do source validation
        on the interface

        기본값은 0 이다.  startip 스크립트에서 이를 가능하게 해 놓은 배포판도 있
        으니 주의해야 한다.

arp_filter - BOOLEAN
        1 - Allows you to have multiple network interfaces on the same
        subnet, and have the ARPs for each interface be answered
        based on whether or not the kernel would route a packet from
        the ARP'd IP out that interface (therefore you must use source
        based routing for this to work). In other words it allows control
        of which cards (usually 1) will respond to an arp request.

        0 - (default) The kernel can respond to arp requests with addresses
        from other interfaces. This may seem wrong but it usually makes
        sense, because it increases the chance of successful communication.
        IP addresses are owned by the complete host on Linux, not by
        particular interfaces. Only for more complex setups like load-
        balancing, does this behaviour cause problems.

        arp_filter for the interface will be enabled if at least one of
        conf/{all,interface}/arp_filter is set to TRUE,
        it will be disabled otherwise

tag - 정수
        Allows you to write a number, which can be used as required.
        Default value is 0.

(1) Jiffie:
커널을 위한 내부 타임유닛. i386 에서 1/100 초, 알파에서 1/1024 초이다. 알맞은 값
이 궁금하다면 /usr/include/asm/param.h 에서 HZ define을 참고한다.

Alexey Kuznetsov.
kuznet@ms2.inr.ac.ru

Updated by:
Andi Kleen
ak@muc.de
Nicolas Delon
delon.nicolas@wanadoo.fr

/proc/sys/net/ipv6/* Variables:

IPv6 has no global variables such as tcp_*.  tcp_* settings under ipv4/ also
apply to IPv6 [XXX?].

bindv6only - BOOLEAN
        Default value for IPV6_V6ONLY socket option,
        which restricts use of the IPv6 socket to IPv6 communication
        only.
                TRUE: disable IPv4-mapped address feature
                FALSE: enable IPv4-mapped address feature

        기본값: FALSE (as specified in RFC2553bis)

conf/default/*:
        Change the interface-specific default settings.

conf/all/*:
        Change all the interface-specific settings.

        [XXX:  Other special features than forwarding?]

conf/all/forwarding - BOOLEAN
        Enable global IPv6 forwarding between all interfaces.

        IPv4 and IPv6 work differently here; e.g. netfilter must be used
        to control which interfaces may forward packets and which not.

        This also sets all interfaces' Host/Router setting
        'forwarding' to the specified value.  See below for details.

        This referred to as global forwarding.

conf/interface/*:
        Change special settings per interface.

        The functional behaviour for certain settings is different
        depending on whether local forwarding is enabled or not.

accept_ra - BOOLEAN
        Accept Router Advertisements; autoconfigure using them.

        Functional default: enabled if local forwarding is disabled.
                            disabled if local forwarding is enabled.

accept_redirects - BOOLEAN
        Accept Redirects.

        Functional default: enabled if local forwarding is disabled.
                            disabled if local forwarding is enabled.

autoconf - BOOLEAN
        Configure link-local addresses using L2 hardware addresses.

        기본값: TRUE

dad_transmits - 정수
        The amount of Duplicate Address Detection probes to send.
        기본값: 1

forwarding - BOOLEAN
        Configure interface-specific Host/Router behaviour.

        Note: It is recommended to have the same setting on all
        interfaces; mixed router/host scenarios are rather uncommon.

        FALSE:

        By default, Host behaviour is assumed.  This means:

        1. IsRouter flag is not set in Neighbour Advertisements.
        2. Router Solicitations are being sent when necessary.
        3. If accept_ra is TRUE (default), accept Router
           Advertisements (and do autoconfiguration).
        4. If accept_redirects is TRUE (default), accept Redirects.

        TRUE:

        If local forwarding is enabled, Router behaviour is assumed.
        This means exactly the reverse from the above:

        1. IsRouter flag is set in Neighbour Advertisements.
        2. Router Solicitations are not sent.
        3. Router Advertisements are ignored.
        4. Redirects are ignored.

        기본값: FALSE if global forwarding is disabled (default),
                 otherwise TRUE.

hop_limit - 정수
        Default Hop Limit to set.
        기본값: 64

mtu - 정수
        Default Maximum Transfer Unit
        기본값: 1280 (IPv6 required minimum)

router_solicitation_delay - 정수
        Number of seconds to wait after interface is brought up
        before sending Router Solicitations.
        기본값: 1

router_solicitation_interval - 정수
        Number of seconds to wait between Router Solicitations.
        기본값: 4

router_solicitations - 정수
        Number of Router Solicitations to send until assuming no
        routers are present.
        기본값: 3

icmp/*:
ratelimit - 정수
        Limit the maximal rates for sending ICMPv6 packets.
        0 to disable any limiting, otherwise the maximal rate in jiffies(1)
        기본값: 100

IPv6 Update by:
Pekka Savola <pekkas AT netcore.fi>
YOSHIFUJI Hideaki / USAGI Project <yoshfuji AT linux-ipv6.org>

출처 : http://oops.org
728x90
728x90