TDMS 쓰기의 메모리 증가



주요한 소프트웨어: LabVIEW Development Systems>>LabVIEW Base Development System
주요한 소프트웨어 버전: 1.0
문제가 해결된 소프트웨어 버전: N/A
부차적인 소프트웨어: LabVIEW Modules>>LabVIEW Real-Time Module

문제점:

TDMS를 사용하여 데이터 로깅을 하는 어플리케이션이 있습니다. TDMS 쓰기 VI를 실행할때마다 조금씩 메모리 (RAM)의 사용량이 증가합니다. 이것이 메모리 문제인지 여부와 어떻게 메모리 사용량 증가를 방지할수 있는지 궁금합니다.



솔루션:

일반 TDMS API는 TDMS 열기 VI로 TDMS 파일에 읽고 쓰기 가능하도록 합니다. TDMS 파일에 데이터를 쓸때, TDMS API는 파일에 랜덤하게 데이터를 엑세스하기 쉽도록 메모리에 캐쉬를 가지고 있습니다. 만약 TDMS 를 사용해서 디스크에 계속해서 데이터를 로깅하는 어플리케이션을 가지고 있다면 이것이 메모리 누출의 원인이 될 수 있습니다.

이 문제에 대해서 몇가지 가능한 방법이 있습니다:

  1. 만약 TDMS API를 사용하여 여러 채널에 동시에 데이터를 쓴다면, 각 채널들에 동시에 같은 수의 데이터 값을 써야 합니다.
  2.  "NI_MinimumBufferSize" 프로퍼티를 TDMS 파일에 로깅하기 전에 채널들에 설정하십시오. 이 세팅의 예제인 Minimum Buffer Size Example.vi.를 첨부하였습니다. 이것이 메모리 증가 속도를 감소시킬 수 있습니다. LabVIEW Help에서 더 자세한 정보를 참고하십시오.
  3. 만약 데이터 로깅을 긴 시작동안 한다면 NI는 로깅 세션을 짧은 여러개의 세션으로 나누기를 권장합니다. 예를 들면, TDMS 로깅 파일을 매 시간별로 새로운 파일에 로깅되도록 하는 것입니다. 더 짧은 로깅 세션을 이용하면 메모리 증가를 감소시키는데 도움이 될 수 있습니다.
  4. 전체 로깅세션이 완료된 후에 각 TDMS 파일을 합쳐서 하나의 큰 파일로 만들 수 있습니다.
  5. Upgrading the TDMS component to the latest version 는 메모리 증가를 완화시킬 수는 있지만 이 문제를 해결 할 수는 없습니다.


관련 링크: LabVIEW Help: TDMS Open Function
White Paper: The NI TDMS File Format

첨부:


Minimum Buffer Size Example.vi - Minimum Buffer Size Example.vi



리포트 날짜: 04/27/2012
마지막 업데이트: 08/12/2015
문서 번호: 5WQD51YS