- - PR -
コア数、プロセス、メモリ占有の関係
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2008-07-23 15:34
OS(32bit)がWindows2003SERVERStandradEditonとします。
このときOSが32bitであることを考慮して、当該サーバ機のメモリ実装量を4GBとします。 ここで、1プロセスが占有できるメモリは4GBのうち2GBまでということのようですが、 ディスクキャッシュの分と、メモリキャッシュの分を合わせて、2GBまでということに なるのでしょうか。。 さらに、この2GBを、複数のプロセスが使いまわすことになるかと思うので、1プロセス が実質的に占有するメモリは数MBという考え方になるのでしょうか。 さらに、当該サーバ機のCPUがクアッドコアであった場合、4つのコアで、この2GBを使いまわす 形になるのでしょうか。 もし使いまわすということであれば、メモリ4GBを搭載したサーバ機では、クアッドコアにすると、 逆に、CPUオーバーヘッドが生じると思われるので、メモリ4GBを搭載したサーバ機であれば、デュアルコアにしたほうがパフォーマンスはよいものなのでしょうか。 コア数、プロセス、メモリ占有の関係は、どのような関係になるのでしょうか。 |
|
投稿日時: 2008-07-23 15:51
1 process が利用できる memory は IMAGE_FILE_LARGE_ADDRESS_AWARE と AWE を併用しない場合、2GB の制限があります。
また、別の制限として user process space が 2GB という制限があります。これは、複数の process で共有する空間としてです。こちらを拡張するには /3GB /PAE に代表される 4GT を行う必要があります。 また、main memory は NUMA でもない限りすべての core で共有します。 # NUMA でも共有していることに変わりないですが。 Performance に関してはどのような処理を行うのかに依存する部分が大きすぎますので、自身で検証してください。 |
|
投稿日時: 2008-07-23 16:16
ちゃっぷさん
早速のご回答有難うございます。 まずコアとメモリの関係ですが、複数のコアがある場合、同一メモリをコアが 共有するのですね。 共有においては、どのような共有なのでしょうか。 例えば、コアが4つである場合、メモリが4GBとして、「/3GB /PAE 」で、user process space が3GBまで使えるようにしたとした場合、3GB÷4をそれぞれのコアが利用するのか 3GBを4つのコアが入れ替わり使いまわすようなイメージなのでしょうか。 また、実際には、当該サーバで実行されるプロセスは1つなんてことはないでしょうから、 例えば、同一サーバにおいて、SQLSERVERが動いて、ARCserveが動いて、他のミドルウェアも実行していて。。というサーバでは、それぞれのプロセスが3GBを配分してメモリ占有する形になろうかと思います。これはディスクキャッシュ領域の3GBの配分だと思うのですが、メモリキャッシュのほうは、どのような占有ルールなのでしょうか。 あと、ディスクキャッシュ領域である3GBを、複数のプロセス及び複数のコアが共有する ということなので、例えばメモリを4GBを搭載するようなサーバ機に対し、クアッドコアを搭載 しても、クアッドコア本来の処理性能をつけえないような気がしますので、であればデュアルコアのほうが、単純なコアとメモリの関係だけでいえな理論上は、メモリを4GBを搭載するようなサーバ機ではデュアルコアのほうがパフォーマンスがよいような気がしますね。 |
|
投稿日時: 2008-07-25 12:24
とりあえず、computer が動作するしくみについてもうちょっと勉強されたほうがいいと思います。
Windows の標準状態では process, thread が特定の core で動作するようにはなっていません。Affinity を設定すれば特定の core でのみ動作させることは可能です。 また、main memory はすべての core で共有します。この core 専用の memory 領域なんてありません。 Performance に関してはその application の仕様に依存しますので一概には語れませんん。 |
1