Lock cohorting: A general technique for designing NUMA locks
개요
Cohort Lock이란 Lock을 두단계로 나누어서 사용하는 구조를 말한다. 각 연관된 Lock들의 group을 Cohort라고 정의하고 (예를 들어서 같은 NUMA node위의 Lock들은 같은 Cohort에 속한다.) 같은 Cohort끼리는 Global lock이 아니라 Local Lock들로 Lock을 정의하며 다른 Cohort끼리는 먼저 Global Lock을 잡아야 Local lock을 잡을 수 있도록 한 것이다.
- 한 스레드가 락을 잡으려고 한다.
- 만약 지금 Lock에 Global Lock이 걸리며 같은 Cohort면
- Local Lock을 잡으려고 하고
- 아닐 경우 Global Lock을 잡으려고 한다.
이렇게 구조하면 starvation이 생기는등 fairness에 문제가 생기는데 저자들은 이 문제도 지적하며 일정한 time quantum마다 강제로 cohort를 넘기게 함으로써 해결할 수 있다고 하였다.