사용 가능한 메모리 양은 시스템의 전반적인 응답성, Microsoft Store 스타일 앱 간 전환 시 응답성, 배터리 수명에 이르기까지 전반적인 사용자 환경에 상당한 영향을 미칩니다. 이는 모두 낮은 메모리에 대한 전반적인 환경을 평가할 때 고려해야 할 중요한 요소입니다. (낮은 메모리는 32비트 Windows 1GB RAM이고 64비트 Windows에서 2GB RAM입니다.)
고려 사항
메모리가 낮은 디바이스를 대상으로 할 때 OEM, IHV, ISV에서 고려해야 하는 몇 가지 사항이 있습니다.
드라이버 및 앱
전체 기준 메모리 공간
일반적인 기준 32비트 소매 Windows 이미지는 부팅 후 약 400MB의 사용 중인 메모리를 사용합니다(ADK의 메모리 공간 평가를 사용하여 측정). 10%의 여유 공간 또는 1GB에서 100MB를 허용하면 실제 메모리에 2~3개의 앱을 저장할 수 있는 충분한 메모리가 남아 앱 간에 빠르게 전환할 수 있습니다. 기본 운영 체제 메모리 공간이 클수록 사용자 및 앱에서 사용할 수 있는 메모리가 줄어듭니다.
기본 OS 메모리 공간에 영향을 미치는 주요 요소는 맬웨어 방지 앱, 디바이스 데스크톱 앱, 소프트웨어 업데이터를 포함하는 드라이버 및 사전 로드된 소프트웨어입니다.
드라이버 공간: 여기에는 드라이버 코드 및 관련 할당이 포함됩니다. 대부분의 드라이버는 항상 메모리에 존재하기 때문에 페이징할 수 없는 메모리(또는 실제 메모리에 있어야 하고 페이징할 수 없는 내용)는 시스템 수명 동안 메모리 사용 측면에서 고정 비용을 구성하므로 매우 중요합니다. 현재 하드웨어 인증 요구 사항은 MDL/연속 메모리 할당, 비페이징 드라이버 코드 및 드라이버별로 비페이징 풀과 같이 페이징할 수 없는 할당을 다룹니다. 자세한 내용은 Device.DevFund.Memory.DriverFootprint를 참조하세요.
하드웨어 메모리 예약: 여기에는 Windows에서 사용할 수 있는 OS 가시 메모리의 양을 줄이고 메모리가 낮은 디바이스의 컨텍스트에서 매우 중요한 메모리 “카브아웃”이 포함됩니다. 현재 하드웨어 인증 요구 사항은 다양한 RAM 구성(System.Fundamentals.Firmware.HardwareMemoryReservation)에 대한 예산을 제공합니다.
리 로드된 소프트웨어 및 맬웨어 방지 앱: 여기에는 부팅 중에 시작되고 세션 수명 동안 활성 상태로 유지되는 서비스/추가 프로세스가 포함됩니다. 시작 시 프로세스를 도입하는 미리 로드된 소프트웨어 세트를 신중하게 고려하고 예산을 책정해야 합니다.
OS 관점에서 Windows에서 런타임 메모리 공간을 줄여 사용자와 앱에서 더 많은 메모리를 사용할 수 있도록 몇 가지 사항이 개선되었습니다. OEM, IHV, ISV와 Microsoft 파트너는 이러한 각 영역에서 공간을 개선하고 뛰어난 고객 경험을 제공하기 위해 신중하게 디바이스를 구성하는 것이 중요합니다.
스토리지
디스크 성능
메모리 부족 구성에서 Windows는 메모리의 콘텐츠 페이징 및 교환에 의존하므로 기본 디스크의 성능은 원활하고 응답성이 뛰어난 사용자 환경을 제공하는 데 중요합니다. 하드웨어 인증 요구 사항은 연결된 대기 디바이스의 스토리지에 대한 주요 성능 메트릭에 대한 지침을 제공합니다. 자세한 내용은 Device.Storage 요구 사항을 참조하세요.
Windows에는 일시 중단된 Microsoft Store 앱의 메모리 사용량을 줄이고 효율적인 순차적 디스크 IO를 통해 다시 시작하는 메커니즘이 있습니다. 예를 들어 다시 시작할 때 디스크에서 읽어야 하는 120MB의 앱을 고려합니다. 60MB/s의 순차적 읽기 성능을 제공하는 디스크는 해당 앱을 디스크에서 다시 읽는 데 2초가 걸리는 반면, 120MB/s를 제공하는 디스크는 콘텐츠를 메모리로 가져오는 데 1초밖에 걸리지 않습니다. eMMC 및 SSD 스토리지는 약 120~150MB/s의 순차적 읽기 속도를 제공하지만 일반적인 회전 디스크의 속도는 약 50MB/s입니다. Windows의 런타임 정책은 스토리지 성능과 느린 디스크(예: HDD 및 HHDD)를 기반으로 절충점을 만들며 이로 인해 앱 스위치/멀티태스킹 환경이 느려지고 앱이 더 많이 종료될 수 있습니다.
디스크 내구성
SSD 및 eMMC 디스크와 같은 비회전 스토리지의 내구성 또는 수명은 워크로드 및 쓰기 정렬과 같은 몇 가지 다른 요인과 함께 디바이스에 쓰여진 데이터의 총 볼륨에 비례합니다. 1GB의 디바이스에서는 메모리 제약 조건을 고려하여 스토리지에 더 많은 양의 쓰기가 발생합니다. 이는 부품을 선택할 때 중요한 고려 사항입니다.
내구성은 제조업체(블록 크기 선택, 플래시 메모리 형식 등)에 따라 크게 달라집니다. 현재 내구성을 측정하는 표준화된 방법은 없습니다. 파트너가 디바이스 선택 결정을 내리기 전에 디스크 내구성을 평가하는 것이 좋습니다.
권장 목표
중요
다음 표에서는 32비트 Windows를 실행하는 시스템에 대한 목표를 제공합니다. 스토리지 성능 지침은 부팅 스토리지 미디어에 적용할 수 있으며 2% 또는 1GB의 사용 가능한 디스크 공간으로 테스트됩니다.
범주 | 메트릭 | 목표 |
---|---|---|
기준 메모리 공간 | 시스템 수준 | |
드라이버 비페이징 코드 |
< 20MB | |
드라이버 비페이징 할당 |
< 30MB | |
하드웨어 메모리 예약 |
< 130MB | |
시작 앱, 서비스, 작업의 총 활성 프라이빗 페이지 |
< 40MB | |
드라이버당(비페이징 할당) | ||
드라이버 잠금/연속 메모리 할당 | 모든 드라이버 형식에 대해 12MB | |
비페이징 할당 |
<= GPU 드라이버의 경우 6MB <= 기타 드라이버의 경우 4MB |
|
비페이징 드라이버 코드 | <= GPU 드라이버의 경우 10MB, <= 기타 드라이버의 경우 1.66MB | |
시작 앱 메모리 공간 | 시작 애플리케이션, 서비스, 작업(맬웨어 방지 포함) | < 40MB |
디스크 성능 | 임의 성능 | |
4KB 쓰기 IOPs, 1GB 영역에서 측정 |
>= 200 IOPs | |
4KB 쓰기 IOPs, 10GB 영역에서 측정 |
>= 50 IOPs | |
64KB 쓰기 IOPs, 1GB 영역에서 측정 |
>= 25 IOPs | |
4KB 읽기 IOPs, 10GB 영역에서 측정 |
>= 2000 IOPs | |
4KB 2:1 읽기/쓰기 혼합 IOPs, 1GB 영역에서 측정 |
>= 500 IOPs | |
4KB 2:1 읽기/쓰기 혼합 IOPs, 10GB 영역에서 측정 |
>= 140 IOPs | |
순차적 성능 | ||
쓰기 속도(64KB I/Os), 10GB 영역에서 측정 |
>= 40 MB/s | |
쓰기 속도(1MB I/Os), 10GB 영역에서 측정 |
>= 40 MB/s | |
읽기 속도(64KB I/Os), 10GB 영역에서 측정 |
>= 60MB/s(120MB/s) | |
디바이스 I/O 대기 시간 | ||
최대 대기 시간 |
< 500밀리초 | |
디스크 내구성 | 수명(lifetime) | >= 2~3년 |
Windows ADK(Assessment and Deployment Kit)를 사용하여 메모리 측정
소매 OS 이미지와 비교하여 ADK의 메모리 공간 평가는 다양한 구성에 대한 기준 메모리 공간의 정량적 평가를 제공합니다.
관련 참고 자료
지침
OEM의 경우
OEM은 하드웨어/드라이버 및 사전 로드된 소프트웨어 선택에 상당한 영향력이 있으며 이는 시스템의 메모리 공간에 직접적인 영향을 미칩니다.
배포하기 전에 깨끗한 이미지 위에 설치하는 드라이버 및 소프트웨어의 영향을 이해하고 정량화하여 이전에 설명한 권장 목표 내에 있는지 확인합니다.
드라이버 수를 줄이거나 메모리 요구 사항이 더 낮은 하드웨어/드라이버를 선택하여 드라이버 공간을 줄입니다.
기본 “항상 실행” 시작 프로세스(미리 로드된 소프트웨어 및 바이러스 백신 프로그램에서 도입됨)의 수를 줄이고 필요한 경우 소비자에게 특정 애플리케이션 또는 기능을 사용하도록 설정하는 방법에 대한 지침을 제공합니다.
시스템 메모리에 영향을 적게 미치면서 동일한 기능을 제공할 수 있는 다른 드라이버 또는 소프트웨어 공급업체를 사용하는 것이 좋습니다.
최신 버전의 소프트웨어는 드라이버 및 소프트웨어 공급업체에 문의하세요. 또한 권장 메모리 사용량보다 높은 특정 드라이버 또는 소프트웨어에 대한 피드백을 파트너에게 제공하고 평가 도구 키트에서 추적 및 로그를 제공합니다.
IHV/ISV의 경우
메모리를 효율적으로 사용하는 드라이버를 제공할 수 있는 IHV를 사용하면 OEM에서 소비자에게 뛰어난 환경을 제공하는 1GB 시스템을 빌드할 수 있습니다.
하드웨어 부품이 이전에 설명한 인증 요구 사항(특히 드라이버에 대한 페이징이 불가능한 공간, 스토리지 하드웨어의 성능, 애플리케이션을 위한 항상 실행되는 앱의 메모리 사용)을 충족하는지 확인합니다.
필요할 때만 기능을 사용하도록 설정하여 “재생에 따른 지불” 모델을 통해 메모리를 효율적으로 사용합니다.
1GB 시스템에만 필요한 기능(예: 하드웨어를 검색하고 특정 코드를 로드하는 플랫폼별 드라이버 패키지 만들기)을 지원하도록 드라이버를 구성하지 마세요.
필요할 때만 필요한 최소 메모리를 할당하고 완료되는 즉시 해제하여 런타임 비용을 최소화합니다(예: 사용자가 명시적으로 구성하지 않는 한 RAID 스토리지를 지원하기 위한 버퍼는 필요하지 않음).
도구를 활용하여 메모리 공간을 이해하고 개선합니다. 다음 대화(드라이버 및 앱의 메모리 공간 줄이기)에서는 사용 가능한 도구와 함께 공간을 줄이는 접근 방식에 대해 설명합니다.
맬웨어 방지 앱 ISV의 경우
맬웨어 방지 앱은 성능에 최적화되지 않은 경우 OS 메모리 공간 및 사용자 환경의 기준에 상당한 영향을 미칠 수 있습니다.
“항상 실행되는” 서비스 및 프로세스의 수와 공간이 가능한 한 최소화되었는지 확인합니다. 예:
실시간 검색을 위해 하나의 프로세스/서비스만 실행하는 것이 이상적입니다.
사용자에 대한 UI 표시와 같은 바이러스 백신 정의를 업데이트하는 기타 프로세스는 사용자 입력 또는 알림에 대한 응답으로 필요한 경우에만 만들어져야 하며 작업이 완료된 후에는 종료되어야 합니다.
“항상 실행되는” 프로세스의 메모리를 효율적으로 사용합니다.
서명을 나타내고 요청 시 특정 부분만 로드하도록 데이터 구조를 유지 관리합니다.
사용자가 명시적으로 요청하지 않는 한 UI를 시작해서는 안 됩니다(예: 부팅 직후 열리는 팝업).
Windows는 성능 최적화를 위해 핵심 Windows API 및 관련 설명서 세트를 제공합니다.
압축(Xpress Compression)을 사용하여 서명 로드 및 유지 관리를 최적화합니다.
작업을 최소화하기 위해 이전에 검사한 파일에 대한 캐시를 유지 관리합니다.
영향을 최소화하기 위해 낮은 CPU/디스크 및 메모리 우선 순위를 사용합니다. 예:
유휴 메모리 공간에 초점을 맞추어 유휴 상태와 전체 시스템 검사와 실시간 검사 중 메모리 공간이 15MB 미만이 되도록 보장합니다. 이렇게 하면 해당 시나리오에서 메모리 공간을 최대한 줄일 수 있습니다.
유효성 검사
프로세스 및 드라이버별로 메모리 사용량을 평가하고 유효성을 검사하려면 ADK의 메모리 공간 평가를 사용합니다. 평가를 실행한 후 WAC(Windows 평가 콘솔) 도구에서 보고서를 열고 다음 지침을 사용하여 관련 메트릭을 추출합니다.
시스템 수준
평가 보고서에서 시스템 차원의 메모리 메트릭을 찾을 수 있습니다. 다음 스크린샷은 총 사용 중인 메모리, 드라이버 비페이징 코드, 할당 메트릭을 강조 표시합니다.
드라이버당
비페이징 코드
개별 드라이버의 특정 비페이징 코드 기여를 확인하려면 드라이버 비페이징 코드 메트릭을 확장합니다.
비페이징 할당
개별 드라이버의 특정 비페이징 할당을 가져오려면 드라이버 비페이징 할당 메트릭을 확장하고 그룹화 기준 ->(없음)을 선택합니다.
프로세스당
시스템에서 개별 프로세스(애플리케이션, 서비스 또는 작업)의 활성 프라이빗 페이지 수를 확인하려면 프로세스 프라이빗 페이지 메트릭을 확장하고 활성 하위 메트릭을 선택합니다.
다음 스크린샷에서 Microsoft Defender(MsMpEng.exe 프로세스)는 프라이빗 작업 집합을 통해 14.9MB의 메모리를 사용합니다.
시작 애플리케이션, 서비스, 작업에 대한 40MB 목표를 달성했는지 유효성을 검사하려면 미리 로드된 소프트웨어와 연결된 이 목록의 모든 프로세스를 식별하고 합계를 계산합니다.