Jitter= Latency Variation

1.
자본시장IT에 몸 담고 있으면 이제 latency는 아주 익숙한 단어입니다. Low Latency에 대한 관심도 높습니다. 때문에 DMA를 이용하고자 하고 부산IDC에 입주하려고 합니다. 그런데 여전히 latency를 상수이자 숫자로 보는 듯 합니다.

DMA매매를 하는 트레이더중 한 곳이 아닌 여러곳에서 매매를 합니다. 같은 서버, 같은 전략이므로 같은 체결율을 원합니다. 그렇지만 현실은 다릅니다.?예를 들면 이렇습니다.

“환경이 다 같은데 왜 느릴까?”

이렇게 반문을 해볼 수 있습니다.

“환경이 다 같으면 똑같을까?”

똑같을 수 없습니다. 100% 동일하다고 하여도 다릅니다. 때문에 Latency를 분포로 이야기합니다. Jitter때문입니다. 아주 간단한 실험을 해보았습니다. CPU와 Timer Latency의 관계를 다룬 글을 소스를 만들어 실행하였습니다.

How Accurate is Your Time? A Comparison of Timer Performance and Jitter on Intel vs Power

개발은 개발파트너가 담당하였습니다. Latency를 측정할 때 사용할 때 로그파일에 시간을 남겨서 비교합니다. 이 때 일반적으로 사용하는 함수가 gettimeofday()입니다.

이상을 컴파일하여 개발장비에서 실행을 하였습니다.

최대와 최소값이 40배정도 차이가 납니다. 99%와 99.9%의 값을 구해보시길 바랍니다. 같은 서버에서 시간을 로글에 남기기 위해 gettimeofday()를 호출할 때마다 서로 다른 지연이 발생합니다. 같은 장비에서도 다른 값입니다. 하물며 100% 사양이 동일하고 프로그램이 같다고 하여 같은 값이 나올 수 없습니다.

2.
또다른 실험을 하였습니다. Linux의 Timer중 어떤 것이 가장 적은 비용=latency인지를 측정하였습니다. 이 또한 2010년에 쓰여진 블로그의 글을 참고로 하였습니다. Read Time Stamp Counter (RDTSC) 와 High Precision Event Timers (HPET)을 비교한 시험입니다.

High Performance Time Measurement in Linux

비교 프로그램의 소스는 아래와 같습니다.

천만번을 실행하였습니다. 그런데 재미난 결과를 보여줍니다. 먼저 특별한 옵션없이 컴파일을 한 후 실행하였습니다.

HPET가 더 좋습니다. 그런데 컴파일할 때 최적화옵션을 주었습니다. 결과가 반대로 나왔습니다. RDTSC가 3배정도 좋습니다.

앞서 소개한 블로그의 결과는 14배 정도 RDTSC가 좋다고 합니다. 어떻게 해야 할까요?

3.
Latency에 대한 관심이 이제는 Jitter로 옮겨져야 할 때입니다. 하드웨어와 네트워크 및 어플리케이션 을 Low Latency환경에 적합한 방향으로 구축하였습니다. 그렇지만 OS를 통하여 움직이기 때문에 Jitter는 어쩔 수 없습니다. 다만 편차를 줄이는 노력이 필요합니다. 가장 어렵고 힘든 과정인 튜닝입니다. 모범사례를 조사할 필요도 있지만 끊임없이 시험을 해보고 측정을 해야 합니다. 긴 과정입니다. Jitter때문에 FPGA와 같은 하드웨어방식으로 선호하는 경우도 있네요.

Leave a Comment

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.