Subject : C Shell에서의 System Resource 제한
Description :
limit Command는 Shell Command이기 때문에 Shell마다 용법이 틀릴 수 있다.
여기서는 csh에 대해서만 알아보겠다.
Shell 또는 Process에 대해 system resource를 제한할 수 있다.
예를 들면 Process당 최대 Cpu Time(cputime),
Open되는 file의 최대 Size(filesize),
data size 또는 heap size(datasize),
stack size(stacksize), coredumpsize,
한 process가 동시에 Open할 수 있는 file수(descripters),
virtual memory size(memorysize)등이 있다.
Program을 수행하다보면 위와같은 Resource의 제한의 크기를 조정할 수 있다.
제한하는 방법은 limit command에 의한 방법과 system parameter에 의한 방법이
있다.
먼저 limit Command에 대해 알아 보자.
option을 주지 않으면 soft limit, -h option을 주면 hard limit이다.
soft limit는 hard limit 범위를 초과할 수 없다. hard limit는 super user에서
만이 허용된다.
# limit [-h] <== 현재의 limit 값을 보수 있다.
# limit [-h] descriptors 128 <== descripter limit 값 변경
# unlimit [-h] descripter <== 현재 limit 값을 해제, 즉 무제한이 된다.
limit는 현재의 Shell과 그것의 Child process에 전승된다.
다음은 예를들어 system parameter에 의해서 file descripter limit를
수정하는 방법을 알아보겠다.
rlim_fd_max=0x90 descripter hard limit
rlim_fd_cur=0x80(128) descripter soft limit
다음은 /etc/default/login file에서 filesize를 제한하는 방법이 있다.
# vi /etc/default/login
...
# ULIMIT sets the file size limit for the login. Units are disk blocks.
# The default of zero means no limit.
#
#ULIMIT=0
...
이상 program resource limit에 대해 알아보았다. 그러나 여기서 주의할점은
각 resource별로 무한정 제한할 수 없다는 점이다. 예를 들면 descripter는
1024, datasize 또는 stacksize는 2giga등이 제한이다.
다음 "lmh036"에서 Program으로 limit를 줄수 있는 방법을 기술하겠다.
Revision History
작성일자 : 96.11.13
작성자 : 이민호
수정일자 :
수정자 :