공유메모리 사용시 대용량할당에 관한 질문입니다.

lunarainbow의 이미지

/usr/include/linux/shm.h 화일

#define SHMMAX 0x80000000                /* max shared seg size (bytes) */
#define SHMMIN 1                         /* min shared seg size (bytes) */
#define SHMMNI 4096                      /* max num of segs system wide */
#define SHMALL (SHMMAX/PAGE_SIZE*(SHMMNI/16)) /* max shm system wide (pages) */
#define SHMSEG SHMMNI                    /* max shared segs per process */

현재 이렇게 설정 되어 있습니다.

SHMMAX 값을 2기가로 설정을 하였는데,

사용시에..


if ( ( ID = shmget(key, 0x40000000, IPC_CREAT | 0777) ) < 0 )
{
         perror("shmget");
         return -1;
}

결과 :  

shmget: Invalid argument

이렇게 나옵니다.

제가 필요로 하는 메모리 크기는 1G인데, 영... 잡히질 않습니다. :(

다른 어딘가에 설정해 주어야 하는 부분이 또 있는 것인가요?

아니면 제가 잘못 알고 있는 부분이 있는 것인가요...?

coco의 이미지

제 기억에는 커널의 값을 다시 세팅해서 커널 컴파일을 해야만 적용되는 걸로 알고 있습니다.

Jesus is Love

서지원의 이미지

/proc/sys/kernel/shmmax 에 있는 값을 바꿔주면 됩니다.

lunarainbow의 이미지

감사합니다.

찾아가 바꿔주니 바로 되네요 ^^