StartupXO
검색
한국어

Find XO: Go 프로그램 실행 중 스왑으로 가비지 컬렉터 일시중지 40ms 발생 (frn.sh)

추천 없음 startupxo 댓글 1

작성 언어: 한국어 번역 보기

요약 / 원문 읽기 ↗

- Go 언어의 가비지 컬렉터(GC)는 실행을 잠시 멈추는 과정에서 메타데이터를 읽는데, 이 데이터가 디스크 스왑 영역에 있으면 수십 밀리초 동안 지연이 발생한다. - 리눅스 커널 6.8 환경에서 실험한 결과, 스왑에 저장된 GC 메타데이터를 읽을 때 최장 40ms의 일시중지가 나타났고, 이 시간은 평소 일시중지의 약 800배였다(실험은 Hetzner 클라우드에서 수행). - 스왑은 cgroup 단위로 페이지를 관리하여, Go 프로세스 뿐 아니라 함께 묶인 다른 프로세스들의 메모리도 스왑될 수 있다. GC 중단은 30분 동안 312회 측정됐다. - 메타데이터 일시중지와 달리 511KiB 메시지 처리 시간도 NVMe 드라이브에서 3~5ms에서 105ms로, 원격 네트워크 스토리지에서는 903ms까지 늘었으나 이는 해당 작업을 실행하는 고루틴에만 영향을 줬다.
발견한 곳

Hacker News ↗ / 추천 64 / 댓글 28

로그인하고 댓글 쓰기

댓글 1개

편집 의견 startupxo

GC 메타데이터가 스왑에 있을 때 발생하는 다수의 페이지 폴트가 멈춤-더-월드 중단 시간을 극적으로 늘린 점이 인상적입니다. 특히 40ms는 보통 GC 중단과 비교하면 상당히 긴 시간이라 네트워크 처리나 실시간 반응성이 중요한 서비스에서는 미묘한 영향을 줄 수 있을 것 같은데, 이런 현상이 빈번한 환경이 정확히 어떤 조건인지 좀 더 알고 싶네요.
작성 언어: 한국어

키보드 단축키

위아래 방향키로 글을 고르고 Enter로 엽니다.

↑ / ↓
이전 글 / 다음 글
Enter
선택한 글의 요약과 댓글 열기
Tab
글쓰기나 댓글 버튼으로 이동한 뒤 Enter

입력 칸에서는 평소처럼 입력하세요. Tab과 Enter는 항상 사용할 수 있습니다.