bgwriter_lru_multiplier
| 버전 | 기본값 | context | 타입 |
|---|---|---|---|
| 14 | 2 | sighup | string |
| 15 | 2 | sighup | string |
| 16 | 2 | sighup | string |
| 17 | 2 | sighup | string |
| 18 | 2 | sighup | string |
| 19 | 2 | sighup | string |
background writer가 한 라운드에 써낼 dirty buffer 수를 계산할 때 쓰는 배수다. 기본값은 2.0이다.
background writer는 최근 라운드들에서 server process가 필요로 한 새 buffer 수의 평균을 구하고, 여기에 bgwriter_lru_multiplier를 곱해 다음 라운드에 필요할 buffer 수를 추정한다. 그 수만큼 깨끗하게 재사용 가능한 buffer가 확보될 때까지 dirty buffer를 써내되, 라운드당 bgwriter_lru_maxpages를 넘지는 않는다. 1.0으로 두면 예측된 수요만큼만 딱 맞춰 써내는 “just in time” 방식이 되고, 더 큰 값은 수요가 갑자기 튈 때를 대비한 여유분을 만들며, 더 작은 값은 쓰기의 일부를 의도적으로 server process 몫으로 남긴다.
postgresql.conf나 서버 커맨드라인에서만 설정할 수 있다.
운영 노트: backend가 buffer를 직접 써내는 비중이 높다면 값을 키워 background writer가 선제적으로 더 많이 감당하게 할 수 있다. 다만 checkpoint 시점에 어차피 써야 할 buffer를 background writer가 미리 여러 번 쓰게 되면 전체 I/O량은 오히려 늘 수 있으므로, 지연 안정성과 총 쓰기량 사이의 트레이드오프로 봐야 한다.
출처: PostgreSQL 18 문서