시스템 리소스를 질서있게 사용하려면 시스템에서 동작하는 프로세서의 자원 사용 한도를 명확하게 정해둬야한다. 마치 어린이보호 구역에서는 30km/h 이하의 속도로 달리고 고속도로에서는 100km/h로 달리도록 정해놓는 것과 같다.
리눅스 시스템에도 여러가지 자원 사용의 한계값(limit)이 정해져 있다. 시스템 리소스의 한계값에는 'soft limit'과 'hard limit'이 있다. soft limit은 프로세스가 생성되면 기본적으로 적용되는 한도 값이다. 이 값은 변경될 수 있다. hard limit은 soft limit에서 최대로 늘릴 수 있는 값으로 시스템의 수퍼 유저만 바꿀 수 있다.
리눅스 시스템에서 자원의 한계 값을 확인하고 설정할 수 있는 명령어로 ulimit을 알아둬야한다.
ulimit 조회
ulimit은 리눅스의 limit 값을 조회하고 설정할 수 있는 명령이다. ulimit 명령의 옵션과 설명은 다음과 같다.
옵션 | 설명 |
-a | 모든 제한(limit) 사항을 출력 |
-c | 최대 코어 파일 사이즈 |
-d | 프로세스 데이터 세그먼트의 최대 크기 |
-f | 쉘(Shell)에 의해 만들어질 수 있는 파일의 최대 크기 |
-H | Hard Limit 값을 출력 |
-s | 최대 스택 크기 |
-S | Soft Limit 값을 출력 |
-p | 파이프 크기 |
-n | 오픈 파일의 최대 수 |
-u | 사용자당 실행 프로세스의 최대 수 |
-v | 최대 가상 메모리의 양 |
-S 옵션을 기본값으로 별도의 명시가 없으면 soft limit 값을 출력한다.
예를 들어
ulimit -a
명령어는
ulimit -Sa
와 같다.
Hard Limit 값을 조회하기 위해서는
ulimit -Ha
를 실행하면 된다.
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 7422
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1048576
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) unlimited
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
ulimit 설정
시스템 리소스 제한 값을 적당한 값으로 조절할 수 있다.
1. ulimit 명령을 이용
시스템 리소스 제한 값을 조회했던 ulimit 명령과 옵션 뒤에 설정하려는 값을 입력하면 시스템 리소스 제한 값을 업데이트할 수 있다. 예를 들어 오픈 파일 개수 제한을 업데이트하려면
# ulimit -n 2048
이런 식으로 입력하면 된다.
2. /etc/security/limits.conf 파일 수정
시스템의 리소스 제한과 관련된 값은 /etc/securyti/limits.conf 파일에 지정할 수 있다. 이 때, 시스템 리소스 제한을 사용자 별로 지정할 수 있다.
예를 들어 실행 가능한 프로세스의 개수제한을 다음과 같이 설정할 수 있다.
#<domain> <type> <item> <value>
user soft nproc 4096
user hard nproc 4096
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
# End of file
파일에 작성 방법에 대한 간략한 설명이 나와있으니 참고하면 된다.
댓글