Abstract
Recent embedded systems are being more complicated due to their hierarchical software architecture including operating systems. The performance of such complicated software architecture could not be well analyzed through separate analysis of each software layer; the combined effect and the interactions among the whole software layers should be considered. In this paper, we show the design and implementation of a performance analysis framework that enables hierarchical analysis of performance of Linux-based embedded systems considering interactions among the software layers. By using the proposed framework, we can obtain useful run-time information about a hierarchical software structure which usually consists of user-defined function layer, library function layer, system call layer, and kernel events layer. Experimental results reveal that the proposed framework could accurately identify the performance bottlenecks with the corresponding software layers during executions of target applications through the accompanying sub-steps of the analysis: the actual execution paths, the execution time of each observed event in each software layer, and the control flows across the software layers.
최근 임베디드 시스템은 운영체제를 포함하는 복잡한 소프트웨어 계층 구조를 가지는 형태로 발전하고 있다. 이러한 소프트웨어의 성능을 분석하기 위해서는, 한 소프트웨어 계층에서의 성능 뿐 아니라 전체 소프트웨어 계층 구조를 모두 고려해야 한다. 본 논문에서는 리눅스 기반 임베디드 시스템의 모든 소프트웨어 계층 구조를 고려할 수 있는 성능 분석 도구를 설계하고 구현한 결과를 보인다. 제안하는 기법은 응용 프로그램이나 라이브러리에 대한 재컴파일 없이 모든 소프트웨어 계층의 성능 분석에 필요한 측정 정보를 수집한다. 이 기법을 통해 리눅스 기반 임베디드 시스템에서 응용 프로그램의 실행에 따라 발생하는 사용자 정의 함수, 미들웨어 라이브러리 함수, 커널의 시스템 호출, 커널 이벤트에 대한 다양한 성능 분석을 수행할 수 있다. 실험을 통해 본 연구를 통해 구현된 분석도구를 사용하여 실제 실행 경로 분석, 각 소프트웨어 계층의 함수나 이벤트의 소요시간 분석, 그리고 소프트웨어 계층간 실행 흐름 분석 결과를 확인할 수 있으며, 이를 통해 전체 소프트웨어 계층상의 성능 병목을 찾을 수 있음을 보인다.