For the last decade, journaling of XFS filesystem has not been well analyzed. ScaleXFS pointed out the scalability bottleneck of XFS journaling and resolved it through their novel methods. In this paper, we focus on analyzing the remaining problems in ScaleXFS, and improve it. Among the problems remaining in ScaleXFS, we found lock contention caused by sub-modules such as workqueue and wait queue used in XFS journaling. We proposes the per-core pool workqueue and busy-wait on-disk logging to solve these problems. By using per-core pool workqueue, we resolve the lock contention on worker pool inside the workqueue. Also, we resolve the lock contention on global wait queue and decrease the computation latency of journal thread through busy-wait based on-disk logging. Through the experiment with varmail workload and exim, we can outperform by 24% and 28% against ScaleXFS respectively.
XFS 파일시스템의 저널링은 수년 간 면밀히 다루어지지 않았고, ScaleXFS는 XFS 파일시스템 저널링의 확장성 문제를 지적, 분석하고 이를 해결하였다. 본 논문에서는 ScaleXFS에서 남아있는 문제점에 대해 분석하고, 이를 개선한다. 우리는 ScaleXFS 에 남아있는 문제점 중, XFS의 저널링에서 사용하는 워크 큐와 대기 큐와 같은 서브 모듈들에 의해 발생하는 락 컨텐션을 발견하였다. 이어, 본 논문은 이를 해결하기 위한 Per-core 풀 워크 큐의 사용과 busy-wait 기반의 온디스크 로깅을 제안한다. Per-core 풀 워크 큐의 사용으로 인해 워크 큐 내부의 워커 풀에 대한 락 컨텐션을 해소하였다. 또 한, busy-wait 기반의 온디스크 로깅으로 인해 저널 쓰레드의 연산 시간을 감소시키고 전역 대기 큐로 인한 락 컨텐션을 제거하였다. Varmail 워크로드와 메일서버인 exim을 사용하여 실험한 결과, 각각 최대 약 24%, 28%의 성능 향상을 이루어 낼 수 있었다.