PG18 Beta의 io_uring 효과 보려고 EKS에 배포했는데 log에 다음 메시지가 뜹니다:
LOG: io_method 'io_uring' requested but not available, falling back to 'worker'
호스트 노드 커널: uname -r = 6.8.0-1018-aws. PG18에 io_uring 지원하는 6.6+ 이상인데 왜 fallback?
postgresql.conf:
io_method = 'io_uring'
effective_io_concurrency = 256
Pod SecurityContext:
securityContext:
runAsNonRoot: true
runAsUser: 999
fsGroup: 999
seccomp profile은 default(RuntimeDefault). 컨테이너에서 io_uring 활성화하려면 어떤 권한이 필요한가요?
댓글 2
seccomp default profile이 io_uring system calls(
io_uring_setup,io_uring_register,io_uring_enter)을 차단합니다. EKS default도 이것 막혀 있고요.해결 — seccomp profile 수정
K8s에서 적용:
대안 — seccomp unconfined (보안 trade-off)
이건 security team 승인 필요한 변경입니다. seccomp를 통째 끄는 거라 다른 syscall도 다 허용.
관련 확인
RDS / Aurora 사용 권장
EKS의 컨테이너 Postgres는 io_uring 활성화가 복잡합니다. 매니지드 Postgres(Aurora PG 18, AWS는 4분기 지원 예정)에서는 자동 활성화. self-host의 io_uring 이득(약 3~6배)이 운영 부담 대비 충분한지 검토 필요.
seccomp profile 커스터마이즈하기 어렵다면, Karpenter로 node group을 분리해서 io_uring 전용 노드만 권한 풀어주는 방법도 있습니다. PG Pod를 거기 nodeSelector로 고정. blast radius 최소화.