ARM은 ARM 기반 기기에서 구동되는 리눅스 애플리케이션을 최적화하기 위한 툴인 Streamline Performance Analyzer (스트림라인 성능분석기)를 발표했다.
Streamline은 성능 데이터(performance data) 취합과 직관적인 도표나 그래픽 보고서 생성을 자동화하여 소프트웨어 개발자가 애플리케이션 핫스팟, 멀티스레딩 문제, 시스템 리소스의 비효율적 사용 지점을 쉽게 판별해낼 수 있게 해준다.
Streamline은 ARM 기반 기기에 TCP/IP 연결만 갖추면 프로세서의 프로그램과 퍼포먼스 카운터(performance counter)를 샘플링하여 취합해 낮은 비용으로 타겟의 메모리 리소스에 상관 없이 전체 리눅스 소프트웨어 스택을 장기간에 걸쳐 분석할 수 있도록 해준다. 취합된 성능 데이터는 시스템 단위에서 소프트웨어 수행 상태를 보여주며, 여러 번 반복 수행 없이 취합된 데이터를 다시 처리할 수 있어 소프트웨어의 다른 영역들에 분석을 집중할 수 있다.
Streamline은 개발자들이 직관적으로 리눅스 드라이버, 라이브러리, 애플리케이션을 최적화할 수 있도록 해준다. 각 프로세스부터 쓰레드, 함수, 소스 코드, 어셈블리 코드 수준까지 다양한 수준에서 제공되는 프로파일 리포트(Profile report)는 결정적인 성능 영역에 대한 판별을 용이하게 하며, 코드 내 개별 콜 패스(call path)에 대한 스택 사용 보고가 이루어져, 개발자는 각 쓰레드 당 동적 메모리 요구량을 최소화하기 위한 기능들에 집중할 수 있게 된다.
Streamline은 또한 독자적인 Timeline (타임라인) 보기 방식을 갖추고 있어, 활성화된 프로세스, 쓰레드, 함수, 그리고 cache miss이나 processor load와 같은 퍼포먼스 카운터 관련 정보 간 시간 별 상관관계를 제공해준다. 타임라인 보기 방식은 개발자들이 멀티쓰레드 애플리케이션을 구현할 때 비효율적인 지점뿐만 아니라 수행의 병목지점, 차선(sub-optimal)의 캐시 사용, 전력 사용량이 큰 유휴 루프, 기타 많은 전체 시스템 내 문제를 일으키고 있는 코드 영역까지 간단히 판별해낼 수 있도록 해준다.
커널 2.6.32 또는 그 이상 버전에 기초한 ARM 리눅스 시스템과 호환이 가능한 Streamline의 독자적인 커널 모듈은 툴의 평균 오버헤드를 5% 아래로 유지하면서 대량의 퍼포먼스 관련 데이터를 취합할 수 있다. 이 오픈소스 드라이버는 Linaro™(리나로) 커널 기반을 포함해 가장 많이 사용되는 ARM 리눅스 BSP들에 포함되어 있다. |