티스토리 뷰
http://man7.org/linux/man-pages/man2/getrlimit.2.html
시스템의 리소스 제한값을 보거나 설정하는 것은 아래 함수를 통해 할 수 있다.
설정이 필요한 프로그램 실행전에 명령으로 설정을 매번 바꿔줘야 한다는 것이다.
#include <sys/time.h>
#include <sys/resource.h>
struct {
rlim_t rlim_cur; // soft
rlim_t rlim_max; // hard
};// rlim_cur 설정하고자 하는 값
// rlim_max 설정 가능한 최대값
int getrlimit(int resource, struct rlimit *rlim);
int setrlimit(int resource, const struct rlimit *rlim);
[출처] 시스템 자원 값 얻어오기(getrlimit, setrlimit)|작성자 임성수
리소스 제한 값에는 soft limit과 hard limit 두가지가 있는데, soft limit는 hard limit 한도내에서 자유롭게 변경할 수 있다.
각 값들은 0인 경우 disable이고, RLIM_INFINITY(-1) 인 경우 무한대이다. limit 값들의 flag 이름들은 아래와 같다.
- RLIMIT_AS : 가상 주소 공간 제한 제한
- RLIMIT_CORE : 코어파일 크기
- RLIMIT_CPU : 최대 CPU 사용시간
- RLIMIT_DATA : data segment 크기 제한
- RLIMIT_FSIZE : File size
- RLIMIT_LOCKS : 최대 File Lock 개수
- RLIMIT_MEMLOCK : CPY_SYS_IPC 설정없이 mlock(), shmctl()등으로 가질수 있는 메모리 크기
- RLIMIT_MSGQUEUE : massage queue 크기
- RLIMIT_NICE
- RLIMIT_NOFILE : fd갯수 제한
- RLIMIT_NPROC : user가 돌릴 수 있는 process 수 제한
- RLIMIT_RSS : maximun number of pages // 커널 2.4 에서만 효력
- RLIMIT_RTPRIO
- RLIMIT_SIGPENDING : 최대로 queue될 수 있는 signal갯수
- RLIMIT_STACK : 프로세스 스택 크기 제한
이러한 값들을 가지고 설정하거나, 값을 확인하는 코드 예는 아래와 같다.
struct rlimit rlim;
int ret;
// get RLIMIT_CORE value
ret = getrlimit(RLIMIT_CORE, &rlim);
if (ret == -1) perror("getrlimit"), return 1;
printf ("RLIMIT_CORE sft(%ld), hrd(%ld)\n", rlim.rlim_cur, rlim.rlim_max);
// set RLIMIT_CORE value
rlim.rlim_cur = 32 * 1024 * 1024;
rlim.rlim_max = RLIM_INFINITY;
ret = setrlimit(RLIMIT_CORE, &rlim);
if (ret == -1) perror("setrlimit"), return 1;[출처] 시스템의 리소스 제한값을 보거나 설정하는 방법|작성자 쿵야
'Linux' 카테고리의 다른 글
Embedded system을 위한 linux 최적화 기술 (0) | 2014.08.20 |
---|---|
clock_gettime (0) | 2014.08.11 |
[Linux] Memory (0) | 2014.01.22 |
[Linux] Process (0) | 2014.01.22 |
[Linux] fork, vfork 그리고 posix_spawn 이야기 (0) | 2014.01.22 |