• ベストアンサー

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

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

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

  • ベストアンサー
  • nolix
  • ベストアンサー率19% (110/572)
回答No.1

どういう理由でメモリが十分だと認識できるのか例で説明します。 例1)ファイルサーバー samba3.0系 XEON 3GHz HDD:1TB RAID1 メモリ:4G OS:Cent OS 3.8 上記サーバーは、ファイルサーバー用途です。4台の端末から、同時に動画ファイル4Gを書込みしてみます。 検証は、topというコマンドを使います。 top 【enter】 実メモリ4G搭載していても、4Gのファイル4本を同時に書込みにいくとLinuxはHDDへの遅延書込を行うために、実メモリをどんどん消費します。数分もすると、実メモリは100%消費されます。 その時のCPU使用率はたいしたことありません。5%程度です。 例2)webサーバー apache2.0系 pentium4Noothwood 3GHz HDD:250GB RAID1 メモリ:2G OS:Cent OS 3.5 上記、webサーバーは不動産系の地図を多く使うサーバーです。 こちらもアクセス数によっては、実メモリを100%利用しています。 こちらは、メモリの増設ができないのでapacheをチューニングしなければなりませんでした。 つまり、実メモリが十分だという根拠を証明することは非常に難しいです。Linuxはフレキシブルにメモリを消費しますので、例1)の様なファイルサーバーは昨今の最大ファイルサイズが大きい事を考慮すると8GB搭載しても良いと思います。 1000人クラスのsmtpサーバーでもpopのセッションを100程度にすると2Gでなんとかまかなえますが、コンソールは非常に重いです。やはり4G程度搭載した方が無難な様な気がします。 通常のショッピング系サーバーであれば、同時アクセス数20前後、PHP4+postgres8+qmail+ezmlm+mysql+apache1などの構成で、Pentuim4なら2G程度で十分です。 つまり用途によって実メモリの消費は大きく左右され、フレキシブルに実メモリを消費しますので、十分なメモリの容量は運用してみないと分かりません。 ですのでswap領域を実メモリの50%~200%の間で設定される方が安心です。 上記の様な点でWindowsとは全く違う動きをします。Windowsのメモリの消費を見ていますと、それ程有効に消費しているようには見えませんが これは、これで良い点もあるようです。 256MBのメモリで1000人のメールサーバーが稼働するSolarisを選ぶのかLinux、FreeBSDにするのか、WindowsServerなのか、まあ予算と好みの問題ですかね。 結論:swapは不要なほど実メモリを搭載しても、不安要素がのこるなら、swapを設定しておいた方が安心だ。ということです。 メモリが十分だという根拠は、運用してみないと分からない。 最初に導入する時点で、swapは実メモリの50~200%設定しておいた方が無難である。

その他の回答 (3)

  • YkazubonY
  • ベストアンサー率30% (26/86)
回答No.4

仮想記憶という40年前の技術を知らない人の質問ですね。 仮想記憶でググッてみると、いろいろと解説があるみたいだから、そこで勉強したらどうでしょう。 初級シスアド 苦手克服シリーズ(6) http://allabout.co.jp/study/itqualification/closeup/CU20060917A/ というのが、良いかもしれません。 しかし、40年前の技術を勉強して使う仕事って、給料もらえるのかな?

noname#208124
noname#208124
回答No.3

大抵は動作の不理解 ページキャッシュの見方を知らないか、投機書き出しを知らない

参考URL:
http://www.atmarkit.co.jp/flinux/rensai/tantei01/bangai01a.html,http://d.hatena.ne.jp/NyaRuRu/20071010/p1
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

#1の方が書かれていますが、何を以て「メモリが十分足りている」と判断するかは難しいです。 「スワップパーティション無しで使用していてもメモリ不足のエラーにならないのに、スワップパーティションありにすると同じ事をしてもスワップが発生する」 というのはあり得ます。OSは実装されたメモリとスワップエリアの量を見てバッファやキャッシュの量を調整するので。 ファイルIOが大量に発生していて、一方、ずーっと長い間全くアクセスされていないメモリ領域があるとそれはページアウトされて、そのエリアをバッファに使うと思います。このときスワップエリアがなければ、ページアウトできないので、小さいバッファでIOすることになります。

関連するQ&A