Papers/Others

Performance Data Collection Using a Hybrid Approach

tomato13 2010. 3. 29. 20:05

Performance profiling은 두가지 방법으로 진행이 될 수 있다. 

(물론 분류를 다르게 할 수도 있을 것이다.)


첫째는 source instrumentation에 의한 방법으로 소스 코드에 probe 코드를 넣어서 동작을 모니터링하는 방법이다.

둘째는 sampling방식으로 platform(s/w or h/w)의 internal state를 분석하는 것이다.


첫째방법으로는 정확한 모니터링이 가능하다. 하지만 적용에 따른 영향이 커서 오동작이 발생할 가능성이 있다. 둘째방법은 실제 영향의 정도는 매우 작으나(ex. 1%) 정보의 양이 상대적으로 매우 작다는 단점이 있다.


그렇다면 이 두가지를 어떻게 결함하면 가능한 필요한 모든 정보도 획득하고 시스템에 대한 영향도 최소화할 것인가? 자료에서는 꼭 필요한 부분에 대해서는 event tracing(instrumentation)방법을 적용하고 상대적으로 호출되는 빈도는 높거나 그다지 중요하지 않은 부분에 대해서는 sampling방법을 사용할 것을 제안한다.


예를 들어본다면 보다 이해가 쉬울 것이다. 예를 들어서 module간의 thread switching되는 동작을 분석할 경우에는 switching을 확인할 수 있는 부분에 대해서만 event tracing을 적용하고 그 외의 영역에 대해서는 sampling방법을 적용하는 것이 좋을 것이다. 또한 device connection에 대한 모니터링에 있어서도 device연결이 on인지 혹은 off인지 확인이 가능한 부분에 대해서만 event tracing을 적용하는 것이 효과적일 것이다. 반면 sleep모드에서 반복적으로 계속 호출되는 부분에 대해서는 sampling방법을 적용하여 영향을 최소화는 것이 좋을 것이다.