제2장 사용 및 관리

내용 목차

2.1. 디렉터리 구성
2.2. 환경설정
2.2.1. TDL 환경설정
2.2.2. Tmax 환경설정
2.3. 시스템 관리 툴
2.3.1. tdlinit
2.3.2. tdlclean
2.3.3. tdlnm
2.3.4. tdlrm
2.3.5. tdlshm
2.3.6. tdlsync
2.3.7. tdlupdate

TDL을 사용하기 위해서는 TDL 환경설정을 반드시 해야 하며, 암시적 버전 보호 기능을 사용하려면 TMAX 환경설정을 해야 한다. 본 장에서는 각 환경설정 방법과 툴의 사용법에 대해서 설명한다.

2.1. 디렉터리 구성

TDL 디렉터리는 환경 파일을 위한 config 디렉터리, 업데이트할 라이브러리를 위한 mod 디렉터리, 업데이트된 라이브러리를 위한 run 디렉터리로 구성된다.

디렉터리설명
configTDL 환경 파일(tdl.cfg)을 위한 디렉터리이다. RACFILE 파라미터의 기본적인 위치 또한 config 디렉터리를 사용한다.
mod업데이트할 라이브러리를 위한 디렉터리이다. 업데이트할 공유 라이브러리(*.so 또는 *.sl)를 mod 디렉터리에 복사한 후 tdlupdate를 수행해야 한다.
runtdlupdate 후 버전이 부연된 라이브러리들을 위한 디렉터리이다. 이곳에는 시스템에서 내부적으로 사용하는 파일도 존재하므로 사용자가 임의로 삭제하면 안 된다.

참고

$TDLDIR은 TDL의 루트 경로로 특별히 지정하지 않을 경우 $TMAXDIR 환경변수에 설정된 경로를 사용한다. 만일 경로를 다르게 지정하려면 $TDLDIR 환경변수를 설정해야 한다. 또한, 로컬 클라이언트에서 TDL을 사용하려면 $TDLDIR을 반드시 지정해야 한다.

TDL 2.x 버전에서는 config가 아닌 $TDLDIR에 tdl.cfg가 존재해야 한다.

2.2. 환경설정

TDL을 사용하기 위해서 TDL 환경설정 파일과 Tmax에 TDL 관련 항목의 환경을 설정해야 한다.

환경설정의 기본적인 문법은 "파라미터=값"이고 라인 내에 공백은 허용되지 않는다. 또한 라인의 첫 번째 문자가 '#'인 경우 해당 라인은 주석 처리된다.

2.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
# path of a log directory
LOGDIR=log/dlog
# 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

항목설명
VERSION

TDL 운영을 위한 버전을 설정한다. 1, 2, 3, 4 중 선택해야 한다. (기본값: 1)

자세한 내용은 "VERSION 항목"의 설명을 참고한다.

SHMKEYTDL 운영에 사용되는 공유 메모리 키값을 설정한다.
IPCPERMrun 디렉터리의 동적 모듈 및 공유 메모리의 권한을 설정한다.
MAXMODULES동적 모듈의 최대 개수이다. 2^n으로 올림되어 사용된다. 모듈의 재배치 없이 변경 가능하다. 자세한 내용은 “제4장 예제”를 참고한다.
BACKUP공유 메모리 백업 파일을 지정한다. tdlinit, tdlupdate 시 자동으로 공유 메모리가 지정한 파일로 백업된다. 상대 경로일 경우 $TDLDIR 또는 $TMAXDIR에서 경로가 시작된다. 경로 정보의 $TDLDIR이 우선한다.
COMMAND라이브러리에서 export할 함수를 자동 추출하기 위한 스크립트 파일의 위치를 지정한다. 상대 경로일 경우 $TDLDIR/config 또는 $TMAXDIR/config에서 경로가 시작된다. 경로 정보의 $TDLDIR이 우선한다.
LOGDIR에러 및 정보 메시지 로깅 디렉터리를 지정한다. 로그 파일명은 "tdllog.mmddyyyy" 형식이다. 상대 경로일 경우 $TDLDIR 또는 $TMAXDIR에서 경로가 시작된다. 경로 정보의 $TDLDIR이 우선한다.
MODE

멀티 노드 혹은 도메인 환경에서 master, slave, single 중에 하나를 설정한다.

(기본값: single)

MONITOR

TDL 통계 정보를 수집할 지 여부(Y|N)를 설정한다. (기본값: N )

'Y'로 설정한 경우 모듈별 수행시간 AVG/MIN/MAX, CPU AVG/MIN/MAX가 수집되며, 'tdlshm –S' 옵션을 통해 조회할 수 있다.

LANG

TDL 애플리케이션이 사용하는 언어를 C, COBOL, IBMCOBOL, PL1, MIXED 중 선택하여 설정한다.

선택하지 않을 경우에는 C로 설정되며, 모듈의 확장자는 OS에 따라 결정된다.

RACFILE

멀티 노드 혹은 도메인 환경에서 모든 노드의 racd 주소를 가지고 있는 파일을 지정한다. 상대 경로일 경우 $TDLDIR/config 또는 $TMAXDIR/config에서 경로가 시작된다. 경로 정보의 $TDLDIR이 우선한다.

RACFILE에 대한 예는 "RACFILE 예제"를 참고한다.

DOMAINIDTDL 도메인에 대한 ID로 도메인마다 반드시 다르게 설정해야 한다. (기본값: 0)
DIRMAPPINGLIST

run 디렉터리를 2개 이상 사용할 경우에 설정한다.

mod와 run 디렉터리의 쌍을 괄호와 콜론(:)으로 구분하여 최대 10쌍까지 설정할 수 있다. Tmax v5.0 sp1 fix#2부터 적용된다.

HASHFUNCTDL에서 내부적(각 모듈의 인덱스 설정)으로 사용되는 HASH의 종류를 선택하여 설정할 수 있다. Tmax v5.0 sp2부터 적용된다.

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이 아닌 별도의 인터페이스를 이용한다. 자세한 내용은 “제4장 예제”를 참고한다.

RACFILE 예제

다음과 같이 설정된 파일을 ".rac" 확장자로 저장하고 RACFILE 항목에 해당 파일명을 설정한다.

hostname1 192.168.1.1 3333
hostname2 192.168.1.2 3333
hostname3 192.168.1.3 3333

2.2.2. Tmax 환경설정

암시적 버전 보호 기능을 사용하기 위해서는 DOMAIN 절 또는 NODE 절에 TDL 항목의 설정이 필요하다.

*DOMAIN
tmax ...,
         TDL = Y

*NODE
tmax1 ...,
         TDL = Y
  • DOMAIN 절

    항목설명
    TDLTDL 암시적 버전 보호를 사용할 것인지 여부(Y|N)를 설정한다. (기본값: N)
  • NODE 절

    항목설명
    TDLTDL 암시적 버전 보호를 사용할 것인지 여부(Y|N)를 설정한다. 설정되어 있지 않을 경우 DOMAIN 절의 TDL 값을 상속받는다.

2.3. 시스템 관리 툴

TDL에서는 다음과 같은 관리 툴을 제공한다. 관리 툴은 다음 경로에 위치한다.

$TMAXDIR/bin

명령어설명
tdlinitTDL 공유 메모리 및 동적 모듈 초기화를 수행하는 툴이다.
tdlcleanrun 디렉터리의 구버전 라이브러리 파일이나 불필요한 파일을 정리하는 툴이다.
tdlnm지정한 라이브러리에 대한 자동 export될 함수 목록을 조회하는 툴이다.
tdlrmTDL을 더 이상 사용하지 않을 경우에 공유 메모리를 완전히 제거하기 위한 관리 툴이다.
tdlshmTDL 공유 메모리 정보를 조회하거나, 통계 모니터링 활성화 여부 및 모듈 활성화 여부를 설정하는 툴이다.
tdlsyncTDL 공유 메모리와 백업 파일 동기화를 수행하는 툴이다.
tdlupdate지정한 동적 모듈을 업데이트하는 툴이다.

2.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

2.3.2. tdlclean

run 디렉터리의 구버전 라이브러리 파일이나 불필요한 파일을 정리하는 명령어이다. 특히, [-m] 옵션 또는 [-M] 옵션을 사용하면 공유 메모리에서 지정한 동적 모듈이 완전히 삭제된다.

  • 사용 방법

    $ tdlclean [-p TDL 루트 디렉터리 경로] [-m 라이브러리명] [-M 함수명] [-b] 
               [-d yyyymmddhhmi] [-D “n hour|day” [-N 개수] [-v | -V] [-h]
    옵션설명
    [ -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 ]사용법을 출력한다.
  • 예제

    • 다음은 구버전 라이브러리 파일을 삭제하는 예제이다.

      $ tdlclean
    • 다음은 2009년 2월 1일 00시 00분 이전의 구버전 라이브러리 파일을 삭제하는 예제이다.

      $ tdlclean –d 200902010000
    • 다음은 5일 이전의 구버전 라이브러리 파일을 삭제하는 예제이다.

      $ tdlclean -D "5 day"
    • 다음은 mylibrary를 TDL 공유 메모리에서 완전히 제거하고 구버전 파일들도 삭제하는 예제이다.

      $ tdlclean -m mylibrary

2.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

2.3.4. tdlrm

TDL을 더 이상 사용하지 않을 경우에 공유 메모리를 완전히 제거하기 위한 명령어이다. tdlrm을 할 경우, tdlcall()을 사용할 수 없다.

  • 사용 방법

    $ tdlrm [-p TDL 루트 디렉터리 경로] [-v | -V] [-h]
    항목설명
    [ -p TDL 루트 디렉터리 경로 ]TDL 루트 디렉터리는 $TDLDIR 또는 $TMAXDIR을 사용한다. 루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 이용하여 경로를 지정할 수 있다.
    [ -v | -V ]버전 정보를 출력한다.
    [ -h ]사용법을 출력한다.
  • 예제

    다음은 TDL 공유 메모리를 삭제하는 예제이다.

    $ tdlrm

2.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 mincol] [-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 mincol ]

    각 모듈들에 대해서 hash collision 발생하는 경우 모듈 이름 비교횟수를 ", Collision=n"의 형식으로 덧붙여 표시한다. n의 값이 0이면 한 번의 비교로 검색이 완료된 것을 의미한다.

    mincol은 비교횟수의 최소값으로 0 이상의 값을 지정해야 한다. 각 모듈을 출력하는 경우 비교 횟수가 지정한 값 이상인 경우에만 해당 모듈의 정보를 출력한다. 큰 값을 입력하면 비교 횟수가 큰 함수를 빠르게 찾을 수 있다.

    [-m], [-M], [-r], [-p] 옵션들을 함께 사용할 수 있다.

    [ -v | -V ]버전 정보를 출력한다.
    [ -h ]사용법을 출력한다.
  • 예제

    • 다음은 기본적인 tdlshm 사용 예이다.

      $ 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

2.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

2.3.7. tdlupdate

지정한 동적 모듈을 업데이트하는 명령어이다. [-m] 옵션으로 라이브러리명을 반드시 지정해야 한다. 지정한 라이브러리가 이미 등록되어 있을 경우는 지정한 라이브러리를 업데이트하며 아직 등록되어 있지 않을 경우 새로 추가한다. 멀티 노드 환경인 경우 마스터 노드에서 수행 가능하다.

  • 사용 방법

    $ tdlupdate [-p TDL 루트 디렉터리 경로] [-x export 함수 추출 스크립트 파일 경로] [-f] 
                [-m 라이브러리명] [-b] [-c] [-l 파일명] [-v | -V] [-h] 
    옵션설명
    [ -p TDL 루트 디렉터리 경로 ]

    TDL 루트 디렉터리는 $TDLDIR 또는 $TMAXDIR을 사용한다.

    루트 경로를 별도로 지정해서 실행하는 경우 [-p] 옵션을 사용하여 경로를 지정할 수 있다.

    [ -x export 함수 추출 스크립트 파일 경로 ]export 함수 추출을 위한 스크립트 파일 경로를 지정한다.
    [ -f ]VERSION=2에서 다른 라이브러리에 함수명이 이미 존재하더라도 강제로 업데이트한다.
    [ -m 라이브러리명 ]업데이트할 라이브러리명을 지정한다.
    [ -b ]TDL 환경 파일(tdl.cfg)에 BACKUP 파라미터가 지정되어 있더라도, 공유 메모리 파일 백업을 수행하지 않는다.
    [ -c ]멀티 노드 환경에서 노드 사이 버전 동기화를 수행한다.
    [ -l 파일명 ]업데이트할 목록을 파일로 작성하여 업데이트를 수행한다. 모듈의 구분자는 콤마(,) 또는 <Enter>이다.
    [ -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