使用可能なメモリの量は、システムの全体的な応答速度、Microsoft Store スタイル アプリ間の切り替え時の応答速度、バッテリの寿命など、全体的なユーザー エクスペリエンスに大きな影響を与えます。 これらはすべて、低メモリの全体的なエクスペリエンスを評価するときに考慮する必要がある重要な要素です。 (低メモリとは 32 ビット Windows では 1 GB、64 ビット Windows では 2 GB の RAM です)
考慮事項
OEM、IHV、ISV は、低メモリ デバイスをターゲットとする場合に考慮する必要がある点がいくつかあります。
ドライバーとアプリ
全体的なベースライン メモリフットプリント
一般的なベースラインの 32 ビット製品版 Windows イメージでは、起動後に約 400 MB の使用メモリが消費されます (ADK のメモリ フットプリント評価を使用して測定) 。 1 GB で 10% のヘッドルームまたは 100 MB を使用すると、物理メモリ内には2 から 3 のアプリが使用する十分なメモリが残り、アプリ間の高速な切り替えが可能になります。 基本オペレーティング システムのメモリ フットプリントが大きいほど、ユーザーとアプリが使用できるメモリは少なくなります。
ベースライン OS メモリのフットプリントに影響を与える主な要因は、マルウェア対策アプリ、デバイス デスクトップ アプリ、ソフトウェア アップデータなど、ドライバーと事前に読み込まれたソフトウェアです。
ドライバーのフットプリント: これには、ドライバー コードと関連付けられた割り当てが含まれます。 ほとんどのドライバーはメモリに常に存在するため、非ページ メモリ (または、物理メモリ内に存在する必要があるか、ページアウトできないコンテンツ) は、システムの有効期間全体のメモリ使用率の観点から固定コストを構成する上で非常に重要です。 現在のハードウェア認定要件は、非ページ割り当て、つまり MDL/連続メモリ割り当て、非ページ ドライバー コード、およびドライバーごとの非ページ プールに対応しています。 詳細については Device.DevFund.Memory.DriverFootprint を参照してください。
ハードウェア メモリ予約:これには、メモリ "カーブアウト" が含まれ、これによって Windows で使用できる OS に表示されるメモリの量が減ります。これは低メモリのデバイスを使用するときは非常に重要になります。 現在のハードウェア認定要件では、さまざまな RAM 構成: System.Fundamentals.Firmware.HardwareMemoryReservation に対する予算が提供されています。
前に読み込まれたソフトウェアとマルウェア対策アプリ:これには、ブート中に起動し、セッションの有効期間中にアクティブな状態を維持するサービスや追加のプロセスが含まれます。 起動時にプロセスを導入する事前に読み込まれる一連のソフトウェアは、慎重に検討し、予算を設定する必要があります。
OS の観点から、ユーザーとそのアプリで使用できるメモリを多く確保するため、Windows での実行時のメモリ フットプリントを削減するいくつかの改善が行われました。 OEM、IHV、ISV、および Microsoft パートナーがこれらの各領域のフットプリントを改善し、優れたカスタマー エクスペリエンスを提供するよう慎重に考慮してデバイスを構成することが重要です。
Storage
ディスクのパフォーマンス
低メモリ構成では、Windows はメモリからのコンテンツのページングとスワップに依存するため、基になるディスクのパフォーマンスは、スムーズで応答速度の早いユーザー エクスペリエンスを提供する上で重要です。 ハードウェア認定要件は、コネクト スタンバイ デバイス上のストレージの主なパフォーマンス メトリックに関するガイダンスを提供しています。 詳細については、「デバイス記憶域の要件」を参照してください。
Windows には、中断された Microsoft Store アプリのメモリ使用量を減らし、効率的なシーケンシャル ディスク IO を介して再開するメカニズムがあります。 たとえば、再開時にディスクから読み取る必要がある 120 MB のアプリについて検討します。60 MB/秒の順次読み取りパフォーマンスを提供するディスクは、そのアプリがディスクから読み戻されるのに対して 2 秒かかる一方、120 MB/秒のディスクはその内容をメモリに取り込むのにわずか 1 秒しかかかりません。 eMMC および SSD ストレージは、約 120 ~ 150 MB/秒の順次読み取りレートを提供しますが、一般的な回転ディスクの速度は約 50 MB/秒です。 Windows の実行時ポリシーは、ストレージのパフォーマンスと低速のディスク (HDD や HHDD など) を基にトレードオフを実施し、その結果、アプリの切り替えやマルチタスクのエクスペリエンスが低下し、アプリの終了が増加する可能性があります。
ディスクの耐久性
SSD や eMMC ディスクなどの非回転ストレージの耐久性または有効期間は、デバイスに書き込まれるデータの総量に比例し、ワークロードや書き込みの配置など、他のいくつかの要因に比例します。 1 GB デバイスでは、メモリの制約を考慮してストレージへの書き込みの量が大きくなります。これは、パーツを選択する際の重要な検討事項です。
耐久性は、製造元 (ブロック サイズの選択、フラッシュ メモリの種類など) によって大きく異なります。現時点では、耐久性を測定する標準化された方法はありません。 パートナーは、デバイスの選択を決定する前に、ディスクの耐久性を評価することをお勧めします。
推奨される目標
重要
次の表は、32 ビットの Windows を実行するシステムの目標を指定しています。 ストレージ パフォーマンス ガイダンスはブート ストレージ メディアに適用され、2% または 1 GB 未満の空きディスク領域でテストされます。
カテゴリ | メトリック | 目標 |
---|---|---|
ベースライン メモリフットプリント | システム レベル | |
ドライバーの非ページ コード |
< 20 MB | |
ドライバーの非ページ割り当て |
< 30 MB | |
ハードウェア メモリ予約 |
< 130 MB | |
スタートアップ アプリ、サービス、タスクのアクティブなプライベート ページの合計 |
< 40 MB | |
ドライバー別 (非ページ割り当て) | ||
ドライバーのロック/連続したメモリ割り当て | すべての種類のドライバーに対して 12 MB | |
非ページ割り当て |
<= GPU ドライバーの場合は 6 MB <= 他のドライバーの場合は 4 MB |
|
非ページ ドライバー コード | <= GPU ドライバーの場合は 10 MB、<= 他のドライバーの場合は 1.66 MB | |
スタートアップ アプリのメモリ フットプリント | スタートアップ アプリケーション、サービス、タスク (マルウェア対策を含む) | < 40 MB |
ディスクのパフォーマンス | ランダムなパフォーマンス | |
4 KB の書き込み IOP (1 GB の領域で測定) |
>= 200 IOP | |
4 KB の書き込み IOP (10 GB の領域で測定) |
>= 50 IOP | |
64 KB の書き込み IOP (1 GB の領域で測定) |
>= 25 IOP | |
4 KB の読み込み IOP (10 GB の領域で測定) |
>= 2000 IOP | |
4 KB 2:1 の読み取り/書き込みミックス IOP (1 GB 領域を超える測定) |
>= 500 IOP | |
4 KB 2:1 の読み取り/書き込みミックス IOP (10 GB 領域を超える測定) |
>= 140 IOP | |
シーケンシャル パフォーマンス | ||
書き込み速度 (64 KB I/O)、10 GB 領域で測定 |
>= 40 MB/秒 | |
書き込み速度 (1 MB I/O)、10 GB 領域で測定 |
>= 40 MB/秒 | |
読み取り速度 (64 KB I/O)、10 GB 領域で測定 |
>= 60 MB/秒 (120 MB/秒) | |
デバイス I/O 待機時間 | ||
最大待ち時間 |
< 500 ミリ秒 | |
ディスク エンドランス | 有効期間 | >= 2 ~ 3 年 |
Windows アセスメント & デプロイメント キット (ADK) を使用したメモリの測定
リテール版 OS イメージと比較して、ADK のメモリ フットプリント評価では、さまざまな構成に対するベースライン メモリ フットプリントの定量的評価が提供されます。
関連リソース
メモリ フットプリント評価の実行とデータの収集に関するガイダンス: メモリ フットプリント
結果を理解する: 目標ファイル
ガイダンス
OEM の場合
OEM は、ハードウェア/ドライバーと事前に読み込まれたソフトウェアの選択に大きな影響を与えます。これは、システムのメモリ フットプリントに直接影響します。
展開する前に、クリーンなイメージに対するインストールするドライバーとソフトウェアの影響を理解して定量化し、前に説明した推奨される目標内に収めるようにします。
ドライバー数を減らすか、メモリ要件が低いハードウェア/ドライバーを選択して、ドライバーのフットプリントを削減します。
(事前に読み込まれたソフトウェアおよびウイルス対策プログラムによって導入される) 既定の "常に実行" スタートアップ プロセスの数を減らし、必要に応じて、特定のアプリケーションまたは機能の有効化に関するガイダンスをコンシューマーに提供します。
同等の機能を提供できるシステム メモリへの影響が低い別のドライバーまたはソフトウェア ベンダーの使用を検討してください。
最新バージョンのソフトウェアについては、ドライバーおよびソフトウェア ベンダーに問い合わせください。 また、推奨されるメモリ使用量よりも高い特定のドライバーまたはソフトウェアについて、パートナーにフィードバックを提供し、評価ツールキットのトレースとログを提供します。
IHV/ISV の場合
メモリ効率の高いドライバーを提供できる IHV を使用すると、OEM は、コンシューマーに優れたエクスペリエンスを提供する 1 GB システムを構築できます。
ハードウェア パーツが、前述の認定要件を満たしていることを確認します (特に、ドライバーの非ページ フットプリント、ストレージ ハードウェアのパフォーマンス、およびアプリケーションの"常に実行" アプリのメモリ使用量)。
必要に応じてのみ機能を有効にすることで、"利用に応じた料金制度" モデルを使用するメモリ使用量を効率化します。
1 GB システムにのみ必要な機能をサポートするドライバーを構成しないようにします (ハードウェアを検出し、固有のコードを読み込むプラットフォーム固有のドライバー パッケージを作成するなど)。
必要なときに必要な最小のメモリを割り当て、完了後 すぐに解放することで、ランタイム コストを最小限に抑えます (たとえば、ユーザーが明示的に構成しない限り、RAID ストレージをサポートするためのバッファーは必要ありません)。
ツールを活用してメモリフットプリントを理解し、改善します。 次の説明では、フットプリントを削減する方法と使用可能なツールについて説明します。ドライバーとアプリのメモリ フットプリントを削減する。
マルウェア対策アプリ ISV の場合
マルウェア対策アプリは、パフォーマンスのために最適化されていない場合、OS メモリ フットプリントとユーザー エクスペリエンスのベースラインに大きく影響する可能性があります。
"常に実行" サービスおよびプロセスの数とフットプリントを可能な限り最小限に抑えるようにします。 次に例を示します。
理想的には、リアルタイム スキャンで 1 つのプロセス/サービスのみを実行します。
ユーザーの UI 表示など、ウイルス対策定義を更新するその他のプロセスは、ユーザーの入力や通知に応じて必要な場合にのみ作成し、操作が完了したら終了する必要があります。
"常に実行" プロセスのメモリ使用量を効率的にします。
デジタル署名を表し、必要に応じて特定の部分のみを読み込むデータ構造を維持します。
ユーザーが明示的に要求しない限り、UI を起動しないようにします (起動直後に開くポップアップなど)。
Windowsは、パフォーマンスを最適化するために、Windows API と関連ドキュメントのコア セットを提供します。
圧縮 : Xpress 圧縮を使用してデジタル署名の読み込みとメンテナンスを最適化します。
作業を最小限に抑えるために、以前にスキャンしたファイルのキャッシュを維持します。
影響を最小限に抑えるには、CPU/ディスクとメモリの低い優先順位を使用します。 次に例を示します。
アイドル状態のメモリ フットプリントに重点を置き、アイドル時のメモリ フットプリントと、システムのフル スキャンおよびリアルタイム スキャン時に < 15 MB を確保します。 こうすることで、これらのシナリオでメモリのフットプリントが可能な限り削減されます。
検証
プロセスとドライバーによるメモリ使用量を評価および検証するには、ADK のメモリ フットプリント評価を使用します。 評価が実行された後、Windows Assessment Console (WAC) ツールでレポートを開き、次のガイダンスを使用して関連するメトリックを抽出します。
システム レベル
システム全体のメモリ メトリックは、評価レポートで確認できます。 次のスクリーンショットでは、[使用中のメモリ合計] 、[ドライバーの非ページ コード] と [割り 当て] のメトリックが強調表示されています。
ドライバーごと
非ページ コード
個々のドライバーの特定の非ページ コードの貢献を取得するには、[ドライバーの非ページ コード] メトリック を展開 します。
非ページ割り当て
個々のドライバーの特定の非ページ割り当てを取得するには、[ ドライバーの非ページ割り当て] メトリックを展開し、[ グループ化] -> (なし) を選択します。
プロセスあたり
システム上の個々のプロセス (アプリケーション、サービス、またはタスク) のアクティブなプライベート ページの量を取得するには、[プライベート ページの処理] メトリックを展開し、[アクティブ] サブメトリックを選択します。
次のスクリーンショットでは、Microsoft Defender (MsMpEng.exe プロセス) がプライベート ワーキング セットを介して 14.9 MB のメモリを消費しています。
スタートアップ アプリケーション、サービス、タスクの 40 MB ターゲットが達成されたことを検証するには、事前に読み込まれたソフトウェアに関連付けられているこのリストのすべてのプロセスを特定し、合算します。