DataStage에 대한 워크로드 관리 정책 구성

구성 파일을 편집하여 DataStage 에 대한 워크로드 관리 정책을 구성하거나 프로젝트에서 DataStage 인스턴스 설정을 편집하여 구성할 수 있습니다.

정책

다음 시스템 정책에 대한 임계값을 설정할 수 있습니다.
작업 수
시스템에서 허용되는 동시 실행 작업의 최대 수를 지정하십시오. 기본값은 20개의 동시 실행 작업입니다. 각 런타임 인스턴스에 가장 적합한 값은 사용 가능한 리소스, 파티션 수 및 SLA에 따라 다릅니다.
참고: 작업 수에는 파이프라인에서 실행되는 작업은 제외됩니다.
대기열별 작업 수
각 우선순위(낮음, 중간, 높음)에 대해 최대 동시 실행 작업 수를 지정합니다.
작업 시작
지정된 시간(초) 동안에 시작할 수 있는 최대 작업 수를 지정하십시오. 기본값은 10초에 100개의 작업입니다.
CPU 사용량
시스템에서 허용하는 최대 CPU 사용량을 지정하십시오. 현재 CPU 사용량이 이 값을 초과하면 작업을 시작할 수 없습니다. 기본값은 80퍼센트의 CPU 사용량입니다. 소규모 작업이 많은 경우 대기열에 작업이 쌓이는 것을 방지하기 위해 더 높은 값을 고려할 수 있습니다.
메모리 사용량
시스템에서 허용하는 최대 메모리 사용량을 지정하십시오. 메모리 사용량이 이 값을 초과하면 작업을 시작할 수 없습니다. 기본값은 80퍼센트의 메모리 사용량입니다. 소규모 작업이 많은 경우 대기열에 작업이 쌓이는 것을 방지하기 위해 더 높은 값을 고려할 수 있습니다.

구성 파일 편집

구성 파일 wlm.config.xml을(를) 편집하여 정책을 구성하려면 다음 단계를 완료하십시오.

  1. Red Hat® OpenShift® 클러스터에 인스턴스 관리자로 로그인하십시오.
    oc login -u kubeadmin -p xxxxx-xxxx-xxxx
  2. 업데이트할 런타임 인스턴스를 찾으십시오. 예를 들어, 기본 인스턴스를 업데이트하려면 다음을 수행하십시오.
    oc get pods | grep ds-px-default-ibm-datastage-px-runtime
  3. 런타임 팟에서 쉘 열기:
    oc rsh ds-px-default-ibm-datastage-px-runtime-7b5b7975b8-jnzbg
  4. 디렉토리를 워크로드 관리 홈 디렉토리로 변경하십시오. 예를 들어, 다음과 같습니다.
    sh-4.4$ cd /opt/ibm/PXService/Server/DSWLM
  5. 워크로드 관리 중지:
    sh-4.4$ ./stopwlm.sh
  6. 구성 파일을 편집하십시오.
    bash-4.4$ nano /px-storage/config/wlm/wlm.config.xml
  7. 설정하려는 정책에 따라 구성 파일에 다음 정보를 추가하십시오.
    작업 계수 및 작업 시작
    참고: 작업 수에는 파이프라인에서 실행되는 작업은 제외됩니다.
      <!-- Declare a list of computing resources -->
      <Resources>
        <Resource name="JobCount" value="5" />
        <Resource name="StartJob" value="5" timeFrame="4" />
      </Resources>
    CPU 사용량 및 메모리 사용량
    <!-- parameter to indicate CPU cap (in percent) -->
        <Parameter name="CPUCap" value="95" />
        <!-- parameter to indicate memory cap (in percent) -->
        <Parameter name="MemoryCap" value="80" />
    대기 중인 최대 작업 수
    ' MaxQueuedJobs ' 파라미터의 기본값은 ' 1000 입니다. 값이 ' 0'로 설정된 경우 ' MaxQueuedJobs ' 확인은 건너뜁니다.
    <!-- parameter to configure maximum number of queued jobs -->
    <Parameter name="MaxQueuedJobs" value="1000" />
  8. 워크로드 관리를 시작하십시오.
    sh-4.4$ nohup ./startwlm.sh &
    [1] 16034
    sh-4.4$ nohup: ignoring input and appending output to 'nohup.out'
  9. 워크로드 관리가 실행 중인지 확인하십시오.
    sh-4.4$ ps -ef | grep WLM | grep -v grep
    1000630+   16034   15905  3 15:02 pts/0    00:00:00 ./../../jdk/bin/java -Xmx2048m -classpath ./dist/lib/commons-lang-2.6.jar:./dist/lib/commons-codec-1.15.jar:./../../ASBNode/lib/java/jsr311-api-1.1.1.jar:./../../ASBNode/lib/java/slf4j-api-1.6.1.jar:./../../ASBNode/lib/java/wink-1.2.1-incubating.jar:./../../ASBNode/lib/java/wink-client-1.2.1-incubating.jar:./../../ASBNode/lib/java/wink-common-1.2.1-incubating.jar:./../../ASBNode/lib/java/wink-server-1.2.1-incubating.jar:./dist/lib/wlm.jar:./dist/lib/wlmstart.jar com.ibm.iis.common.wlm.service.server.ds.DSWLMServer
    sh-4.4$ 

메트릭

워크로드 관리가 메트릭을 읽는 방법에 영향을 주도록 READ_COMPUTE_METRICS_FROM을 설정할 수 있습니다. px-runtime 배치 파일을 편집하여 메트릭 읽기 및 재시도 동작을 구성할 수 있습니다.

  private static final String _readMetricsFrom = System.getenv("READ_COMPUTE_METRICS_FROM");
  // Set this to "socket" to use socket calls to compute pod and get the metrics                                                                                                                       
  // By default the metrics are read from disk file                                                                                                                                                    
  // Disk metrics reads that fail to be read or are stale will be retried                                                                                                                              
  // with socket call unless "no_retry" is set                                                                                                                                                         
  // Disk metrics reads can also be retried from disk by setting "disk_retry"                                                                                                                          
  static
  {
    _readMetricsFromSocket = "socket".equalsIgnoreCase(_readMetricsFrom);
    _retryMetricsFromDisk = "disk_retry".equalsIgnoreCase(_readMetricsFrom);
    _retryMetricsNone = "no_retry".equalsIgnoreCase(_readMetricsFrom);
  }