- - PR -
32bit と 64bit の差異
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-11-10 00:06
お世話になります.
調べていたのですが,明快に「こう」という答えに行き着かなかったので, ご存じの方,ご教示ください. RHEL3 と RHEL4,あるいはそれぞれの AS と ES では, 実際に使える実 memory の容量はどのくらいになるのでしょうか? あるいは kernel 2.4 と 2.6 の差異という認識で良いのでしょうか? また,件名のとおり,32bit と 64bit では明確な差はあると思うのですが, これは Distribution によって拡張されたりしているのでしょうか? これらについて有益な情報源などありましたら是非ご教示ください. | ||||||||
|
投稿日時: 2006-11-10 00:55
こんばんわ。
CPUアーキテクチャにも依存しそうですね。 kernel 2.6 では、CONFIG_HIGHMEM64G なるオプションが存在します。 (実際に4G以上のメモリを使ったことはありませんが) つまり、kernel の version とパッチがどこまで適用されているによって 異なるのではないでしょうか? 2.4 から 2.6 への変更時に devfs から udev に変わった事以上の認識がありません。 深く検証してみるのも面白いかも知れませんね。 また、 2.5 の変更を調べてみるのもありかも知れません。
単純に int が 64bit になるとアドレス空間が広くなりそうな気がします。 32bitでは、ファイルオフセットに2Gの壁が一応存在しますし、 linux自体が1Gの壁があるという噂(デマ?)も存在します。 | ||||||||
|
投稿日時: 2006-11-10 01:01
「使えるか」という観点で言えば、32bit版ではカーネルがPAEオプションを
有効にしてコンパイルされているかどうか、という点にしか違いがないので。 ・PAE無効なら4GB ・PAE有効なら64GB ただし、これは物理アドレス空間のサイズなので、実際にメモリのマッピングに 利用できるサイズはもっと小さい:具体的な数字はハードウェア構成次第。 PAE無効なら、3.5GB前後になるのが普通です。 64bit版の場合、ボトルネックになるのはOSではなくハードウェアのほう。 現状のx86_64では物理アドレスは40bitに制限されているので最大1TBまで。 | ||||||||
|
投稿日時: 2006-11-10 01:07
それは 4/4 split のオプションです。 利用できるメモリのサイズには違いはありません。 パフォーマンスには違いが出る可能性があります。
1GBに壁は存在します。現在、1GB超えのオプションが有効になっていない ディストロはまず無いでしょうけど。 ただし、有効になっていても1GBを超えるとメモリアクセス性能は やや低下します。 | ||||||||
|
投稿日時: 2006-11-10 08:39
おはようございます.
お二人ともありがとうございます.
とすると,hardware 構成という制約を無視すると 「とりあえず 64GB まで使うことはできる」という認識で良いのでしょうか?
この話の筋からすると,32bit の場合は 4GB を超える memory を搭載している場合, OS の動作に何らかの制約やボトルネックが生じるんでしょうか? それらしい話はいくつか散見しましたが, 具体的に「こうだから」と説明されているものが見あたりませんでした. | ||||||||
|
投稿日時: 2006-11-10 19:02
Red Hat,Inc.が提供しているkernelでは以下のようになっています。
(1) AS,ESの違いについて AS,ESはバイナリーレベルで同一のkernelが提供されていますので、 同じタイプのkernelを使用すれば、同じ容量のメモリを使用するこ とは可能です。 ただし、ESについては、以下の上限を超えると、Red Hat,Inc.の サポート外になり、起動時に警告メッセージが表示されます。 RHEL2.1 4GB RHEL3 8GB RHEL4 16GB (2) kernelのタイプによる違いについて x86版の場合以下のようになっています。 1) RHEL2.1 kernel 4GB kernel-smp 4GB kernel-enterprise 16GB(PAE対応kernel,ASのみ) 2) RHEL3 kernel 4GB kernel-smp 16GB(PAE対応kernel) kernel-hugemem 64GB(PAE対応kernel) 3) RHEL4 kernel 4GB kernel-smp 16GB(PAE対応kernel) kernel-hugemem 64GB(PAE対応kernel) 注意: 1) 1プロセスが認識可能なメモリは4GBになります。 2) kernel-hugememでは、ユーザスペースが約3.8GBです。 kernel/kernel-smpでは、ユーザスペースが約3GB使用可能です。 つまり、kernel-hugememでは、より多くのメモリを消費する プロセスを起動可能です。 3) PAE対応のkernelはそうでないkernelを使用した場合よりも、 最大で50%の性能低下があります。これは、PAE対応のkernel では、PTEの階層が1つ多いために、TLBがミスヒットした場合の ペナルティーが大きいためです。また、メモリを大量に管理し ているため、TLBのヒット率そのものがあまり高くありません。 (特にIntel製CPUを使用している場合) もっとも、スワップが動作することにより性能低下するような 環境では、大量の物理メモリを搭載して、PAE対応のkernelを 使用することによりスワップを回避した方が高性能になります。 4) PAE対応のkernel-smp/kernel-enterpriseは、64GBのメモリを 認識しますが、PTEの領域が巨大になり、lowmemのリソース不 足が発生するため、正常に64GBのメモリを管理できません。 現実的には、システムを安定動作させるには、12GB未満のメモ リで運用することになります。 実際、富士通などのベンダーは12GB未満のメモリで運用する ことを要求しています。 AMD64/Intel64版の場合(あまり自身がないが・・・) 1) RHEL3 kernel 64GB/128GB (実装しているCPUのソケット数に依存) 2) RHEL4 kernel 64GB kernel-smp 64GB/128GB (実装しているCPUのソケット数に依存) kernel-largesmp 64GB〜1TB (実装しているCPUのソケット数に依存) 注意: 1) Intel製CPUを使用している場合には、64GBが上限になります。 | ||||||||
|
投稿日時: 2006-11-10 19:54
すでに詳しく説明されているので、一点だけ補足を。
kernel-hugemem が、上に書いた 4/4 split オプションを有効にしたカーネルです。 lowmemが圧迫されるのを回避した代償として、システムコール発行に約2msかかる (ユーザ空間/カーネル空間の切り替え時にTLBフラッシュが必要となるため) という巨大なペナルティが生じます。 | ||||||||
|
投稿日時: 2006-11-10 21:41
[/quote]
MyTimeさんの書き込み (2006-11-10 19:02) より: [/quote]
丁寧にご説明いただいて大変感謝しております. 理屈も含めて非常によくわかりました. 結局「使える」ことと「安定している」とか「application まで含めて対応」 という点は一致しないのですね. やはり,対応している限りは素直に 64bit を使うのが幸せだと理解できました. ありがとうございました. |
1