커널 매개변수 수정(Linux)

루트 설치의 경우 데이터베이스 관리자가 공식을 사용하여 커널 매개변수 설정을 자동으로 조정하므로 이러한 설정에 대한 수동 갱신이 필요 없게 됩니다.

시작하기 전에

커널 매개변수를 수정하려면 루트 권한이 있어야 합니다.

프로시저

Red Hat 및 SUSE Linux®에서 커널 매개변수를 업데이트하려면 다음을 수행하십시오.

  1. ipcs -l 명령을 실행하여 현재 커널 매개변수 설정을 나열하십시오.
  2. 명령 출력을 분석하여 다음 표에 있는 적용된 최소 설정 과 현재 값을 비교하여 커널 설정을 변경해야 하는지 여부를 판별하십시오.
    IPC 커널 매개변수 적용되는 최소 설정
    kernel.shmmni (SHMMNI) 256 * <size of RAM in GB>
    kernel.shmmax (SHMMAX) <size of RAM in bytes>1
    kernel.shmall (SHMALL) 2 * < 기본 시스템 페이지 크기의 RAM 크기>2
    kernel.sem (SEMMNI) 256 * <size of RAM in GB>
    kernel.sem (SEMMSL) 250
    kernel.sem (SEMMNS) 256 000
    kernel.sem (SEMOPM) 32
    kernel.msgmni (MSGMNI) 1 024 * <size of RAM in GB>
    kernel.msgmax (MSGMAX) 65 536
    kernel.msgmnb (MSGMNB) 65 536 3
    1. 32비트 Linux 운영 체제에서 SHMMAX 에 적용되는 최소 설정은 4 294 967 295바이트로 제한됩니다.
    2. SHMALL은 시스템에 할당할 수 있는 가상 공유 메모리의 전체 양을 제한합니다. 각 Db2® 데이터 서버는 사용하는 시스템 메모리의 양 (커미트된 메모리라고도 함) 을 효율적으로 관리합니다. Db2 데이터 서버는 메모리 사전 할당 및 동적 메모리 관리를 지원하기 위해 커미트하는 것보다 더 많은 가상 메모리를 할당합니다. 메모리 사전 할당을 통해 성능을 향상시킬 수 있습니다. 동적 메모리 관리는 별도의 가상 공유 메모리 영역 내에서 실제 메모리 사용량을 늘리거나 줄이는 과정입니다. 메모리 사전 할당 및 동적 메모리 관리를 효율적으로 지원하려면 데이터 서버가 실제 RAM 양보다 많은 가상 공유 메모리를 시스템에 할당해야 합니다. 커널에서는 이 값을 페이지 수로 요구합니다.
    3. MSGMNB에서 바이트 단위로 지정된 대형 메시지 큐 크기 제한을 통해 로드 성능이 향상될 수 있습니다. ipcs -q 명령을 실행하여 메시지 큐 사용을 볼 수 있습니다. 메시지 큐가 용량 내에 있거나 용량에 도달하는 경우, 로드 조작을 수행하는 동안 메시지 큐 크기 제한 바이트 수를 늘려보십시오.
    다음 텍스트는 ipcs 명령 출력의 예로, // 이후에 매개변수 이름을 표시하는 주석이 추가되어 있습니다.
       # ipcs -l
    
       ------ Shared Memory Limits --------
       max number of segments = 4096               // SHMMNI	
       max seg size (kbytes) = 32768               // SHMMAX
       max total shared memory (kbytes) = 8388608  // SHMALL
       min seg size (bytes) = 1
    
       ------ Semaphore Limits --------
       max number of arrays = 1024                 // SEMMNI
       max semaphores per array = 250              // SEMMSL
       max semaphores system wide = 256000         // SEMMNS
       max ops per semop call = 32                 // SEMOPM
       semaphore max value = 32767
    
       ------ Messages: Limits --------
       max queues system wide = 1024               // MSGMNI
       max size of message (bytes) = 65536         // MSGMAX
       default max size of queue (bytes) = 65536   // MSGMNB
    • 공유 메모리 한계의 첫 번째 섹션부터 SHMMAX 한계는 Linux 시스템에서 공유 메모리 세그먼트의 최대 크기입니다. SHMALL 한계는 시스템에 있는 공유 메모리 페이지의 최대 할당입니다.
      • SHMMAX 값을 시스템의 실제 메모리 양과 동일하게 설정하는 것이 좋습니다. 하지만 x86 시스템에 필요한 최소량은 268435456(256MB)이고 64비트 시스템의 경우에는 1073741824(1GB)입니다.
    • 다음 섹션에서는 운영 체제에 사용 가능한 세마포어 양에 대해 다룹니다. 커널 매개변수 sem 는 네 개의 토큰, SEMMSL, SEMMNS, SEMOPMSEMMNI로 구성됩니다. SEMMNSSEMMSLSEMMNI를 곱한 결과입니다. 데이터베이스 관리자에서는 필요에 따라 배열 수 (SEMMNI) 를 늘려야 합니다. 일반적으로 SEMMNI 는 시스템에서 예상되는 최대 에이전트 수에 데이터베이스 서버 컴퓨터의 논리 파티션 수와 데이터베이스 서버 컴퓨터의 로컬 애플리케이션 연결 수를 곱한 값의 두 배여야 합니다.
    • 세 번째 섹션에서는 시스템에 대한 메시지에 대해 다룹니다.
      • MSGMNI 매개변수는 시작할 수 있는 에이전트 수에 영향을 미칩니다. MSGMAX 매개변수는 큐에서 전송할 수 있는 메시지의 크기에 영향을 미치며, MSGMNB 매개변수는 큐의 크기에 영향을 미칩니다.
      • MSGMAX 매개변수를 64KB(즉, 65536바이트)로 변경하고, MSGMNB 매개변수를 65536으로 늘려야 합니다.
  3. /etc/sysctl.conf 파일을 편집하여 조정해야 하는 커널 매개변수를 수정하십시오. 이 파일이 존재하지 않으면 파일을 작성하십시오.
    다음 행은 파일에 삽입해야 할 매개변수에 대한 예입니다.
    #Example for a computer with 16GB of RAM:
    kernel.shmmni=4096
    kernel.shmmax=17179869184
    kernel.shmall=8388608
    #kernel.sem=<SEMMSL> <SEMMNS> <SEMOPM> <SEMMNI>
    kernel.sem=250 1024000 32 4096
    kernel.msgmni=16384
    kernel.msgmax=65536
    kernel.msgmnb=65536
  4. -p 매개변수를 사용하여 sysctl 를 실행하여 기본 파일 /etc/sysctl.conf에서 sysctl 설정을 로드하십시오.
       sysctl -p
  5. 선택사항: 재부팅할 때마다 변경사항이 지속되도록 하십시오.
    • (SUSE Linux) boot.sysctl 를 활성화하십시오.
    • (Red Hat) rc.sysinit 초기화 스크립트는 /etc/sysctl.conf 파일을 자동으로 읽습니다.