사용 및 관리
TDL을 사용하기 위해서는 TDL 환경설정을 반드시 해야 하며, 암시적 버전 보호 기능을 사용하려면 Tmax 환경설정을 해야 한다. 본 장에서는 각 환경설정 방법과 툴의 사용법에 대해서 설명한다.
1. 디렉터리 구성
TDL 디렉터리는 다음의 하위 디렉터리로 구성된다.
디렉터리 | 설명 |
---|---|
config |
TDL 환경 파일(tdl.cfg)을 위한 디렉터리이다. RACFILE 파라미터의 기본적인 위치 또한 config 디렉터리를 사용한다. |
mod |
업데이트할 라이브러리를 위한 디렉터리이다. 업데이트할 공유 라이브러리(*.so 또는 *.sl)를 mod 디렉터리에 복사한 후 tdlupdate를 수행해야 한다. |
run |
tdlupdate 후 버전이 부연된 라이브러리들을 위한 디렉터리이다. 이곳에는 시스템에서 내부적으로 사용하는 파일도 존재하므로 사용자가 임의로 삭제하면 안 된다. |
$TDLDIR은 TDL의 루트 경로로 특별히 지정하지 않을 경우 $TMAXDIR 환경변수에 설정된 경로를 사용한다. 만일 경로를 다르게 지정하려면 $TDLDIR 환경변수를 설정해야 한다. 또한, 로컬 클라이언트에서 TDL을 사용하려면 $TDLDIR을 반드시 지정해야 한다. TDL 2.x 버전에서는 config가 아닌 $TDLDIR에 tdl.cfg가 존재해야 한다. |
2. 환경설정
TDL을 사용하기 위해서 TDL 환경설정 파일과 Tmax에 TDL 관련 항목의 환경을 설정해야 한다.
환경설정의 기본적인 문법은 "파라미터=값"이고 라인 내에 공백은 허용되지 않는다. 또한 라인의 첫 번째 문자가 '#'인 경우 해당 라인은 주석 처리된다.
2.1. TDL 환경설정
TDL 환경설정 파일은 $TMAXDIR/config/tdl.cfg로 다음은 TDL 환경 파일의 예제와 항목에 대한 설명이다.
# shared memory version (1|2|3|4) VERSION=2 # shared memory key SHMKEY=0x90000 # shared memory and file creation permission IPCPERM=0750 # number of dynamic loadable modules, rouded up to powers of 2 MAXMODULES=256 # shared memory backup BACKUP=log/dlog/tdl.bak # path of a command file for searching export functions #COMMAND=tdlcmd # running mode (single|master|slave) MODE=single # mornitoring statistics MONITOR=Y # language of tdl application [C | COBOL | IBMCOBOL | PL1 | MIXED] LANG=C # path of a file including addresses for accessing remote tdl nodes #RACFILE=tdl.rac # tdl domain ID DOMAINID=1 # multiple run, mod dir DIRMAPPINGLIST=(mod:run),(mod2:run2),(mod2:run2) # HASHFUNC=[ LOOKUP2 | LOOKUP3 | SUPERFASTHASH | TDLHASH | MURMURHASH ] # HASHFUNC=MURMURHASH MASTERNODENO=0 COPY=[ cp | mmap | self ] # compare to glosebal sequence number GSEQNOTIME=Y
항목 | 설명 |
---|---|
VERSION |
TDL 운영을 위한 버전을 설정한다. 1, 2, 3, 4 중 선택해야 한다. (기본값: 1) 자세한 내용은 "VERSION 항목"의 설명을 참고한다. |
SHMKEY |
TDL 운영에 사용되는 공유 메모리 키값을 설정한다. |
IPCPERM |
run 디렉터리의 동적 모듈 및 공유 메모리의 권한을 설정한다. |
MAXMODULES |
동적 모듈의 최대 개수이다. 2^n으로 올림되어 사용된다. 모듈의 재배치 없이 변경 가능하다. 자세한 내용은 예제를 참고한다. |
BACKUP |
공유 메모리 백업 파일을 지정한다. tdlinit, tdlupdate를 실행할 때 자동으로 공유 메모리가 지정한 파일로 백업된다. 상대 경로일 경우 $TDLDIR 또는 $TMAXDIR에서 경로가 시작된다. 경로 정보의 $TDLDIR이 우선한다. |
COMMAND |
라이브러리에서 export할 함수를 자동 추출하기 위한 스크립트 파일의 위치를 지정한다. 상대 경로일 경우 $TDLDIR/config 또는 $TMAXDIR/config에서 경로가 시작된다. 경로 정보의 $TDLDIR이 우선한다. |
MODE |
멀티 노드 또는 도메인 환경에서 다음 하나를 설정한다.
|
MONITOR |
TDL 통계 정보를 수집할지 여부(Y│N)를 설정한다. (기본값: N )
다음의 명령어로 활성화해야 사용 가능하다. tdlshm -s e |
LANG |
TDL 애플리케이션이 사용하는 언어를 C, COBOL, IBMCOBOL, PL1, MIXED 중 선택하여 설정한다. 선택하지 않을 경우에는 C로 설정되며, 모듈의 확장자는 OS에 따라 결정된다. |
RACFILE |
멀티 노드 혹은 도메인 환경에서 모든 노드의 racd 주소를 가지고 있는 파일을 지정한다. 상대 경로일 경우 $TDLDIR/config 또는 $TMAXDIR/config에서 경로가 시작된다. 경로 정보의 $TDLDIR이 우선한다. RACFILE에 대한 예는 "RACFILE 예제"를 참고한다. |
DOMAINID |
TDL 도메인에 대한 ID로 도메인마다 반드시 다르게 설정해야 한다. (기본값: 0) |
DIRMAPPINGLIST |
run 디렉터리를 2개 이상 사용할 경우에 설정한다. mod와 run 디렉터리의 쌍을 괄호와 콜론(:)으로 구분하여 최대 10쌍까지 설정할 수 있다. (Tmax 5 SP1 Fix#2부터 적용) |
HASHFUNC |
TDL에서 내부적(각 모듈의 인덱스 설정)으로 사용되는 HASH의 종류를 선택하여 설정할 수 있다. (Tmax 5 SP2부터 적용) |
CUSTOMCMD |
IBM 플랫폼 특성상 nm으로 전역 변수까지 검색이 된다. CUSTOMCMD=Y로 설정한 경우 tdlinit, tdlupdate로 명령어를 수행하는 경우 전역변수를 등록하지 않는다. |
MASTERNODENO |
멀티 노드 환경에서 마스터 노드의 번호를 지정한다. 모든 노드의 환경설정 파일에 반드시 기입해야 한다. 이를 설정하면 마스터 노드가 아닌 노드에서도 tdlupdate가 수행 가능하다. |
COPY |
tdlcall 내부적으로 수행하는 파일 복사 방식을 결정한다.
|
GSEQNOTIME |
|
VERSION 항목
TDL에서는 현재 4가지 VERSION의 형태로 시스템을 운영할 수 있다. VERSION 값은 TDL 환경 파일(tdl.cfg)의 VERSION 파라미터를 통해서 설정할 수 있다.
-
VERSION 1
VERSION=1로 설정하는 경우로 라이브러리당 하나의 함수만을 가질 수 있다. 함수명 역시 라이브러리명과 일치해야 한다. 단, 함수명은 전체적으로 유일해야 한다.
-
VERSION 2
VERSION=2로 설정하는 경우로 라이브러리가 여러 개의 함수를 가질 수 있다. 단, export할 함수에 대해서는 다음과 같은 방법을 지원한다. 단, 함수명은 전체적으로 유일해야 한다.
-
export 파일 지정 방법
mod 디렉터리에 export 파일(라이브러리명.exp)을 두어 해당 라이브러리에서 export할 함수를 사용자가 명시한다. 자동 추출을 사용할 경우 의도하지 않은 함수들이 export될 수 있으므로 이 방식을 사용할 것을 권장한다.
export 파일은 라인당 하나의 함수를 명시한다. 라인의 첫 번째 문자가 '#'인 경우는 그 라인을 주석으로 처리한다.
사용 예는 다음과 같다.
# mylibrary myfunction1 myfunction2 myfunction3
-
export 함수 자동 추출 방법
export할 함수를 자동 추출한다. export 파일을 지정하지 않을 경우 함수는 자동 추출된다. 내부적으로 nm이 사용되며, 사용자가 nm 스크립트를 재정의할 수 있다. 스크립트는 반드시 하나의 라인으로 작성해야 한다. '#'이 라인 처음에 위치하면 그 라인을 주석으로 처리하며, '\'가 라인 마지막에 위치하면 다음 라인과 이어지는 것으로 처리한다. "$(LIB)"은 라이브러리명을 나타내는 매크로 변수이다.
사용 예는 다음과 같다.
# for HP32 nm $(LIB) | awk -F"|" '{if ($3 == "extern" && $4 == "code ") {print $1}}' | grep -ve "^_" # for HP64 nm $(LIB) | awk -F"|" '{if ($4 == "FUNC " && $7 == " .text") {print $8}}' | grep -ve "^_" # for IBM32 nm $(LIB) | awk '{if ($2 == "D") {print $1}}' # for IBM64 nm -X64 $(LIB) | awk '{if ($2 == "D") {print $1}}' # for SUN nm $(LIB) | awk -F"|" '{if ($4 == "FUNC ") {print $8}}' | grep -v "^_" # for linux nm $(LIB) | awk '{if ($2 == "T") {print $3}}' | grep -v "^_" (*단, 위 스크립트는 단지 예시일 뿐이며, 실제 플랫폼에 따라 수정이 필요함)
위 스크립트는 TDL 환경 파일(tdl.cfg)의 COMMAND 파라미터를 사용하거나, 관리 툴에서 –x 옵션을 사용하여 이용할 수 있다. 또한, 시스템에서 자동 추출되는 함수에 대해서는 tdlnm을 통해서 미리 확인할 수 있다.
-
-
VERSION 3
VERSION=3으로 설정하는 경우로 라이브러리명과 함수명을 키로 사용한다. 따라서, VERSION 1, 2와 달리 함수명은 라이브러리 내에서만 유일하면 된다. 단, VERSION 3을 사용할 경우, tdlcall2(), tdlcall2v(), tdlcall2s()를 사용해야 한다.
-
VERSION 4
VERSION=4로 설정하는 경우로 라이브러리명과 클래스네임 네임스페이스를 사용한다. C++에서 사용하는 방식으로, tdlcall이 아닌 별도의 인터페이스를 이용한다. 자세한 내용은 예제를 참고한다.
RACFILE 예제
다음과 같이 설정된 파일을 '.rac' 확장자로 저장하고 RACFILE 항목에 해당 파일명을 설정한다.
hostname1 192.168.1.1 3333 hostname2 192.168.1.2 3333 hostname3 192.168.1.3 3333
3. 시스템 관리 툴
TDL에서는 다음과 같은 관리 툴을 제공한다. 관리 툴은 다음 경로에 위치한다.
$TMAXDIR/bin
명령어 | 설명 |
---|---|
TDL 공유 메모리 및 동적 모듈 초기화를 수행한다. |
|
run 디렉터리의 구버전 라이브러리 파일이나 불필요한 파일을 정리한다. |
|
지정한 라이브러리에 대한 자동 export될 함수 목록을 조회한다. |
|
TDL을 더 이상 사용하지 않을 경우에 공유 메모리를 완전히 제거한다. |
|
TDL 공유 메모리 정보를 조회하거나, 통계 모니터링 활성화 여부 및 모듈 활성화 여부를 설정한다. |
|
TDL 공유 메모리와 백업 파일 동기화를 수행한다. |
|
지정한 동적 모듈을 업데이트한다. |
|
동적 모듈의 시퀀스 번호를 조회한다. |
|
TDL 환경 설정 정보와 통계 정보를 조회한다. |
3.1. tdlinit
TDL 공유 메모리 및 동적 모듈을 초기화하는 명령어이다. tdlinit은 설치될 때 단 한 번만 수행하며 Tmax를 부팅하기 전에 수행해야 한다. 멀티 노드 환경인 경우 마스터 노드에서만 수행 가능하다.
다음은 명령어 사용법에 대한 설명이다.
-
사용 방법
$ tdlinit [-p TDL 루트 디렉터리 경로] [-x export 함수 추출 스크립트 파일 경로] [-f] [-b] [-B 백업 파일 경로] [-i] [-v | -V] [-h]
항목 설명 [-p TDL 루트 디렉터리 경로]
TDL 루트 디렉터리는 ${TDLDIR} 또는 ${TMAXDIR}을 사용한다.
루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.
[-x export 함수 추출 스크립트 파일 경로]
export 함수 추출을 위한 스크립트 파일 경로를 지정한다.
[-f]
공유 메모리가 이미 존재할 경우 강제로 초기화한다.
[-b]
백업 파일로부터 공유 메모리를 복구한다.
[-B 백업 파일 경로]
지정된 백업 파일로부터 공유 메모리를 복구한다.
[-i]
백업 복구 후 run 디렉터리를 체크한다. [-b] 또는 [-B] 옵션과 함께 사용한다.
[-v|-V]
버전 정보를 출력한다.
[-h]
사용법을 출력한다.
-
예제
-
다음은 TDL 환경 파일(tdl.cfg)을 참조하여 공유 메모리 및 모듈을 초기화하는 예제이다.
$ tdlinit
-
다음은 장비 장애 또는 재시작할 경우 백업 파일로부터 공유 메모리를 복구하는 예제이다.
$ tdlinit -b
-
-
참고
VERSION=4로 설정한 경우에는 export 함수 추출을 위한 스크립트 파일이 반드시 필요하다.
/* Example of exp file */ /* dlib.exp */ #! dlib.so TmaxSoft::Airplain Car
3.2. tdlclean
run 디렉터리의 구버전 라이브러리 파일이나 불필요한 파일을 정리하는 명령어이다. 특히, [-m] 옵션 또는 [-M] 옵션을 사용하면 공유 메모리에서 지정한 동적 모듈이 완전히 삭제된다.
다음은 명령어 사용법에 대한 설명이다.
-
사용 방법
$ tdlclean [-p TDL 루트 디렉터리 경로] [-m 라이브러리명] [-M 함수명] [-b] [-d yyyymmddhhmi] [-D “n hour|day” [-N 개수] [-v | -V] [-h] [-f]
항목 설명 [-p TDL 루트 디렉터리 경로]
TDL 루트 디렉터리는 ${TDLDIR} 또는 ${TMAXDIR}을 사용한다.
루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.
[-m 라이브러리명]
TDL 공유 메모리에서 지정한 라이브러리와 run 디렉터리에 파일을 삭제한다.
[-M 함수명]
공유 메모리에서 지정한 함수만 삭제하며, run 디렉터리의 관련 파일은 삭제하지 않는다. 단, VERSION=1로 설정된 경우는 [-m] 옵션과 동일하게 동작한다.
[-b]
TDL 환경 파일(tdl.cfg)에 BACKUP 파라미터가 지정되어 있더라도, 공유 메모리 파일 백업을 수행하지 않는다. [-m] 또는 [-M] 옵션과 함께 사용한다.
[-d yyyymmddhhmi]
지정한 시각(yyyymmddhhmi) 이전의 구버전 라이브러리 파일을 모두 삭제한다. [-m] 또는 [-M] 옵션과 함께 사용할 수 없다.
[-D “n hour|day”]
n은 시간(hour) 또는 일(day)을 설정한다. 지정한 시간 또는 일 이전의 구버전 라이브러리 파일을 모두 삭제한다. [-m] 또는 [-M] 옵션과 함께 사용할 수 없다.
[-N 개수]
지정한 개수(number)만큼의 구버전 라이브러리 파일을 남기고 나머지 구버전 파일을 모두 삭제한다. [-m] 또는 [-M] 옵션과 함께 사용할 수 없다.
[-v|-V]
버전 정보를 출력한다.
[-h]
사용법을 출력한다.
[-f]
run에 있는 라이브러리 정보를 힙 메모리에 모두 등록한 후 한번에 TDL 공유 메모리에 있는 최신 라이브러리의 함수들과 비교한다.
[-f] 옵션 사용으로 성능향상을 기대할 수 있다. [-N], [-m], [-M] 옵션과 함께 사용할 수 없다.
-
예제
-
다음은 구버전 라이브러리 파일을 삭제하는 예제이다.
$ tdlclean
-
다음은 2009년 2월 1일 00시 00분 이전의 구버전 라이브러리 파일을 삭제하는 예제이다.
$ tdlclean –d 200902010000
-
다음은 5일 이전의 구버전 라이브러리 파일을 삭제하는 예제이다.
$ tdlclean -D "5 day"
-
다음은 mylibrary를 TDL 공유 메모리에서 완전히 제거하고 구버전 파일들도 삭제하는 예제이다.
$ tdlclean -m mylibrary
-
3.3. tdlnm
VERSION=2 이상에서 지정한 라이브러리에 대한 자동 export될 함수 목록을 조회하는 명령어이다.
다음은 명령어 사용법에 대한 설명이다.
-
사용 방법
$ tdlnm [-p TDL 루트 디렉터리 경로] [-x export 함수 추출 스크립트 파일 경로] [-m 라이브러리명] [-v | -V] [-h]
항목 설명 [-p TDL 루트 디렉터리 경로]
TDL 루트 디렉터리는 ${TDLDIR} 또는 ${TMAXDIR}을 사용한다.
루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.
[-x export 함수 추출 스크립트 파일 경로]
export 함수 추출을 위한 스크립트 파일 경로를 지정한다.
[-m 라이브러리명]
자동 export 함수 목록 조회를 위한 라이브러리명을 지정한다.
[-v|-V]
버전 정보를 출력한다.
[-h]
사용법을 출력한다.
-
예제
다음은 mylibrary 파일의 export 함수 목록을 조회하는 예제이다.
$ tdlnm -m mylibrary
3.4. tdlrm
TDL을 더 이상 사용하지 않을 경우에 공유 메모리를 완전히 제거하기 위한 명령어이다. tdlrm을 할 경우 tdlcall()을 사용할 수 없다.
다음은 명령어 사용법에 대한 설명이다.
-
사용 방법
$ tdlrm [-p TDL 루트 디렉터리 경로] [-v | -V] [-h]
항목 설명 [-p TDL 루트 디렉터리 경로]
TDL 루트 디렉터리는 ${TDLDIR} 또는 ${TMAXDIR}을 사용한다.
루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.
[-v|-V]
버전 정보를 출력한다.
[-h]
사용법을 출력한다.
-
예제
다음은 TDL 공유 메모리를 삭제하는 예제이다.
$ tdlrm
3.5. tdlshm
TDL 공유 메모리 정보를 조회하거나, 통계 모니터링 활성화 여부 및 모듈 활성화 여부를 설정하는 명령어이다.
다음은 명령어 사용법에 대한 설명이다.
-
사용 방법
$ tdlshm [-p TDL 루트 디렉터리 경로] [-r] [-S] [-n 노드명] [-m 함수명] [-M 라이브러리명] [-C] [-c start_index end_index] [-s e|d|r] [-u e|d] [-I 최소충돌횟수] [-v | -V] [-h]
항목 설명 [-p TDL 루트 디렉터리 경로]
TDL 루트 디렉터리는 ${TDLDIR} 또는 ${TMAXDIR}을 사용한다.
루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.
[-r]
멀티 노드 환경에서 업데이트 동기화 중인 모듈 정보를 조회한다.
[-S]
동적 모듈 통계 정보를 조회한다. 통계 정보는 각 모듈별 수행시간 AVG/MIN/MAX와 CPU AVG/MIN/MAX가 조회된다.
[-n 노드명]
멀티 노드 환경에서 조회할 노드를 지정한다.
[-m 함수명]
조회할 함수명을 지정한다.
[-M 라이브러리명]
조회할 라이브러리명을 지정한다.
[-C]
전체 모듈에 대해 dlopen, dlsym을 수행한다.
[-c start_index end_index]
지정한 인덱스 범위의 모듈에 대해 dlopen, dlsym을 수행한다.
[-s e|d|r]
동적 모듈 통계 수집을 설정한다.
-
e : 활성화
-
d : 비활성화
-
r : 초기화
[-u e|d]
동적 모듈을 설정한다.
-
e : 활성화
-
d : 비활성화
한 번에 하나의 모듈만 설정 가능하므로, 반드시 [-m] 또는 [-M] 옵션을 함께 사용해야 한다.
-
VERSION=1, VERSION=2인 경우 모듈은 전체 라이브러리에서 유일함으로 보장해야 하기 때문에 [-m] 옵션만 지정한다. 함수명이 전체적으로 유일해야 한다.
-
VERSION=3이고 라이브러리가 다를 경우 함수명은 중복되어도 상관없기 때문에 [-m], [-M] 옵션은 반드시 입력해야 한다. [-m] 옵션 없이 [-M] 옵션만 사용해서는 안 된다.
[-I 최소충돌횟수] (대문자 i)
각 모듈마다 hash collision에 의한 버킷을 검색할 때 비교횟수를 출력한다.
0 이상의 값을 설정할 수 있으며, 지정한 횟수 이상의 모듈에 대해서만 출력한다. [-p], [-m], [-M], [-r] 옵션과 함께 사용할 수 있다.
[-v|-V]
버전 정보를 출력한다.
[-h]
사용법을 출력한다.
-
-
예제
-
다음은 기본적인 tdlshm 사용 예이다.
$ tdlshm -S TDLDIR = /home/jeffry/tmax LOGDIR = /home/jeffry/tmax/log/dlog - BACKUP = /home/jeffry/tmax/log/dlog/tdl.bak VERSION = 2, SHMKEY = 0x90000, - IPCPERM = 0750 MAXMODULES = 256, CURMODULES = 3, Global SEQNO = 45e27d28, - MONITOR = Y MODE = SINGLE, DOMAINID = 1 Index = 125, Funcname = myfunction1, - Libname = myfunction1, Seqno = 45e27d28, Active = Y Count = 0 SVC: Avg = 0.000, - MinTime = 0.000, Maxtime = 0.000 CPU: Avg = 0.000, MinTime = 0.000, - Maxtime = 0.000 Index = 126, Funcname = myfunction2, Libname = myfunction2, - Seqno = 45e27d28, Active = Y Count = 0 SVC: Avg = 0.000, MinTime = 0.000, - Maxtime = 0.000 CPU: Avg = 0.000, MinTime = 0.000, Maxtime = 0.000 Index = 127, - Funcname = myfunction3, Libname = myfunction3, Seqno = 45e27d28, Active = Y - Count = 0 SVC: Avg = 0.000, MinTime = 0.000, Maxtime = 0.000 CPU: Avg = 0.000, - MinTime = 0.000, Maxtime = 0.000 $ tdlshm TDLDIR = /home/jeffry/tmax LOGDIR = /home/jeffry/tmax/log/dlog - BACKUP = /home/jeffry/tmax/log/dlog/tdl.bak VERSION = 2, SHMKEY = 0x90000, - IPCPERM = 0750 MAXMODULES = 256, CURMODULES = 3, Global SEQNO = 45e27d28, - MONITOR = Y MODE = SINGLE, DOMAINID = 1 Index = 125, Funcname = myfunction1, - Libname = myfunction1, Seqno = 45e27d28, Active = Y Index = 126, - Funcname = myfunction2, Libname = myfunction2, Seqno = 45e27d28, Active = Y, - Index = 127, Funcname = myfunction3, Libname = myfunction3, Seqno = 45e27d28, Active = Y
-
다음은 TDL 통계 정보 조회를 위한 사용 예이다.
$ tdlshm -S TDLDIR = /home/jeffry/tmax LOGDIR = /home/jeffry/tmax/log/dlog - BACKUP = /home/jeffry/tmax/log/dlog/tdl.bak VERSION = 2, SHMKEY = 0x90000, - IPCPERM = 0750 MAXMODULES = 256, CURMODULES = 3, Global SEQNO = 45e27d28, - MONITOR = Y MODE = SINGLE, DOMAINID = 1 Index = 125, Funcname = myfunction1, - Libname = myfunction1, Seqno = 45e27d28, Active = Y Count = 0 SVC: Avg = 0.000, - MinTime = 0.000, Maxtime = 0.000 CPU: Avg = 0.000, MinTime = 0.000, - Maxtime = 0.000 Index = 126, Funcname = myfunction2, Libname = myfunction2, - Seqno = 45e27d28, Active = Y Count = 0 SVC: Avg = 0.000, MinTime = 0.000, - Maxtime = 0.000 CPU: Avg = 0.000, MinTime = 0.000, Maxtime = 0.000 Index = 127, - Funcname = myfunction3, Libname = myfunction3, Seqno = 45e27d28, Active = Y - Count = 0 SVC: Avg = 0.000, MinTime = 0.000, Maxtime = 0.000 CPU: Avg = 0.000, - MinTime = 0.000, Maxtime = 0.000
-
다음은 [-s] 또는 [-u] 옵션 사용 예이다.
$ tdlshm -s r $ tdlshm -s e -m myfunction $ tdlshm -s d -m myfunction $ tdlshm -u e -m myfunction $ tdlshm -u d -m myfunction
-
다음은 [-C] 또는 [-c] 옵션 사용 예이다.
$ tdlshm -C $ tdlshm -c 0 1024 $ tdlshm -c 1024
-
3.6. tdlsync
TDL 공유 메모리와 백업 파일 동기화를 수행하는 명령어이다. 자동 백업을 사용하지 않을 경우 필요한 관리 툴이다.
다음은 명령어 사용법에 대한 설명이다.
-
사용 방법
$ tdlsync [-p TDL 루트 디렉터리 경로] [-B 백업 파일 경로] [-v | -V] [-h]
항목 설명 [-p TDL 루트 디렉터리 경로]
TDL 루트 디렉터리는 ${TDLDIR} 또는 ${TMAXDIR}을 사용한다.
루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.
[-B 백업 파일 경로]
백업 파일 경로를 지정한다.
[-v|-V]
버전 정보를 출력한다.
[-h]
사용법을 출력한다.
-
예제
다음은 TDL 환경 파일(tdl.cfg)의 'BACKUP' 파라미터에 지정된 파일로 공유 메모리를 백업하는 예제이다.
$ tdlsync
3.7. tdlupdate
지정한 동적 모듈을 업데이트하는 명령어이다. [-m] 옵션으로 라이브러리명을 반드시 지정해야 한다. 지정한 라이브러리가 이미 등록되어 있을 경우는 지정한 라이브러리를 업데이트하며 아직 등록되어 있지 않을 경우 새로 추가한다. 멀티 노드 환경인 경우 마스터, 슬레이브 노드에서 모두 수행 가능하다.
다음은 명령어 사용법에 대한 설명이다.
-
사용 방법
$ tdlupdate [-p TDL 루트 디렉터리 경로] [-r 디렉터리 경로] [-x export 함수 추출 스크립트 파일 경로] [-f] [-m 라이브러리명] [-b] [-c] [-l 파일명] [-i] [-Q seqno] [-C [cp|mmap|self]] [-v | -V] [-h]
항목 설명 [-p TDL 루트 디렉터리 경로]
TDL 루트 디렉터리는 ${TDLDIR} 또는 ${TMAXDIR}을 사용한다.
루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 사용하여 경로를 지정할 수 있다.
[-r 디렉터리 경로]
tdlupdate를 실행 할 원격 노드의 TDLDIR을 지정한다.
[-p] 옵션을 사용할 경우 두 개 이상의 TDL 루트 디렉터리를 가지게 되는데 이를 지정하는 용도로 사용한다.
[-x export 함수 추출 스크립트 파일 경로]
export 함수 추출을 위한 스크립트 파일 경로를 지정한다.
[-f]
VERSION=2에서 다른 라이브러리에 함수명이 이미 존재하더라도 강제로 업데이트 한다.
[-m 라이브러리명]
업데이트할 라이브러리명을 지정한다.
[-b]
TDL 환경 파일(tdl.cfg)에 BACKUP 파라미터가 지정되어 있더라도 공유 메모리 파일 백업을 수행하지 않는다.
[-c]
멀티 노드 환경에서 노드 사이 버전 동기화를 수행한다.
[-l 파일명]
업데이트할 목록을 파일로 작성하여 업데이트를 수행한다. 이때 전체 파일을 검사 후 이상이 없을 경우에만 업데이트를 수행한다. 이상이 있을 경우에는 rollback을 원칙으로 한다.
모듈의 구분자는 콤마(,) 또는 <Enter>이다.
[-i]
반영해야 하는 대상 파일이 존재하지 않더라도 중단하지 않고 계속 다음 파일을 update한다.
[-Q seqno]
현재 시간이 아닌 강제로 부여한 seqno를 사용한다.
[-C [cp|mmap|self]]
TDL 환경 파일(tdl.cfg)에 'COPY' 파라미터 설정보다 우선하여 파일 복사 방법을 변경한다.
-
cp
-
mmap
-
self
[-v|-V]
버전 정보를 출력한다.
[-h]
사용법을 출력한다.
-
-
예제
-
다음은 <mylibrary.so> 파일을 업데이트하는 예제이다.
$ tdlupdate -m mylibrary
-
다음은 여러 개의 모듈을 업데이트하는 예제이다. 구분자는 콤마(,)이며, 공백 없이 작성해야 한다. 개수 제한은 없으며, 멀티 노드일 경우는 1024개로 제한한다.
$ tdlupdate -m mylibrary,mylibrary2,mylibrary3
-
다음은 업데이트할 목록을 파일로 작성하여 업데이트를 수행하는 예제이다. 파일 내에 명시하는 모듈 수 제한은 없으며, 멀티 노드일 경우는 1024개로 제한한다.
$ tdlupdate -l update.list
-
update.list 작성 방법이다. 다음과 같이 콤마(,)나 <Enter>를 구분자로 사용하여 작성한다.
mylibrary,mylibrary2 mylibrary3
-
다음은 멀티 노드 환경에서 공유 메모리 정합성에 문제가 있을 경우 동기화를 수행하는 예제이다.
$ tdlupdate -c
-
-
참고
VERSION=4로 설정한 경우에는 export 함수 추출을 위한 스크립트 파일이 반드시 필요하다.
/* Example of exp file */ /* dlib.exp */ #! dlib.so TmaxSoft::Airplain Car
3.8. tdlseqno
특정 모듈과 함수의 시퀀스 번호를 조회한다.
다음은 명령어 사용법에 대한 설명이다.
-
사용 방법
$ tdlseqno [-m module|-M library [-p TDL 루트 디렉터리 경로]] [-V] [-h]
항목 설명 [-m module]
해당 함수 이름을 지정한다.
[-M library]
해당 라이브러리 이름을 지정한다.
[-p TDL 루트 디렉터리 경로]
TDL 루트 디렉터리는 ${TDLDIR} 또는 ${TMAXDIR}을 사용한다.
루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.
[-V]
버전 정보를 출력한다.
[-h]
사용법을 출력한다.
-
예제
-
${TDLDIR} 또는 ${TMAXDIR}의 해당 모듈과 함수의 시퀀스 번호를 조회하는 예제이다.
$ tdlseqno -m module1 -M library1
-
특정 디렉터리 아래의 해당 모듈과 함수의 시퀀스 번호를 조회하는 예제이다.
$ tdlseqno -m module1 -M library1 -p dirname
-
3.9. tdltrace
TDL 환경 설정 정보와 통계 정보를 조회한다.
다음은 명령어 사용법에 대한 설명이다.
-
사용 방법
$ tdltrace [-p 디렉터리 경로] [-P PID] [-V] [-h] [-c]
항목 설명 [-p 디렉터리 경로]
TDL 루트 디렉터리는 ${TDLDIR} 또는 ${TMAXDIR}을 사용한다.
루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.
[-P PID]
특정 서버 프로세스의 정보를 조회한다.
[-V]
버전 정보를 출력한다.
[-h]
사용법을 출력한다.
[-c]
좀비 프로세스를 찾고 이와 관련된 정보를 지운다.
-
예제
$ tdltrace
$ tdltrace -P 20113
$ tdltrace -P 20113 -p dirname
$ tdltrace -c