sync logging에서 log buffer flush 재검토: 직접 수행 vs. 요청 방식 #512
위 이슈 처리 결과로 worker thread 가 flush thread 에게 flush 요청하는 방식으로 처리되었다.
구현 방식을 보면 flush_lsn_lock 을 통해 worker thread 는 waiter_lsn 을 등록하고, flush thread 는 waiter_lsn 을 확인함에 따라서 flush_lsn_lock 잡는 횟수가 증가하게 되었다.
이를 최적화한다면 flush thread 는 flush_lsn_lock 을 잡지 않고도 waiter_lsn 까지 flush 해야하는지 확인할 수 있는 방안이 있다.
- flush thread 가 nxt_flush_lsn 변경 시점에 upt_flush_lsn 과 비교한 정보를 기록해 두고, next flush 작업에서 이용.
- 다만, 현재 flush 작업 이후에 그리고 sleep 하기 이전에 upt_flush_lsn이 등록된다면, sync_logging 에서는 가능한 빨리 flush 를 해주기 위해 그 사실 확인이 필요.
최적화 구현과 현재 구현과의 성능 비교 후 최적화할 지 검토한다.
sync logging에서 log buffer flush 재검토: 직접 수행 vs. 요청 방식 #512
위 이슈 처리 결과로 worker thread 가 flush thread 에게 flush 요청하는 방식으로 처리되었다.
구현 방식을 보면 flush_lsn_lock 을 통해 worker thread 는 waiter_lsn 을 등록하고, flush thread 는 waiter_lsn 을 확인함에 따라서 flush_lsn_lock 잡는 횟수가 증가하게 되었다.
이를 최적화한다면 flush thread 는 flush_lsn_lock 을 잡지 않고도 waiter_lsn 까지 flush 해야하는지 확인할 수 있는 방안이 있다.
최적화 구현과 현재 구현과의 성능 비교 후 최적화할 지 검토한다.