1.
2012년 Low Latency와 관련한 자료를 살펴보던 중 Linux Plumbers Conference를 알았습니다. 이 때 관심을 가지고 보았던 주제가 Multipath TCP와 Low Latency Socket이었습니다.
A Way Towards Lower Latency and Jitter – Jesse Brandeburg
MultiPath TCP – Christoph Paasch
특히 Low Latency Socket을 유심히 살폈지만 Kernel을 변경하여야 하는 기술이라 더 살피지 않았습니다. 그런데 2014 Red Hat Summit: Performance analysis & tuning에서 소개한 것처럼 Redhat 7.0이 Low Latency Socket을 지원한다고 합니다.
Low Latency Socket이 무엇일까요? LLS의 문제의식을 정리하면 아래와 같습니다. 리눅스 커널의 인터럽트가 아니라 리눅스 유저스페이스영역이 NIC를 계속 감시하여 새로운 패킷의 수신을 지연없이 감지하도록 하는 개념입니다.
Extreme low-latency users see things differently, though. The time between a packet’s arrival and the next poll is just the sort of latency that they are trying to avoid. Re-enabling interrupts is not a workable solution, though; interrupts, too, are a source of latency. Thus the drive for user-space solutions where an application can simply poll the interface for new packets whenever it is prepared to handle new messages.
Low-latency Ethernet device polling중에서
이를 그림으로 표현하면 아래와 같습니다.
2012년 자료는 아래와 같이 Low Latency Socket을 정리합니다.
2년의 숙성기간을 거친 후 인텔은 Low Latency Socket을 정식으로 발표합니다.
2.
Rsocket이 있습니다. R은 RDMA의 약자입니다. 즉, RDMA Based Socket이 Rsocket입니다. 왜 Rsocket을 만들었을까요? Verbs를 이용한 프로그램 개발이 너무 불편하기 때문입니다. 2012년 Open Fabric 행사때 발표한 자료가 잘 설명하고 있습니다.
Rsocket을 한장으로 표현해보도록 하죠. Sean Hefty이 2013년에 발표한 자료중 일부입니다.
Socket을 사용하듯이 Rsocket을 이용하여 RDMA Application을 개발할 수 있도록 합니다.
이상과 직접적인 관계가 없지만 Intel환경에서 최적화를 하는 방안을 다룬 최근 자료입니다.