한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

게임 렉 백서 › L1 클라이언트 게임 프로세스

저장장치가 느려 에셋 스트리밍이 밀림 Slow storage stalls asset streaming

원인 ID cg-asset-stream · 주 담당 게임개발팀·클라이언트 개발 · 함께 외부·외부

그림과 실험이 있는 원본 카드로 열기 →

HDD처럼 느린 저장장치에서는 오픈월드의 텍스처·모델을 읽는 속도가 이동을 따라가지 못해, 개체가 늦게 뜨거나 게임이 읽기를 기다리며 끊깁니다.

왜 탈것·텔레포트로 빠르게 이동하거나 사람 많은 곳에 들어가 새 텍스처·모델이 한꺼번에 필요해짐 → 그러면 HDD 같은 느린 저장장치가 필요한 속도로 읽지 못해 읽기 요청이 쌓이고 일부 로딩은 메인 스레드가 끝날 때까지 기다림 → 화면에서는 텍스처가 한동안 흐릿하고 건물·캐릭터가 늦게 나타나며 읽기를 기다리는 순간 뚝뚝 끊김·멈춤

증상
안 보임·유령 개체, 뚝뚝 끊김, 멈춤
요인
정체
누가 겪나
나만
언제
이동 중·지역 전환 때, 사람이 몰릴 때
담당
주 담당 게임개발팀·클라이언트 개발 · 함께 외부·외부
게임개발팀 할 일
읽기를 메인 스레드에서 기다리지 않는 비동기 스트리밍, 이동 방향·속도를 보고 미리 읽기, 낮은 해상도(밉맵)·간단한 모델을 먼저 보여 주고 나중에 바꾸기, 빠른 이동 중 스트리밍이 밀리면 잠깐 이동 속도를 제한하거나 로딩 화면 쓰기, 최소·권장 사양에 SSD 필요 여부 명시.
외부 할 일
유저에게 게임을 SSD에 설치하도록 안내, 같은 디스크에서 다운로드·백신 검사가 도는지 확인하도록 안내.
수치 감각
마이크로소프트에 따르면 예전 하드디스크는 1초에 수십 MB, NVMe SSD는 1초에 수 GB를 읽고 이전 세대 게임은 스트리밍에 1초에 50MB 안팎을 썼습니다. SSD 속도를 전제로 이보다 훨씬 많이 읽는 게임을 HDD에서 돌리면 읽기가 이동을 따라가지 못하기 쉽습니다.
그래프에서는
일부만 높음 · 프레임 스파이크 수(저장장치 종류별), 디스크 읽기 지연
확인할 곳
윈도우 성능 모니터의 PhysicalDisk\Avg. Disk sec/Read(읽기 한 번의 평균 시간)·Current Disk Queue Length와 PresentMon 프레임 시간을 빠르게 이동하면서 함께 기록. 개발 빌드는 언리얼 stat Streaming·stat AsyncLoad, 유니티 프로파일러의 AssetBundle.asset/allAssets 경고(로딩이 끝나기 전에 결과를 요청해 메인 스레드가 기다림)를 봄
이러면 맞음
빠르게 이동할 때 디스크 읽기 지연과 대기열이 치솟고 같은 시각 프레임이 튀거나 텍스처·개체가 늦게 뜸. 같은 장면을 SSD에서 돌리면 사라짐
이러면 아님
디스크는 한가한데 텍스처가 흐릿하면 “그래픽 메모리(VRAM) 부족”, 같은 곳 두 번째 방문부터 멀쩡하면 “메인 스레드 동기 로딩·셰이더 컴파일”
확인 수단
유저 쪽 환경에서 확인
더 알아보기
처음 한 번만 멈추고 다음부터 괜찮다면 “메인 스레드 동기 로딩·셰이더 컴파일”에 가깝고 저장장치가 느린 PC에서만 이동할 때마다 반복되면 이 원인입니다. 그래픽 메모리가 모자라 텍스처를 내렸다 올리는 “그래픽 메모리(VRAM) 부족”도 흐릿한 텍스처를 만드니, 디스크 읽기 대기와 그래픽 메모리 사용량을 함께 봅니다. 백신의 실시간 검사가 게임 파일을 열 때마다 끼어들어 읽기가 더 늦어지기도 합니다.

출처

  1. DirectStorage is coming to PC Microsoft
    예전 하드디스크는 초당 수십 MB, NVMe SSD는 초당 수 GB, 이전 세대 게임의 에셋 스트리밍 예산은 초당 50MB 안팎, 오픈월드 게임은 이동하며 먼 풍경을 실시간으로 읽고 버림
  2. Texture and mesh loading Unity
    동기 업로드는 메인 스레드에서 한 프레임에 읽고 올려 눈에 띄는 멈춤을 만들고, 비동기 업로드는 여러 프레임에 걸쳐 스트리밍함
  3. Texture Streaming Overview for Unreal Engine Epic Games
    스트리머가 시점에 맞춰 텍스처 해상도(밉)를 올리고 내리며 계산 대부분은 비동기 작업 스레드에서 하고 화면에 보이는 밉부터 불러옴
  4. Profiler markers reference Unity
    AssetBundle.asset/allAssets 경고: 로딩이 끝나기 전에 결과를 요청해 메인 스레드가 멈춰 기다림
  5. Stat Commands in Unreal Engine Epic Games
    stat Streaming(스트리밍 텍스처의 메모리·개수), stat AsyncLoad(비동기 로딩 통계)
  6. Windows Performance Monitor Disk Counters Explained Microsoft
    Avg. Disk sec/Read는 읽기 한 번이 끝나는 데 걸린 평균 시간(I/O 지연), Current Disk Queue Length는 측정 순간의 디스크 대기열 길이
  7. PresentMon Capture Application (README-CaptureApplication.md) Intel
    FrameTime(프레임 사이 CPU 시간)으로 프레임별 시간을 녹화
  8. About regular quick and full scans with Microsoft Defender Antivirus Microsoft
    실시간 보호는 파일을 열고 닫을 때마다 검사

함께 보면 좋은 원인

같은 층: L1 클라이언트 게임 프로세스

같은 증상(안 보임·유령 개체)의 다른 층 원인

그림과 실험이 있는 원본 카드 보기