Skip to end of metadata
Go to start of metadata



개요 


HPUX(Hewlett Packard Unix) 운영체제(Operating System)에서 Altibase를 설치하고 운영하기 위한 커널파라미터(kernel parameter)의 적절한 설정 값 및 각종 사용자 환경 설정에 대한 가이드를 제시한다.

본 문서에서는 Altibase가 설치되기 전 설정해야 할 운영체제 관련사항에 대해서만 가이드를 제시하며 Altibase 자체 설정을 위한 Altibase 프로퍼티(properties) 설정에 관해서는 별도문서 『Altibase 설정파일 가이드』를 참조하도록 한다.

 

 

Icon

이 문서와 관련된 오류 및 개선사항은 기술지원포털 또는 기술지원센터로 문의주시기 바랍니다.

Icon

이 문서는 정보 제공을 목적으로 제공되며, 사전에 예고 없이 변경될 수 있습니다. 이 문서는 오류가 있을 수 있으며, 상업적 또는 특정 목적에 부합하는 명시적, 묵시적인 책임이 일절 없습니다.

이 문서에 포함된 Altibase 제품의 특징이나 기능의 개발, 발표 등의 시기는 Altibase 재량입니다.

Altibase는 이 문서에 대하여 관련된 특허권, 상표권, 저작권 또는 기타 지적 재산권을 보유할 수 있습니다.

 


커널 파라미터


HPUX 운영체제에서 Altibase를 운영할 경우 변경해야 할 커널파라미터의 종류와 어떤 이유로 설정을 변경해야 하는지에 대해 설명하고 커널파라미터를 변경하는 방법에 대해 소개한다.

각 커널파라미터와 관련된 상세한 사항은 HP에서 제공하는 가이드를 참조하도록 한다.


공유메모리


응용프로그램을 개발하는 경우 두 개 이상의 프로세스가 정보를 주고 받아야 할 필요성이 발생한다. 운영체제는 이를 위해 IPC (Inter Process Communication)라고 부르는 자원을 제공하고 있다. 여러 IPC 자원 중에 두 개 이상의 프로세스가 정보를 주고 받기 위해 사용되는 메모리영역을 공유메모리(shared memory)라고 부른다.

Altibase 서버와 클라이언트가 IPC 접속 방식을 사용할 경우 통신버퍼로 공유메모리를 사용하므로, 메모리를 사용하는 부분에 대한 최대크기나 세그먼트의 개수 제한 등 커널파라미터 값을 올바르게 설정해야 한다.

일반적인 유닉스 시스템에서 공유메모리와 관련된 커널파라미터 및 Altibase 권장 값은 아래와 같다.

커널파라미터

설명

권장값

shmmax

한 개의 공유메모리 세그먼트의 최대 크기

2GB+1

shmmni

시스템 내의 공유메모리 세그먼트의 최대 개수

500 이상

shmseg

한 개의 프로세스에 연결된(attached) 공유메모리 세그먼트의 최대 개수

200 이상

  • IPC_CHANNEL_COUNT : Altibase 서버로 동시에 연결할 수 있는 최대 IPC 연결 개수

 

세마포어


공유메모리와 동일하게 IPC 자원의 일종이다. 차이점은 공유메모리가 데이터를 프로세스 간에 공유하기 위한 방법으로 제공되는 반면에 세마포어는 프로세스 간의 동기화를 구현하기 위한 방법으로 운영체제에서 제공되는 자원이다.

동기화란 특정 자원이나 객체에 대해 한 시점에 하나의 프로세스만이 접근하여 변경 가능하도록 제어 하는 것을 의미한다. (뮤텍스(mutex)와 다르게 조회는 동시에 가능하다.)

Altibase는 앞에서 설명한대로 로컬 서버 내에 Altibase 서버와 클라이언트가 함께 존재할 경우 양단간의 통신버퍼로 공유메모리를 사용하는데 이때, 메모리에 대한 동시성을 제어해야 할 필요가 있다. (동시에 쓰기를 진행하면 안되기 때문이다.)

이 경우 메모리에 대한 읽기/쓰기에 대한 접근 권한의 제어를 위해 세마포어 오퍼레이션(semaphore operation)이 발생하게 된다.

세마포어 오퍼레이션에 따라 프로세스는 대기상태가 되거나 혹은 진행상태가 될 수 있다. 이러한 세마포어 오퍼레이션은 동시다발적으로 발생되기 때문에 세마포어의 개수 및 오퍼레이션에 대한 적합한 커널파라미터 설정이 필요하다.

일반적인 유닉스 시스템에서 세마포어와 관련된 커널파라미터는 아래와 같다.

커널파라미터

설명

권장값

semmni시스템 내 세마포어 세트의 최대 개수로, 하나의 세트당 84바이트의 커널메모리가 할당된다.5029

semmns

시스템 내 세마포어의 최대 개수로, 16바이트의 커널메모리가 할당된다.

8192

semmsl

한 개의 세마포어 세트에 존재하는 세마포어의 최대 개수이며 논리적으로 semmns보다 같거나 작아야 한다.

너무 크게 잡으면 몇 개의 세마포어 ID가 시스템 전체의 세마포어를 독점할 수 있다.

2000

semmnu

시스템 내의 undo structure의 최대 개수

1024

semume

한 개의 프로세스 당 undo entry의 최대 개수

512

semvmx

한 개의 세마포어의 최대값

32767

  • IPC_CHANNEL_COUNT : Altibase 서버로 동시에 연결할 수 있는 최대 IPC 연결 개수


파일캐시


본 커널파라미터는 변경이 필수적인 요소는 아니나, 적절한 파일캐시(file cache) 설정으로 Altibase가 사용하는 메모리 영역에 대한 스왑아웃(swap out) 발생요건을 억제, 스왑핑(swapping)으로 인한 운영체제 계층의 Disk I/O 지연시간이 Altibase의 성능저하로 이어지는 현상을 최소화하기 위해 권고하는 사항이다.

파일캐시란 주기억장치와 보조기억장치 간의 속도차이로 인한 병목을 해소하기 위해 운영체제 차원에서 관리되는 일종의 시스템버퍼이다. 이러한 파일캐시는 운영체제 저마다의 고유한 정책(policy)에 의하여 관리되나 공통적으로 스왑정책과 직접적인 상관관계를 가진다.

스왑핑 자체는 주기억장치보다 더 큰 응용프로그램이나 데이터 파일을 다룰 수 있게 하는 유용함을 가지고 있으나, DBMS와 같이 장기상주 형의 응용프로그램이 운영되는 시스템에서는 스왑핑으로 인한 운영체제 계층의 Disk I/O 지연시간으로 DBMS의 응답시간이 불규칙해지거나 지연되는 현상이 발생될 수 있기에 파일캐시가 시스템 용도에 따라 고려 요소가 된다.

따라서, Altibase의 일관적인 응답시간 보장을 위해서는 스왑이 최대한 발생하지 않도록 파일캐시 및 스왑 관련 커널파라미터들을 사전에 설정하는 것을 권장한다.

 

HPUX 에서의 설정


아래 커널파라미터를 통해 파일캐시를 조정하는 것을 권장한다.

커널파라미터

설명

권장값

dbc_min_pct

파일캐시의 최소 크기를 전체 메모리 대비 백분율로 제한. 기본값은 5%로 HPUX 11.31부터는 filecache_min 로 명칭이 변경됨.

5%

dbc_max_pct

파일캐시의 최대 크기를 전체 메모리 대비 백분율로 제한. 기본값은 50%로 HPUX 11.31부터는 filecache_max 로 명칭이 변경됨.

5~20%

참고로 dbc_max_pct에 대한 HP에서의 권고안은 물리메모리 크기가 8 GB 이하 시스템에서는 20%, 8 GB 이상 시스템에서는 10%를 권고하므로 이를 참고하도록 한다.


리소스 제한


HPUX 경우, 리소스 제한 항목 중 일부는 일반적으로 흔히 사용하는 ulimit을 사용한 사용자 환경설정파일 설정이 아닌 아래와 같은 커널파라미터 변경을 통하여 설정한다.

커널파라미터

설명

권장값

maxdsiz

하나의 32bit 프로세스가 할당 가능한 데이터 세그먼트 합계

2 GB

maxdsiz_64bit

하나의 64bit 프로세스가 할당 가능한 데이터 세그먼트 합계

1 TB

최대 4 TB

예측되는 Altibase 프로세스 최대 크기를 고려하여 설정

max_thread_proc

하나의 프로세스가 가질 수 있는 쓰레드 최대 개수

600 이상

maxfiles

하나의 프로세스가 동시에 오픈(open)할 수 있는 최대 파일 개수(soft-limit)

maxfiles_lim(hard-limit)까지 늘릴 수 있음.

2048 이상

nproc

시스템 내의 최대 프로세스 개수

6142

maxusers

nproc, ncallout, ninode, nfile의 기본값의 근간

124

11.23 미만에서만 해당

“maxusers”의 경우, HPUX 11.23부터는 사라졌으므로 HPUX 11.23 이상에서는 고려하지 않아도 된다. HPUX 11.23 미만에서는 “nproc” 를 직접 설정하지 않고 “maxusers”를 124로 설정하는 것으로 대체한다.


변경 방법


HPUX 경우, 커널파라미터 수정을 위해서 Tunable 커널파라미터 유틸리티(HPUX 11.11에서는 kmtune, HPUX 11.23부터는 kctune을 주로 사용) 또는 시스템의 모든 커널파라미터를 변경할 수 있는 sam이라는 유틸리티를 주로 사용한다. 여기서는 kctune을 사용한 예를 다룬다.

기본적으로 root 계정으로 접속이 필요하며 실시간으로 적용되는 커널파라미터라 할지라도 올바르게 적용하기 위해서 변경 후 시스템을 재 구동을 하는 것을 권장한다.

 

공유메모리


이전에 별도의 설정이 없었다면 공유메모리 관련 커널파라미터 변경으로 shmmni, shmseg만 변경해도 무방하다.

 

세마포어


이전에 별도의 설정이 없었다면 세마포어 관련 커널파라미터 변경으로 semmns, semmni, semmnu, semume 만 변경해도 무방하다.

 

파일캐시


dbc_max_pct의 경우, HP의 권고치의 따라 물리메모리 8GB 이하 시스템에서는 20%, 8GB 이상 시스템에서는 10%를 권고한다.

리소스 제한


위에서 언급한 리소스 제한 관련 커널파라미터를 변경하는 방법은 아래와 같다.

HPUX 11.23 미만에서는 “nproc” 를 직접적으로 설정하지 않고 “maxusers”를 124로 설정하는 것으로 대체한다.


 

사용자 환경 설정


HPUX 운영체제에서 Altibase 운영을 위한 시스템 내의 사용자 계정의 리소스 제한, 환경변수 및 각종 환경 설정에 대해 설명한다.

설정과 관련된 명령어 및 구체적인 사항은 HP에서 제공하는 가이드를 참조하도록 한다.


리소스 제한


유닉스 운영체제에서는 사용자 계정 단위로 사용 가능한 리소스에 대한 논리적인 제한 값을 설정한다. 이 리소스 제한 항목 중, 안정적인 서비스 운영을 위해 확장시켜야 하는 일반적인 항목들은 아래와 같다.

항목

설명

권장값

data seg size(data)

하나의 프로세스 데이터영역의 최대크기

unlimited

file size (fsize)

생성될 수 있는 파일의 최대크기

unlimited

open files (nofiles)

하나의 프로세스가 동시에 접근 가능한 파일의 최대개수

unlimited

max memory size (rss)

사용 가능한 메모리의 최대크기

unlimited

virtual memory (memory)

사용 가능한 가상메모리의 최대크기

unlimited

max user process

사용자 당 생성 가능한 프로세스의 개수

unlimited

리소스 제한 변경은 특정 사용자가 사용하는 메모리 및 데이터파일 영역 확장 시 물리적인 리소스가 풍부한데도 논리적인 제한으로 인해 발생할 수 있는 문제를 사전에 제거하기 위한 것이므로 해당 운영체제에서 허용하는 최대값(가능하면 unlimited)으로 설정하는 것을 권고한다.

예를 들어, open files의 의미는 프로세스가 접근하는 파일 뿐만 아니라 통신 소켓의 개수까지 포함하고 있으므로 최대 동시 접속 클라이언트 수, 동시에 사용하는 데이터파일 수, 리두로그 파일 수 및 트레이스 로그파일 수까지 고려되어야 한다.

변경방법은 ulimit 명령을 사용한 환경설정파일 편집 및 시스템 리소스 설정파일 편집 또는 해당 운영체제 별로 제공하는 커널 관련 유틸리티 활용이 있다.

 

Hard-Limit & Soft-Limit


리소스 제한 값은 hard-limit, soft-limit 이라는 개념으로 구분된다.

hard-limit은 root 계정 외에는 변경할 수 없는 커널 차원의 리소스 제한 최대값을 의미하며 soft-limit은 현재 사용자 계정 내에서 hard-limit까지 변경이 가능하다는 것을 의미한다. (상세한 내용은 ulimit –S / -H 옵션을 참고한다.)

soft-limit은 사용자가 접속을 하여 세션을 유지하는 동안 유효하며 변경을 하면 즉시 반영된다. 하지만 동일 사용자 계정의 다른 세션이 연결되면 기존의 soft-limit이 반영되기 때문에 ulimit 명령어를 사용자 계정의 환경설정파일에 추가하는 것을 권장한다.

하지만, 이러한 방법은 전역적인 hard-limit에 의해 의도한 설정이 되지 않을 수 있으므로 환경설정파일을 이용한 사용자 계정 단위 적용보다는 시스템 차원의 리소스 설정파일 편집을 통하여 체계적으로 적용하는 것을 권고한다.

단, HPUX는 시스템 차원의 리소스 설정파일이 없으므로 리소스 제한을 위한 hard-limit 변경 시 sam이나 kctune을 사용한다.


환경변수


필수로 설정해야 하는 환경변수는 아래와 같다. 아래 환경변수를 설정하고자 하는 사용자의 쉘(shell) 문법(syntax)에 따라 사용자 계정의 환경설정파일에 설정한다.

환경변수

설명

ALTIBASE_HOME

Altibase를 설치한 경로를 지정한다.

PATH

ALTIBASE_HOME/bin을 추가한다. 이 경로에 있는 바이너리 및 쉘 스크립트를 경로에 상관없이 실행하기 위한 설정이다.

LD_LIBRARY_PATH

ALTIBASE_HOME/lib을 추가한다. Altibase의 동적 라이브러리를 사용하기 위한 설정이다.

이와 더불어 HPUX에만 존재하는 아래 환경변수도 필수적으로 추가하여야 한다.

환경변수

설명

SHLIB_PATH

ALTIBASE_HOME/lib을 추가한다. 동적 라이브러리를 32비트로 링크할 경우 설정한다.

 

멀티쓰레드 응용프로그램을 위한 설정(1)


멀티쓰레드(multi-thread) 기반의 응용프로그램인 Altibase를 위해 별도 환경변수 설정이 필요하다. 참고로 본 문서에서는 대표적인 것만 언급하고, HPUX에서 지원하는 멀티쓰레드 관련 환경변수는 모두 고려할 필요가 있음을 유의해야 한다.

아래 요소는 모두 필수적인 사항이다. 그 중에서도 MxN 쓰레드모델 관련 환경변수인 PTHREAD_FORCE_SCOPE_SYSTEM는 반드시 설정하도록 한다.

환경변수

설명

비고

PTHREAD_FORCE_SCOPE_SYSTEM

쓰레드 경합(contention) 영역을 시스템으로 설정

HPUX 11.23부터 지원

PERF_ENABLE

유저 영역 sleep queue 연산 일부를 생략

HPUX 11.23만 지원

PTHREAD_FAST_SHARED_OBJECTS

Shared Object에 대한 Private 알고리즘 적용

HPUX 11.31부터 지원

PTHREAD_DISABLE_HANDOFF

다중 CPU 환경에서 적용

HPUX 11.23부터 지원

PERF_ENABLE의 경우, HPUX 11.31부터는 PTHREAD_FORCE_SCOPE_SYSTEM에 포함되므로 HPUX 11.31이상에서는 고려하지 않아도 된다. 


멀티쓰레드 응용프로그램을 위한 설정(2)


이 역시 멀티쓰레드 기반의 응용프로그램을 위한 설정으로 정해진 권장 값을 제시할 수 없는 튜닝적인 요소이나 초기에 고려되어야 하는 사항이기에 언급한다.

특정 프로세스에 대한 메모리 요구를 위해 하나의 메모리할당영역만 사용하는 운영체제에서는 멀티쓰레드 응용프로그램의 여러 쓰레드가 동시에 메모리 요청(malloc, free)을 하였을 때 잠금 연산으로 인한 경합이 발생하므로 성능저하가 발생한다.

이러한 문제를 개선하기 위해 HPUX는 아레나(arena)라 불리는 메모리할당영역을 프로세스당 최대 64개까지 제공, 아레나 간에 쓰레드를 분산하여 메모리 요청으로 인해 발생하는 잠금 경합을 감소시킬 수 있다.

아래 환경변수로 설정이 가능하다.

환경변수

설명

비고

_M_ARENA_OPTS=x:y

x: 프로세스 당 할당될 아레나 개수로

 기본값은 8이다. [범위: 1-64]

 

y: 아레나의 확장 단위로

메모리 페이지 개수로 나타내며

기본값은 32이다. [범위: 1-4096]

아레나 개수(x)가 클수록 시스템 메모리 사용량이 늘어나고 작을수록 Altibase의 성능이 저하되므로 적절한 수치로 설정 필요.

기본적으로 멀티쓰레드 응용프로그램이 아닌 경우는 설정여부와 관계없이 한 개의 아레나로 작동하며 유효하지 않은 값으로 설정할 경우, 기본값으로 동작한다.

예를 들어, 다음과 같이 설정한다면 멀티쓰레드 응용프로그램에 한하여 24개의 아레나를 할당하고 각 아레나는 확장 시 64*4KB(일반적인 메모리 페이지 크기) 단위로 증가하게 되는 것이다.

일반적으로 응용프로그램의 쓰레드 수가 많을수록 더 많은 수의 아레나를 사용해야 성능이 향상된다. 하지만, 그렇다고 해서 너무 크게 설정하면 힙(heap)영역의 단편화(fragmentation)가 발생, 비효율적인 메모리 사용으로 인해 프로세스의 사이즈가 지나치게 커져서 시스템 메모리 부족 현상이 발생할 수 있으므로 설정 시 면밀한 검토가 요구되는 사항이다.

예를 들어, 시스템의 물리 메모리 자체가 적어 메모리 부족 현상이 우려된다면 경우에 따라 단일쓰레드 응용프로그램처럼 동작하도록 1:8로 설정하기도 하며 성능저하 발생시 성능저하 원인이 메모리 요청(malloc/free)과 관련된 병목이라면 리소스 범위 내에서 값을 늘리는 것이 일반적이다. 

 

멀티쓰레드 관련 패치


Altibase는 단일 프로세스, 멀티쓰레드 기반의 응용프로그램이다. 따라서, 멀티쓰레드 관련 HPUX 패치(patch)가 필요하다. 이 중에서도 “pthread library cumulative patch”는 성능에 직접적인 영향을 끼치는 것으로 반드시 패치 유무가 확인되어야 한다.

현재 시스템의 패치리스트를 확인하는 방법은 아래와 같다.

이 외에도 HPUX 에서 알려진 각종 문제를 피하기 위해 최신 패치 적용을 권고한다. 

 

PHCO_33675 및 PHCO_34718을 적용한 경우 추가 고려사항


HPUX 11.23에서 해당 패치를 적용한 경우, 응용 프로그램에서 공유 뮤텍스(mutex)를 더 오랫동안 보관하여 성능이 저하되는 현상이 HP를 통하여 보고되었다.

패치리스트를 확인하여 해당 패치가 존재한다면 다음과 같은 환경변수를 추가, 1로 설정하여 시스템 성능을 복원하여야 한다.

환경변수

설명

비고

PTHREAD_SHARED_MUTEX_OLDSPIN

PHCO_33675, PHCO_34718 로 인한 성능저하 원복

HPUX 11.23에서만 고려


 

요약


HPUX 운영체제에서 Altibase의 안정적인 운영을 위해서는 사전에 커널파라미터 설정 및 사용자 환경 설정을 수행해야 한다. 설정을 올바르게 수행하지 않은 경우, 시스템의 리소스가 충분함에도 불구하고 각각의 제한 값들에 의해 문제가 발생 할 수 있으므로 주의해야 한다.


커널파라미터


아래 표를 참조하여 커널파라미터를 적절하게 설정하도록 한다. 참고로 HPUX에서는 리소스 제한 항목 중 일부를 커널파라미터를 변경으로 조절한다.

분류

커널파라미터

권장값

비고

공유메모리

shmmni

500 이상

> shmseg

shmseg

200 이상

 

세마포어

semmns

8192

 

semmni

5029

 

semmnu

5029

semmni

semume

5029

semmni

파일캐시

dbc_min_pct

5 이하

 

dbc_max_pct

20 이하

물리메모리 8GB 이하 시스템에서는 20% 권장, 8GB 이상 시스템에서는 10% 권장

리소스 제한

maxdsiz

2GB

data seg size에 대응 (32bit)

maxdsiz_64bit

1TB / 최대 약 4TB

data seg size에 대응 (64bit)

maxfiles

5029 이상

open files에 대응

max_thread_proc

5029 이상

 

nproc

6142

max user process 에 대응

>= semmnu + 4

maxusers

124

HPUX 11.23부터 사라짐

 

사용자 리소스 제한


아래 표를 참조하여 가능한 모두 무제한으로 설정한다.

항목

설명

권장값

data seg size(data)

프로세스 데이터영역의 최대크기

maxdsiz

maxdsiz_64bit

unlimited

file size (fsize)

생성되는 파일의 최대크기

unlimited

open files (nofiles)

하나의 프로세스가 동시에 접근 가능한 파일의 최대개수

maxfiles

unlimited

max memory size (rss)

사용 가능한 메모리의 최대크기

unlimited

max user process

사용자당 생성 가능한 프로세스의 개수

nproc

unlimited

 

사용자 환경 변수


sh, bash, ksh의 경우, 환경설정파일을 이용한 필수 환경변수 설정예제는 아래와 같다. csh의 경우는 export 대신 setenv 와 같은 쉘 명령어를 통해 설정한다.

사용자 환경변수 설정 예제

참고로 ksh의 경우, 환경변수가 미리 정의되지 않은 상태에서 환경변수를 사용하여 또 다른 환경변수를 정의 시 오류가 발생할 수 있다.

위 예제에서 “_M_ARENA_OPTS”는 단순히 기본값을 명시한 것으로, 시스템에 따라 적절하게 고려하여 설정해야 한다. 상세한 내용은 [환경변수] 섹션의 “멀티쓰레드 응용프로그램을 위한 설정(2)”를 참조하도록 한다.

이와 더불어, [멀티쓰레드 관련 패치] 섹션의 “PHCO_33675 및 PHCO_34718을 적용한 경우 추가 고려사항”도 참고한다.

 

  • No labels