OPNET에서 op_stat_write () 함수를 사용하여 시뮬레이션 결과값을 기록할 때, 바로 뒤에 '0' 값을 기록해주는 경우가 종종 있다. 이렇게 하는 것은 결과값을 해석하는데 상당히 큰 영향을 미칠 때가 있기 때문인데, 다수의 OPNET 사용자들이 그 차이를 잘 이해하지 못하고 있는 부분이기도 하다(덕분에 본인도 모르는 사이에 왜곡된 시뮬레이션 결과를 발표한 분들도 제법 있을 것으로 생각된다).
다음은 "OPNET 기초다지기"의 ARQ 예제에서 작성한 arq_sender 프로세스 모델의 Rcv_HL_Packet 스테이트의 일부분인데, 역시 send_pkt_sthandle Statistic handle에 결과값을 기록한 뒤에 즉시 '0'값을 기록해주는 것을 볼 수 있다.

 


왜 이렇게 '0'값을 같이 기록해주는 것일까? 대부분의 경우에 있어 그 이유는 bucket 방식의 캡춰 모드에서 시간당 결과값을 보다 정확하게 파악하기 위해서이다. 물론, 캡춰 모드와는 상관없이 '0'값을 같이 기록해줄 수도 있지만, 그렇게 사용하는 경우는 극히 드물다(결과 수집을 위한 캡춰 모드에 대해서는 이후에 별도의 글에서 다루도록 하겠다). 즉,  '0'값을 같이 기록해주는 것은 일반적으로 해당 결과(statistic)의 캡춰 모드가 bucket이고, bucket 모드는 sum/time인 경우이다.
다음 그림은 arq_sender 프로세서 모델의 send_pkt_sthandle Statistic handle에 '0'값을 같이 기록하지 않도록 수정한뒤, '0'값을 같이 기록되는 Traffic Generator 모듈의 Tranffic Sent (packet/sec) 결과값과 비교한 것이다. '0'값을 같이 기록하지 않는 arq_sender의 경우 순간순간의 정확한 값(빨간 선)을 보여주지 못하고 좀 더 평균화된 값(파란 선)을 보여주는 것을 알 수 있다.

 


이러한 차이는 하나의 statistic value가 표현하는 시간 간격을 축소시키면 더 확연하게 나타난다. 다음 그림은 위와 동일한 트래픽이 발생하는 경우에 대해서 하나의 statistic value가 1초의 시간 간격을 나타내도록 설정했을 때의 결과이다. '0'값을 같이 기록하지 않는 arq_sender의 경우(파란선) 순간순간의 정확한 값(빨간 선)을 전혀 나타내지 못하는 것을 알 수 있다.

 


지금까지 살펴본 것처럼  bucket 방식의 캡춰 모드에서 시간당 결과값을 보다 정확하게 파악하기 위해서는 '0' 값을 같이 기록해주는 것이 필요하다. 하지만, 일부 상황에서는 '0'값을 같이 기록한 결과값이 해석하기에 더 혼란스러운 경우도 있으므로 사용시 주의하여야 한다.

Posted by 신상헌
,