
qspinlock note (feat. Paravirtualization)-WIP
최근에 ETRI와 함께 Memos라는 역가상화 연구에 참여했다. 주제는 Guest 커널의 spinlock을 수정하여 성능 개선을 하는 것이였다. 이 주제에 대해 공부하면서 얻게된 spinlock에 대한 지식들을 정리하는 시간을 가져보도록 하겠다. 현재 커널에서는 queued spinlock을 사용하고 있는데, 가상화 환경에서는 기존과 다른 문제들이 발생하며 이에 따라 다른 방식으로 spinlock이 동작한다. 따라서 해당 글에서는 queued spinlock과 가상화 환경에서의 이슈에 대해 다뤄보도록 하겠다. 그러기에 우선 전공 책에서 한 번은 보았을 CAS(compare&swap) lock을 왜 쓰지 않는지에 대해 알아보도록 하자. 실제 머신에서의 성능을 확인하기 위해 논문[3]에서 몇 가지 벤치마크 결과를 가져왔다. Cache access performance NUMA architecture에서 remote CPU의 cache에 접근하는 것은