TestStand에서 메모리 절약하기



주요한 소프트웨어:
주요한 소프트웨어 버전: 3.5
문제가 해결된 소프트웨어 버전:
부차적인 소프트웨어: N/A

문제점: 저의 테스트 시퀀스는 시스템의 메모리를 거의 전부 사용합니다. 시퀀스는 몇몇 코드 모듈을 불러오도록 구성되어 있습니다. 시퀀스를 수행하면서 메모리 사용을 최소화할 수 있는 방법이 있나요?

솔루션: TestStand 시퀀스 수행 중의 메모리 할당과 반환을 조절할 수 있다. 기본적으로, 코드 모듈들은 시퀀스 실행이 시작될 때 미리 로딩되고, 코드 모듈이 포함된 시퀀스 파일이 닫힐 때 언로드된다. 이 동작은 최적의 성능을 위한 것이다. 하지만 시퀀스가 수 백개의 코드 모듈들로 구성되어 있다면 테스트 시스템은 메모리 부족 현상에 빠질 것이다. 코드 모듈이 로딩되고 언로드되는 방식을 바꿈으로써, 메모리 사용을 적절하게 제어할 수 있다.

메모리 관리는 특정 스텝에서 따로따로 설정하거나 시퀀스 파일 전체에서 설정한다. 스텝 설정은 특정 스텝에서 오른쪽 클릭하고 Properties >> Run Options으로 가서 설정할 수 있다. 시퀀스 파일 설정은 시퀀스 에디터의 Edit >> Sequence File Properties >> General로 가서 설정할 수 있다. Sequence File 프로퍼티는 현재 시퀀스 파일에 삽입된 스텝들의 동작을 설정한다. Step 프로퍼티는 단지 선택된 스텝에만 적용될 뿐이다.
주의: 시퀀스 동작은 Sequence Call 스텝 타입으로 설정한다.

로드와 언로드 옵션들은 서로 다른 대화창에서 설정한다.

로드 옵션의 기본 셋팅은 "Preload when execution begins"이다. 이 옵션을 설정하면 TestStand는 시퀀스를 실행할 때 모든 코드 모듈들을 불러온다. "Load dynamically"를 선택하면, 스텝이 실행될 준비가 되었을 때 코드 모듈을 불러온다. 언로드 옵션과 연결해서 사용하면 한번에 메모리로 로딩되는 코드 모듈의 갯수를 제한할 수 있다. 메모리 할당과 반환 작업은 소모적인 작업이기 때문에 수행속도는 떨어진다.

언로드 옵션의 기본 셋팅은 "Unload when sequence file is closed"이다. 이는 시퀀스 파일의 시퀀스가 모두 실행된 이후에도 코드 모듈들이 메모리에 남아있음을 의미한다. 이로써 속도성능이 좋아지는데 왜냐하면 TestStand가 다음 번 시퀀스를 수행할 때 코드 모듈을 다시 불러올 필요가 없기 때문이다. 하지만 이는 코드 모듈에 의해 사용된 메모리를 붙잡아 놓는다. 개발자는 "Unload when precondition fails"나 "Unload after step executes", 혹은 "Unload after sequence executes" 중에서 선택할 수 있다. 이 옵션 중의 하나를 선택해서 시퀀스 파일 내의 모든 코드 모듈들이 한 번에 메모리 상에 있지 못하도록 제한한다.


관련 링크:
KnowledgeBase [2DB7OMVW]: Why Does the TestStand Memory Usage Increase Over Time when I Am Running Loops with Large Iteration Counts?
KnowledgeBase [30DB62Y6]: On-the-Fly Reporting and Logging in TestStand

첨부:





리포트 날짜: 11/14/2005
마지막 업데이트: 06/26/2006
문서 번호: 3RDKONA8