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
작성자 : 이민호

수정일자 :
수정자 :