2017-05-09 9 views
2

내 사이트의 사례 중 하나는 일괄 처리주기가 시작될 때 모든 프로그램을 실행하기 전에 전체 실행에 사용될 모든 세대 GDG의 새로운 세대를 할당하는 것입니다.한 번에 수백 개의 GDG를 정의하는 올바른 방법

이것은 프로세스가 시작되기도 전에 500 개가 넘는 파일을 할당하는 시나리오가 있음을 의미합니다. 나는이 거대한주기를보다 효율적으로 만드는 방법을 연구하도록 임무를 부여 받았다.

  • 실행 한 엄청난 IDCAMS 단계를 한 번 (현재의 기능)
  • 에만 할당 여러 IDCAMS의 단계로 할당을 브레이크에서 새로운 버전의 모든합니다 나는이 할당해야하는 경로 궁금해했다 파일의 일부

IDCAMS를 여러 번 연속적으로 호출 할 때 머리가 과도합니까?

이러한 단계를 작은 단계로 나누면 전체적으로 성능이 향상 될 수 있지만 나는 테스트 할 명확한 방법이 없습니다. 우리의 테스트 환경은 메트릭을 실행하기에 정말 좋은 곳이 아닙니다. 우리의 일자리는 일반적으로 JES에서 우선 순위가 낮기 때문에 종료됩니다. 그래서 경과 시간은 실제로 실제로 일어난 일의 좋은 지표가 아닙니다. 이것들은 IDCAMS 할당이며, CPU 통계는 항상 낮습니다.

TLDR; 누구는 더 효율적인지, 더 효율적인 지 어떻게 알 수 있습니까?

+0

모든 파일의 +1 버전을 할당하는 단일 작업 (또는 단계)을 실행 한 다음 후속 작업이 현재 (0) 세대를 참조한다고 하시겠습니까? 또한, "더 효율적"이라는 말은 ... 경과 시간을 줄이고 시스템 자원을 적게 사용하며 카탈로그 경합을 줄이는 등 무엇을 의미합니까? –

+0

@ ValerieR 예 1 개의 직무가 +1이고 다른 모든 직무는 0입니다. 의견의 두 번째 부분은. 무엇보다도 최소한의 시스템 리소스를 사용하여 실행하고 싶지만 가능한 경우 카탈로그 경합이 적고 경과 시간도 짧으면 좋을 것입니다. – SaggingRufus

+0

나쁜 질문은 아니지만 직접 테스트 해 보는 것도 쉽습니다. 하나의 IEFBR14 또는 IDCAMS 스탑에 500 개의 새로운 GDS를 할당하는 테스트 작업과 5 개의 GDS를 할당하는 100 개의 단계로 동일한 테스트 작업을 작성하십시오. –

답변

6

진실은 수백 개의 데이터 세트를 정의하는 것이 올바르게 수행되면 대부분의 최신 z/OS 시스템에 스트레스를 가하는 것이 아닙니다. 각 할당은 시스템 기능 (예 : 카탈로그 기능, 할당 기능, 보안, SMF 로깅 등)의 예측 가능한 순서를 거치며 확실한 차이점이 있지만, 사용자의 작업 방식에 관계없이 각각 비슷한 시간이 소요됩니다.

일반적으로 새로운 평균 파일 할당은 최신 평균 조정 메인 프레임에서 100 밀리 초를 넘지 않아야합니다. 500 개의 데이터 세트를 할당하는 데 1 분 이상 걸릴 경우 IDCAMS 사용과 관련이없는 잘못된 것이있을 수 있습니다.

예를 들어, 귀하의 직업이 특정 양을 소비하면 리소스가 부족해지는 우선 순위가 낮은 클래스에 속할 수도 있습니다.이 경우에는 전달되는 대신 대기하고있을 수도 있습니다 (간단한 계산 CPU 시간을 경과 시간으로 나눈 값이 문제인지 알려줍니다). 이것이 문제라면, "치트 (cheat)"하는 일반적인 방법은 IDCAMS가 아닌 JCL에서 GDG를 정의하는 것입니다 ... JCL 할당은 일괄 처리 자의 우선 순위에서 이루어지며 일반적으로 작업 단계 자체보다 높습니다 . 이것이 오류라는 것은 IDCAMS의 오류에서 얻을 수있는 0이 아닌 반환 코드가 아니라 JCL 오류가 발생한다는 것을 의미합니다.

GDG 기본 정의를 확인하는 것이 좋습니다. 많은 수의 세대를 유지하면 일이 느려지는 경향이 있습니다. 아마도 더 적은 세대의 세대를 저장하는 더 좋은 계획을 세울 수 있습니다.

해야 할 일은 시스템 프로그래머가 카탈로그 환경을 적절하게 조정하는 작업을 잘 수행했는지 확인하는 것입니다. 캐싱, 버퍼링 등을 제어하고 제대로 조정 된 많은 매개 변수가 있습니다 좋은 성능을 원하면 카탈로그가 필수입니다. this IBM document.에 많은 좋은 정보가 있습니다. 대부분의 작업에는 특별한 승인이 필요하므로 직접 처리 할 수없는 내용 일 수 있습니다.

실제로 새 데이터 세트에 디스크 공간을 할당하는 경우 할당 매개 변수가 올바른지 확인해야합니다. 예를 들어, 동일한 디스크 볼륨에 많은 데이터 세트를 저장하는 경우 이는 잘못된 것입니다. 할당은 볼륨 수준에서 많은 일련 번호를 처리하므로 데이터 집합을 여러 디스크 볼륨에 분산시킬수록 충돌 가능성이 줄어 듭니다. RMF (또는 사이트에있을 수있는 모든 공급 업체 제품)와 같은 도구를 사용하여 대기열 지연 등을 모니터링 할 수 있습니다. 이는 종종 느린 할당 성능의 주범입니다.

이것은 반복적 인 프로세스이며, 실제로 그것에 대해 체계적으로 다루기를 원한다면 많은 GDG 파일을 할당하고 성능 통계를 수집하는 테스트 작업을 만듭니다. 할당 매개 변수와 시스템 설정이 다르기 때문에 처리량이 달라 지므로 추측하기보다는 최상의 조합으로 집에 돌아가고 싶을 것입니다. 경과 시간에 관계없이 CPU 및 I/O에 대한 서비스 단위 수를 얻을 수 있으며 가장 적합한 방법을 찾는 데 가장 좋은 지침입니다.

시스템이 올바르게 조정되었고 불필요한 지연이 발생하지 않는다고 확신하면 병렬 처리와 같은 기술을 통해 더 나은 경과 시간을 위해 CPU 사용량을 교환할지 여부를 결정할 수 있습니다. 당신이하고있는 일은 대부분 입출력 작업입니다. 그래서 시스템이 잘 조정되었다고 가정하면 파일의 서브 세트를 가진 여러 작업으로 단일 작업을 분할하면 약간 더 많은 프로세서 자원이 사용되지만 경과 시간에서 훨씬 빠르게 실행됩니다 관점. 가장 좋은 경우는 프로세서 엔진이 부족한 경우 또는 카탈로그 나 디스크를 높은 사용률로 사용할 때입니다.

할당을 여러 작업으로 분할하는 것은 사이트에서 병렬로 실행할 수 있다고 가정 할 때 (즉, 일괄 처리 개시자가 충분하기 때문에) 병렬 처리에 대한 간단한 경로입니다. 당신이 이것을하고 경과 시간이 하나의 커다란 일을 수행하는 것보다 낫지 않다면, 나는 위에서 설명한 것처럼 경쟁이 어디에 있는지 조사하고 연구 할 때입니다.

약간의 모험을하고 있다면, 많은 양의 할당을 병렬로 수행하는 멋진 방법은 IDCAMS 대신 BPXWDYN과 같은 UNIX 서비스 셸을 사용하는 것입니다 (GDGNT 플래그를 BPXWDYN으로 지정해야합니다). 올바르게 수행하면 할당의 하위 집합을 수행하는 모든 하위 프로세스를 시작하는 쉘 스크립트를 작성할 수 있습니다. 제대로 구성하면 병렬 처리를 위해 여러 주소 공간이 필요한 일괄 처리 작업이 아니라 하나의 큰 주소 공간에서 실행되는 이점이 있습니다.

+0

서브 프로세스로 쉘 스크립팅에 대한 경고 단어 : _BPX_SHAREAS = YES 환경 변수를 설정해야합니다. 그렇지 않으면 각 서브 프로세스가 별도의 주소 공간 (BPXAS)에서 실행됩니다. z/OS에서의 스폰 프로세스는 다른 시스템에서 상당히 비쌉니다. –