Windows10

32bitソフトの64bit環境での動作

WOW64でのパフォーマンスとメモリ消費

WOW64でのパフォーマンスとメモリ消費は、次の要因によって決まります。

・プロセッサハードウェア
命令エミュレーションはチップ上で実行されます。 x64プロセッサでは、x86命令はプロセッサによってネイティブに実行されます。したがって、x64上のWOW64での実行速度は、32ビットWindowsでの速度に似ています。 Intel ItaniumプロセッサおよびARM64プロセッサでは、エミュレーションにより多くのソフトウェアが関与し、結果としてパフォーマンスが低下します。

・APIサンクのオーバーヘッド
このオーバーヘッドは、NTカーネルへのシステムコールに比べてわずかです。 NTカーネル関数は、まれにしか呼び出されないように意図されています。

・仮想メモリサイズ
Intel Itaniumプロセッサでは、同じ32ビットアプリケーションの2つ以上のインスタンスが同時に実行されている場合、WOW64は大きなオーバーヘッドを追加します。これは、Intel Itaniumのネイティブ8 KBページが原因であり、x86アーキテクチャのネイティブ4 KBページのエミュレーションが複雑になります(書き込み可能なページはすべてマークされます。書き込み可能なページはすべてプロセス専用です)。これは、特定のプロセッサ上のターミナルサービスのスケーラビリティに悪影響を及ぼす可能性があります。これは、x64プロセッサには当てはまりません。

・ワーキングセット
WOW64は、アプリケーションのワーキングセットのサイズを増やします。

WOW64を使用すると、32ビットアプリケーションで64ビットカーネルを活用できます。したがって、32ビットアプリケーションは、より多くのカーネルハンドルとウィンドウハンドルを使用できます。ただし、WOW64は各スレッドに追加の64ビットスタック(通常は512 KB)を割り当てるため、x86ベースのシステムでネイティブに実行する場合、32ビットアプリケーションはWOW64でできるだけ多くのスレッドを作成できない場合があります。さらに、WOW64自体とそれが使用するデータ構造のために、ある程度のアドレススペースが予約されています。予約量はプロセッサによって異なります。 x64またはARM64プロセッサよりもIntel Itaniumの方が多く予約されています。

アプリケーションのイメージヘッダーにIMAGE_FILE_LARGE_ADDRESS_AWAREフラグが設定されている場合、各32ビットアプリケーションは、WOW64環境で4 GBの仮想アドレススペースを受け取ります。 IMAGE_FILE_LARGE_ADDRESS_AWAREフラグが設定されていない場合、各32ビットアプリケーションはWOW64環境で2 GBの仮想アドレススペースを受け取ります。

参考記事:Performance and Memory Consumption Under WOW64

人気の記事をご紹介

カテゴリーで絞る

  • この記事を書いた人

山本

はじめまして。「山本まこと」と申します。 フリーランスでシステムエンジニアを現役でさせて頂いています。 業務内容はシステム設計、プログラム作成等何でさせて頂いています。 特にサーバ構築、業務端末(パソコン)の構築の仕事を多くさせて頂いています。 サーバ構築はOSが24時間止まらず高パフォーマンスで動作する用に設定したり セキュリティ対策(脆弱性)を実施することやデータベースの構築も実施します。 業務端末(パソコン)の構築は業務アプリケーションが快適に動作するようOSの設定を実施します。 パソコンは日進月歩で性能はどんどん向上しています。 またマイクロソフトのOSもWinows7からWindows10へ移行する段階を迎えています。 Windows10においては、使い勝手はとても良くなっていますが、自動化が進み、一度不調になってしまうと設定変更での修復するにはコツが必要です。 また、マシンスペックについてもある程度のものが要求されます。 このホームページでは、皆さんがパソコンを快適に使っていただけるようにお役に立てたらと思い、記事を書かせて頂いています。

-32bitソフトの64bit環境での動作
-, , , ,

© 2021 幸せになれるPCライフ