본문 바로가기
Q&A2026년 5월 29일1분 읽기

PostgreSQL 18 Beta + io_uring — 컨테이너에서 활성화가 안 됩니다

윤
윤지수
조회 579댓글 2

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

김김영삼5개월 전

seccomp default profile이 io_uring system calls(io_uring_setup, io_uring_register, io_uring_enter)을 차단합니다. EKS default도 이것 막혀 있고요.


해결 — seccomp profile 수정


# custom-seccomp.json
{
"defaultAction": "SCMP_ACT_ERRNO",
"syscalls": [
{
"names": ["io_uring_setup", "io_uring_register", "io_uring_enter"],
"action": "SCMP_ACT_ALLOW"
},
{
// 다른 모든 default 허용 syscalls 그대로
...
}
]
}

K8s에서 적용:


securityContext:
seccompProfile:
type: Localhost
localhostProfile: profiles/postgres-io-uring.json

대안 — seccomp unconfined (보안 trade-off)


securityContext:
seccompProfile:
type: Unconfined
# 또는 container 단위 annotation
# container.apparmor.security.beta.kubernetes.io/postgres: unconfined

이건 security team 승인 필요한 변경입니다. seccomp를 통째 끄는 거라 다른 syscall도 다 허용.


관련 확인


# Pod 안에서 io_uring 사용 가능한지
strace -e io_uring_setup ls 2>&1 | head
# EPERM이면 seccomp 차단됨

RDS / Aurora 사용 권장


EKS의 컨테이너 Postgres는 io_uring 활성화가 복잡합니다. 매니지드 Postgres(Aurora PG 18, AWS는 4분기 지원 예정)에서는 자동 활성화. self-host의 io_uring 이득(약 3~6배)이 운영 부담 대비 충분한지 검토 필요.

서서버지기영호5개월 전

seccomp profile 커스터마이즈하기 어렵다면, Karpenter로 node group을 분리해서 io_uring 전용 노드만 권한 풀어주는 방법도 있습니다. PG Pod를 거기 nodeSelector로 고정. blast radius 최소화.

Ctrl+Enter로 등록