SOSP 2023 CASYS Virtualization and isolation 내부 세미나 논문 정리
Motivation
Per application에서의 performance isolation을 고려해야 한다. 예를 들어서 client A와 client B가 있을떄, 하나는 read transaction이 돌아가고, 하나는 write이 돌아갈때, client A가 만약 긴 transaction을 잡게된다면, client A가 종료된후, 로깅이 계속 쌓여서, undo log로 지워주어야 하는데, 이러한 logging thread가 undo하는 작업이 돌아가기 때문에, client B의 tail latency가 박살난다.
이러한 dependent한 테스크들이 있을 경우 isolation을 어떻게 만들 것인가가 목적이다.
Background
Application-level의 Virtual resource들은 OS에 의해서 관리되지 않고 User-level에 의해서 관리된다. 리소스의 예시로는, Shared buffer, Queue, Ticket, 그리고 Log등을 포함할 수 있다. 제대로 Fine-grained하게 Resource accounting을 하기 위해서는 이러한 User-level정보가 커널에 있어야 한다.
Main Idea
Abstract된 리소스 사용량과, isolation모델을 정의할 수 있도록 하여서, 그러한 SLO에 맞추어서 커널이 잘 처리할 수 있도록 Isolation model을 만들어 주면 된다. 이 모델을 만들기 위해서는 두개의 중요한 Challenge를 풀어야 한다.
- Application의 리소스의 burst한 사용을 예측하여야 한다.
- 만약 예측될경우, Resource usage isolation을 위한 적절한 방법을 채택해야 한다.
시스템 콜을 통해서, 만약 방해받지 않았을 경우에, 어느정도까지 감수할 것인지를 isolation goal을 통해서 받도록 한다. pbox에서는 latency만을 설정할 수 있다. 커널은 idle한 상황에서의 isolation base line (latency)를 계산하여서, 주어진 Isolation goal이상의 Resource사용량이 발생하면, Application을 복구한다. 이때, Virtual resource는 그 Virtual resource를 사용할때 걸리는 Latency를 통해서 나타내진다.
Design
- Main API
- pBox는
activate_pbox
와freeze_pbox
사이의 Latency를 리소스 사용량으로 계산한다. 추가로, Event모델을 지원하기 위해서 pBox는unbind_pbox
와bind_pbox
API를 사용하여 detach하여, Thread와 무관하게 pbox를 사용할 수도 있다.
리소스를 먹기 시작할때 PREPARE로 들어가고 나갈때 ENTER로 나가서, 그 상태의 latency가 virtual resource로 측정된다.
사용된 휴리스틱은 논문 참고.