• ベストアンサー

LinuxのSwap領域は、なぜ実メモリと同等か2倍程度?

「LinuxのSwap領域は、実メモリと同等か2倍程度」 取りましょう、とよく目にするのですが、 根拠を教えてください。 多ければよいと言う訳でもなさそうだし、 疑問に思っています。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4852/10266)
回答No.6

他の方が書いていますが、メモリが高価だった(というか大容量メモリが無かった)時代の話です。 実メモリが4MBしかないとして、OS含めて20MBのメモリを必要とするプログラムを動かしたいとします。そうすると、差し引き最低16MBのスワップ領域が必要です。この場合だと、実メモリの4倍ですね。こういうケースでは一応動くにしてもページングが多発して実用に耐えない速度になり、もしくはOSの動作も不安定になります。 この、「ページングが多発して実用に耐えない速度」の目安が実メモリの2倍という経験値です。つまり、実メモリが4MBしかないなら、せいぜいスワップ8MBで合計12MB位の仮想メモリしかそのコンピュータでは使えない(20MBのメモリを必要とするプログラムは動かせない)ということです。 今の時代だと、必要仮想メモリをすべて実メモリでまかなえるならスワップ領域は必要ありません。いくら大きく定義しても良いですが、実メモリからあふれないわけですからほとんど使われません。 もちろん今でも「ページングが多発して実用に耐えない速度の目安が実メモリの2倍」という経験則はおおむね適用できると思うので、仮に大規模な科学技術シミュレーション計算で10GBのメモリ空間が必要ならば、実メモリは3ないし5GB程度必要と言えます。もちろん1GBしかなくても計算は出来るでしょうがCPU能力の大半が計算で無くページングに使われる事になります(もちろんプログラムによりますが)。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

回答No.7

たとえばSunOS 4.1.x ( BSD系と分類されるようです) のような古いUnixに実装されていた仮想メモリの機能は実メモリとスワップスペースに壁があり、実メモリの空間を仮想メモリとして利用することができませんでした。 実メモリと同じかそれ以上のメモリというのが仮想メモリ機能を利用する必須の要件でしたので、実メモリと同じか2倍くらいというのが仮想メモリを利用するための目安と考えられていました。 実メモリと同等か2倍程度というのは、このころの推奨されたサイズがそのまま現在も使われているのだと思われます。 現在の Unix や Linux は、実メモリを仮想メモリ空間として利用できるので、スワップエリアのサイズはプロセスが利用する最大メモリサイズの合計を考慮して考えるべきなのですが、これを事前に見積もるのは難しいので、一般的な推奨サイズとして実メモリと同等か2倍程度という目安が使われているようです。 ちなみに Linux ではページキャッシュやバッファキャッシュをできるだけ実メモリ上に残しておこうとする戦略で動作するので、大きなファイルをコピーしたりするだけでのスワップエリアを少し使ってしまうことがあります。 パフォーマンスに重大な影響を及ぼさない限りにおいては、スワップエリアの利用は実メモリを最大限利用していると考えることもできます。 スワップエリアの利用があるから悪いと即断するのではなく、現在動作するシステムへの影響があるのかどうかという点を考慮して判断しないと、コンピュータ資源を浪費する結果となります。

全文を見る
すると、全ての回答が全文表示されます。
  • entree
  • ベストアンサー率55% (405/735)
回答No.5

以前のUNIXでは実メモリの容量分のSWAP領域を使うように設計されていたため、実メモリよりもSWAP領域が小さいと動作しないような仕組みになっていました。 従って、SWAP領域は実メモリより大きく2倍くらい取っておくのがベストという概念が生まれたのでしょう。 ただ、最近のUNIXやLinuxではそのようなことはなくなってきており、全必要メモリ量-実メモリ量としてSWAP領域を計算してしまっても構わないと思います。 現に私はSolaris 8や9で実メモリをが4GBも搭載されているのにSWAP領域をWeb Startのデフォルトである512MBしか確保せずにシステムを構築した経験が何度もあります。これは恐らくLinuxにも当てはまるでしょう。

全文を見る
すると、全ての回答が全文表示されます。
  • v4493p
  • ベストアンサー率45% (25/55)
回答No.4

NO3の人と同じで,swap使いたくないですね。 最近のデストリビューションでdesktopと利用し openoffice等を使うと500MBほどメインメモリー 使ってしまうので、そのあたりだけ注意して 搭載メモリーとswap決めれば良いと思います。 メインメモリ1Gあれば良いとは思いますが。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

個人的に「スワップしたら負け」と思っているので #2 に賛成です. が, 一応補足しておきます: 「スワップ領域を実メモリの 2倍くらいとろう」というのは昔の UNIX の頃から言われている格言で, これは使っているスワップアルゴリズムが「スワップ領域が実メモリの 2倍以上」だと効率的に動く (逆にいうと「それより少ないとスワップアルゴリズムの効率が落ちる」) からだそうです. まあスワップアウトさせなければ問題ありませんが.

全文を見る
すると、全ての回答が全文表示されます。
  • zem
  • ベストアンサー率70% (51/72)
回答No.2

No.1 さんの補足です。おおむねその通りです。 でも、私が思うに(Linux サーバ管理者の立場からすると)「LinuxのSwap領域は、実メモリと同等か2倍程度」 は5年前のレベルではないかと思います。当時はメモリが 128 MB も積んでいれば普通、256 もあればかなり十分だったというレベルでした。 今日の商用利用されているサーバでは1GBや2GB搭載していて普通です。ですので、そのままスワップを実メモリと同等というのはあまりあてはまりません。もしスワップをそんなに多く確保してしまうと、ディスクに対するアクセスが増えて、スワップ発生時にパフォーマンス低下を招いてしまいます。 出来ればスワップは用いないようにして、スワップを発生させないシステムにする、というのが今日この頃の流行のような気がします。 教科書的な回答ではありませんが、現場から一言でした。

全文を見る
すると、全ての回答が全文表示されます。
回答No.1

根拠は無いようです。 実際は、何に使うかの用途しだいなので、チューニング項目だ! らしい。 ですが、 実メモリと同じから2倍程度とっておけば、大概のシステムで問題ないんじゃないの? というレベルの話らしいです。 --- 参考URLは、5.1.11-(2)に根拠は無いようだ という文章があったというだけのものです。<(_ _)>

参考URL:
http://akikoma.remos.iwate-u.ac.jp/test_page/HPUX/Install_HP-UX.html
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Linux での swap の容量について

    昔から UNIX では swap の容量はメモリの2倍や3倍がよいと言われていたようですが、 Linux ではそんなことはなく、メモリが多ければ swap なしでも問題なく動くとつい先ほどまで信じていたんですが、「Linux教科書 LIPCレベル1 (ISBN4-7981-0292-X)」という本を買って、swap に関する説明を見たら「スワップ領域は塔載メモリと同程度を確保します。」と書いてありました。 これは一体どういうことでしょうか? 本当に Linux は swap の容量を塔載メモリと同じ程度にしなければいけないんですか? だとするとその根拠はなんでしょうか? p.s. 根拠がなくても資格試験でそういう問題が出て塔載メモリと同じ程度と答えないと点がもらえないというのならそう答えますが、非常に気になります。

  • OSインストール時のWidowsのSwap領域って?(メモリ増設)

    Linuxをインストールする時には搭載メモリの2倍くらいのSwap領域をインストール時に作ったり、あるいは自動インストールでは勝手にSwap領域が作られるのだと思いますが、例えばWindowsXPも同じことをやっているのですか? というのも、WindowsXPをクリーンインストールしようと思うのですが、メモリが少ないので増設するためのメモリをヤフオクで探し中です。でも、早く今ある状態でXPをインストールして使いたいわけで・・・。 仮にLinuxと同じであれば、メモリ128MBを搭載してWindowsXPをインストールすれば256MBのSwap領域が作られてしまって、後からメモリを増設して256MBにした場合、Swap領域が足りなくなる気がするのです。256MBにしてからインストールすれば512MBのSwap領域が作られそうなので。 そもそも128MBのメモリ搭載でWindowsXPをインストールする時と256MBのメモリ搭載でWindowsXPをインストールする時で、Windowsの設定とかに違いは出るのでしょうか。勝手にいろいろ設定されるからよくわかりません。 こんなことを考えている最近です。ご存知の方、教えてください!

  • LinuxのSWAP領域の移動?

    お願いします。 既存のSWAP領域を削除して、新規に別のパーティションにSWAP領域を作成したいです。 SWAP領域を作る事自体は、何となく分かるのですが、そのSWAP領域作成後に 何か設定しないといけないと思うのですが、何をすればいいのでしょうか? /etc/fstab を見ると、SWAP領域の部分が下記のようになってます。 (Linuxは2つ入ってます。質問上、2つの内容を書きます。) RHELv4 x86    LABEL=SWAP-sda7    SWAP    SWAP   defaults  0   0 RHELv4 EM64T    /dev/sda7    SWAP    SWAP   defaults   0   0 sda7が現在のSWAP領域です。 ここでまずは、この設定ですが、例えば新規のSWAPをsda9に作った場合、 単純に sda7 の部分を、sda9 に書き換えるだけでいいのでしょうか? また、2つを比べると、一部記載内容に違いがあるのですが、そこは何故違うのでしょうか? 通常、普通のパーティションの追加の場合、(例えば新規に「/var」を追加など) e2label?コマンドで、ラベルを書き込んだりしたような記憶があるのですが、 SWAPの場合はそういう作業は無いのでしょうか? 以上、長々となってしまいましたが、よろしくお願いします。

  • swap領域の変更について

    こんにちわ。 今、Miracle Linux をマシンにインストールしたのですが、SWAP領域の設定をしないでインストールしてしまいました。 インストール後に、SWAP領域の変更を行う方法がよくわかりません。 どなたかご存知の方がいらっしゃいましたら、ご教授ください。よろしくお願いします。

  • メモリが足りているのにSWAPが発生

    Linuxにおいて、メモリが十分足りているのにSWAPが発生することがあるようなことを聞いたことがあるのですが、どのような場合でしょうか?教えて下さい。よろしくお願いします。

  • swap領域を1GBより拡大したい。

    iMac OS10.5(Intel)を使っています。 Swap領域を1GBより増やしたいのですが、可能でしょうか?可能であれば、そのやり方を教えていただけませんか? ネットの情報によると、「OSXではSwap領域は必要になると自動的に追加されるが、メモリの最大容量・ハードディスクの空き容量の1/4・1GBのいずれか小さい方を選択し容量が決定する」とあります。 これは、Swap領域は最大で1GB(もしくはメモリの最大容量・ハードディスクの空き容量の1/4)まで、という意味なのでしょうか? 私のPCの、/private/var/vm/ 以下にあるSwapファイルのサイズの合計値は、既に1GBに達しているのですが、これよりも増やす方法があれば教えていただけないでしょうか? GISソフト(Grass)で大きなファイルを扱いたいのですが、メモリー不足で動作が強制終了してしまうので、Swap領域を増やして再トライしたいのです。 どなたかアドバイスお願いします。

    • 締切済み
    • Mac
  • Linuxのswap領域の表示について

    RedHatEnterpriseLinuxES4にてサーバーを構築しました。 swap領域は1024MBを取ったのですが、dfコマンドで見ると255MBしか表示されません。 freeコマンドを見ると確かに1024MB載っているようなんですがこれはどういう訳なのでしょう? 既設のRedHatEnterpriseLinuxES4サーバーにおいてはdfコマンドでも1024MBで表示されます。 同じように表示されるように設定する手段は無いでしょうか?

  • swapって?

    Linuxをインストールする途中に、swap領域を設定っていうところがあったのですが、swapとはどういう役目をしているのでしょうか? あと、OpenOfficeをインストールしたのですが、日本語がすべて化けて表示されています・・・。インストールの最初の画面から化けてましたが、ちゃんとインストールする方法はありますでしょうか? もしなければアンインストールしようと思うのですが、僕が持っているLinuxの本では、アンインストールの行い方は一切書かれていません・・・。 それか単純にディレクトリをrmで消せばよいのでしょうか? 宜しくお願いします。

  • Linuxのメモリ管理

    Linuxのfreeメモリとは、Top等のコマンドで見えるfree+buff+cacheと思っていますが、Linuxを使用しているとfree領域がどんどんなくなっていき、buff, cache領域が増加していきます。 free領域が枯渇しそうになって(表示上10Mぐらい?)いて、swapdとかが動作しているにもかかわらず、buff, cacheを開放したりしないのでしょうか? この辺のLinuxのメモリ管理方法をご存知の方、いらっしゃいましたら御教授願えませんでしょうか 掲載HP等でも良いので情報頂ければ助かります。 宜しくお願い致します。

  • パーティション空き領域の結合

    /dev/sda1 1GB ....(1)SWAP領域 /dev/sda2 3GB ...."/" /dev/sda3 3GB ...."/home" /dev/sda4 10GB ....(2)空き 上記構成にパーティションを切り、Linux(ディストリビューションはSUSE)をインストールしたのですが、 (1)のSWAP領域を削除し、(2)の空き領域といっしょのパーティションとして別OSを入れようとしたのですが、 (1)のSWAP領域を削除しただけでは、(2)の空き領域とは別パーティションとして認識されてしまいます。 /dev/sda1 1GB ....(1)空き←SWAP削除して。 /dev/sda2 3GB ...."/" /dev/sda3 3GB ...."/home" /dev/sda4 10GB ....(2)空き 下記のように(1)の空き領域を(2)の空き領域に移動させることはできますか? /dev/sda2 3GB ...."/" /dev/sda3 3GB ...."/home" /dev/sda4 11GB ....(2)空き+(1)空き SWAP領域作成せずにパーティション切りなおしてLINUX再インストールは できればしたくありません。 ご教授お願いします。