메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

Pushing Performance Isolation Boundaries into Application with pBox

noriwiki
Ahn9807 (토론 | 기여)님의 2025년 1월 8일 (수) 04:30 판


Yigong Hu, Gongqi Huang, and Peng Huang
SOSP 2023

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_pboxfreeze_pbox사이의 Latency를 리소스 사용량으로 계산한다. 추가로, Event모델을 지원하기 위해서 pBox는 unbind_pboxbind_pbox API를 사용하여 detach하여, Thread와 무관하게 pbox를 사용할 수도 있다.
pBox는 Resource사용량을 State로 나타내기 위해서 4개의 state를 정의하였다. PREPARE, ENTER, HOLD, UNHOLD로 정의하였다. PREPARE~ENTER은 Application이 리소스를 차지하기 위해서 얼만큼 Deferring되었는지를 측정하고, HOLD~UNHOLD는 리소스를 차지하고 실제 동작하고 있는 시간을 의미한다. 예를 들어서, spin_lock을 건다면, spin_lock을 먹기 위해서 걸리는 시간(Latency)가 PREPARE~ENTER에서 측정되며, spin_lock을 먹고 spin_unlock까지 리소스를 먹고 돌아가는 시간이 HOLD~UNHOLD에서 측정된다.
측정된 Latency를 이용한 Resource Relocation 알고리즘
사용된 휴리스틱은 논문 참고. 결과적으로 나온 결과는 noisy(리소스를 많이 먹고 있는 Thread/Application)와 victim(영향을 받고 있는 Thread/Application)을 결정하고, 적절한 action을 취하게 된다. Action은 scheduling slice를 줄이거나, priority를 줄이는 등의 다양한 방법이 사용될 수 있으나, noisy pBox에 slowdown을 거는 방식을 취하였다. 이를 통하여서 Resource를 burst하게 먹는 noisy한 thread보다 영향을 받고 있는 victim에 resource를 좀더 할당할 수 있도록 하였다.

Conclusion

논문은 Resource를 처리하기 위해서 커널과 유저가 협력해야 하는 이유와, 가능한 모델을 제시하였다.