UNIX/Redhat

[스크랩] 커널 파라미터 값 변경

99iberty 2014. 2. 12. 11:32

 

http://blog.cafe24.com/1940

 

1. 커널 파라미터 확인

 

- 커널 파라미터 확인은 sysctl -a 명령으로 할 수 있다. sysctl -a 명령의 경우 모든 파라미터들이 출력되기 때문에
원하는 파라미터 값을 찾으려면 sysctl -a | grep xxx 으로 원하는 값을 찾을 수 있다.

 

[root@localhost ~]# sysctl -a
bus.vmbus.vmbus_loglevel = 522125318
crypto.fips_enabled = 0
abi.vsyscall32 = 1
dev.parport.default.spintime = 500
dev.parport.default.timeslice = 200
dev.scsi.logging_level = 0
dev.raid.speed_limit_max = 200000
dev.raid.speed_limit_min = 1000
dev.hpet.max-user-freq = 64
dev.rtc.max-user-freq = 64
debug.exception-trace = 1
debug.kprobes-optimization = 1
net.unix.max_dgram_qlen = 10
net.token-ring.rif_timeout = 600000
net.ipv4.conf.seth0.promote_secondaries = 0
net.ipv4.conf.seth0.force_igmp_version = 0
net.ipv4.conf.seth0.disable_policy = 0
net.ipv4.conf.seth0.disable_xfrm = 0
~
fs.quota.reads = 0
fs.quota.drops = 0
fs.quota.lookups = 0
fs.suid_dumpable = 0
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_watches = 8192
fs.inotify.max_user_instances = 128
fs.aio-max-nr = 65536
fs.aio-nr = 0
fs.lease-break-time = 45
fs.dir-notify-enable = 1
fs.leases-enable = 1
fs.overflowgid = 65534
fs.overflowuid = 65534
fs.dentry-state = 31413 29432 45 0 0 0
fs.nr_open = 1048576
fs.file-max = 49308
fs.file-nr = 510 0 49308
fs.inode-state = 36128 8323 0 0 0 0 0
fs.inode-nr = 36128 8323
fs.binfmt_misc.status = enabled

[root@localhost ~]# sysctl -a | grep icmp_echo
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_echo_ignore_all = 0
[root@localhost ~]#

 


2. /proc 디렉토리에서 파라미터 값 수정


- 커널 파라미터 수정은 아래와 같이 /proc 디렉토리에서 해당 값을 바꿔 주거나 sysctl -w 명령으로 변경할 수 있다.
하지만, 이 두가지 방법은 시스템이 리부팅 될 경우 초기화 된다.

 

[root@localhost ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
0
[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
[root@localhost ~]# cat /proc/sys/net/ipv4/icmp_echo_ignore_all
1
[root@localhost ~]# sysctl -a | grep icmp_echo
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_echo_ignore_all = 1
[root@localhost ~]#

[root@localhost ~]# sysctl -w net.ipv4.icmp_echo_ignore_all=0
net.ipv4.icmp_echo_ignore_all = 0
[root@localhost ~]# sysctl -a | grep icmp_echo
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_echo_ignore_all = 0
[root@localhost ~]#

 


3. sysctl.conf 파일에서 파라미터 수정

 

- /proc 디렉토리에서 변경하는 방법은 시스템 리부팅시 초기화 되기 때문에, 영구적으로 적용을 하기 위해서는 sysctl.conf 파일에 해당 파라미터 값을 추가해서 적용해야 한다.
기본추가되어 있는 파라미터 값 이외의 파라미터를 수정하기 위해서는 해당 파라미터 값을 파일 하단에 추가한다.
파라미터 종류와 현재 설정된 파라미터 값은 sysctl -a 로 확인 한다.

 

- /etc/sysctl.conf 파일 하단에 아래와 같은 형식으로 파라미터 값 추가.

 

net.core.wmem_default = 4194304
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 1024 65000

 


4. 수정된 사항 적용하기

 

- /etc/sysctl.conf 파일 수정후 적용하기 위해서는 아래와 같이 sysctl -p 옵션으로 명령을 실행한다.

 

[root@localhost ~]# sysctl -p
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.core.wmem_default = 4194304
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
fs.file-max = 6815744
fs.aio-max-nr = 1048576
net.ipv4.ip_local_port_range = 1024 65000
[root@localhost ~]#

 

 

값이 하나가 아니라 여러개라 하더라도 당황하지 말고 걍 추가하면 된다.

http://jmnote.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_kernel.sem_%EC%84%A4%EC%A0%95

kernel.sem을 찾아서 값을 수정한다.

#kernel.sem = 250 32000 32 128
kernel.sem = 1000 32000 100 512

이런 식으로 ㅋ

전체 내용은 아래 참조.

 

 

현재 설정값 확인방법 1
[root@localhost ~]# ipcs -l
------ Shared Memory Limits --------
max number of segments = 4096
max seg size (kbytes) = 4294967296
max total shared memory (kbytes) = 4294967296
min seg size (bytes) = 1
------ Semaphore Limits --------
max number of arrays = 128
max semaphores per array = 250
max semaphores system wide = 32000
max ops per semop call = 32
semaphore max value = 32767
------ Messages: Limits --------
max queues system wide = 2878
max size of message (bytes) = 8192
default max size of queue (bytes) = 65536
현재 설정값 확인방법 2
[root@localhost ~]# cat /proc/sys/kernel/sem
250     32000   32      128
  • SEMMSL: 배열당 최대 세마포어 수 (max semaphores per array)
  • SEMMNS: 시스템 전체 최대 세마포어 수 (max semaphores system wide)
  • SEMOPM : 세마포어 호출당 최대 operation 수 (max ops per semop call)
  • SEMMNI: 최대 배열 수(max number of arrays)[1]
부팅시 설정값 확인
[root@localhost ~]# grep kernel.sem /etc/sysctl.conf
kernel.sem = 250 32000 32 128

일시 변경

sysctl -w kernel.sem="1000 32000 100 512"

재부팅되면 /etc/sysctl.conf에 기록된 값으로 초기화된다.

영구 변경

sysctl.conf 파일을 수정한다.

vi /etc/sysctl.conf

kernel.sem을 찾아서 값을 수정한다.

#kernel.sem = 250 32000 32 128
kernel.sem = 1000 32000 100 512

재부팅한다.