[pgsql-jp: 33998] Re: メモリ使用量が少ないにもかかわらず、スワップが発生する

Takasi Watanabe office @ watarin.org
2004年 9月 17日 (金) 17:41:02 JST


渡辺です

私もRHL7.3, RHL9などで同じような経験があります。
特に共有メモリを大きく取るとかなりスワップするような気がします。
Linuxの宿命だとあきらめていますが

もし、パフォーマンス的に影響がでているのなら、いっそのことスワップをなしに
してしまうのも一つの方法だと思います。

実際に私はPostgreSQLや、MySQLのLinuxサーバでメモリが十分にある場合には
良くスワップなしにしてしまいます。


--------- Reply to ---------
       From: 宮本 義武 <miyamoto @ intellilink.co.jp>
    Subject: [pgsql-jp: 33997] メモリ使用量が少ないにもかかわらず、スワップが発生する
       Date: Fri, 17 Sep 2004 17:24:14 +0900


> 宮本と申します。
> 
> 
> 現在、DBサーバにpostgreSQLを用いたシステムに対し、負荷をかけた際の性能を計測
> しています。その際、DBサーバのリソース消費状況をsarコマンドにて取得していま
> す。sarによる取得結果からメモリリソースの状況を見ているのですが、メモリ使用
> 量が実メモリの半分程度しか使用していないにもかかわらずスワップが発生していま
> す。
> 
> 
> 
> (以下、sarによる出力結果)
> 
> Linux 2.4.21-4.ELsmp (ossdb)
> 
> 15時49分27ノ kbmemfree kbmemused  %memused kbbuffers  kbcached kbswpfree
> kbswpused  %swpused  kbswpcad
> 
> (途中省略)
> 
> 16時16分30ノ     18184   2043468     99.12      9328   1109376   4192924
> 0      0.00         0
> 
> 16時16分31ノ     18364   2043288     99.11      9392   1109640   4192924
> 0      0.00         0
> 
> 16時16分32ノ     18000   2043652     99.13      9436   1109072   4192924
> 0      0.00         0
> 
> 16時16分33ノ     17972   2043680     99.13      9504   1108540   4192924
> 0      0.00         0
> 
> 16時16分34ノ     18412   2043240     99.11      9556   1108112   4192924
> 0      0.00         0
> 
> 16時16分35ノ     18040   2043612     99.12      9652   1108020   4192888
> 36      0.00        36
> 
> 16時16分36ノ     18644   2043008     99.10      9660   1108048   4192888
> 36      0.00        36
> 
> 16時16分37ノ     18068   2043584     99.12      9736   1108188   4192680
> 244      0.01       244
> 
> 16時16分38ノ     18148   2043504     99.12      9800   1107620   4192624
> 300      0.01       300
> 
> 16時16分39ノ     18060   2043592     99.12      9852   1107496   4192424
> 500      0.01       500
> 
> 16時16分40ノ     18084   2043568     99.12      9932   1107440   4192168
> 756      0.02       756
> 
> 16時16分41ノ     18096   2043556     99.12      9964   1106988   4192168
> 756      0.02       756
> 
> 16時16分42ノ     18144   2043508     99.12      9972   1106404   4191988
> 936      0.02       936
> 
> 16時16分43ノ     18024   2043628     99.13      9760   1106628   4191724
> 1200      0.03      1200
> 
> 16時16分44ノ     18292   2043360     99.11      9776   1105708   4191460
> 1464      0.03      1464
> 
> 16時16分45ノ     18012   2043640     99.13      9764   1105940   4190916
> 2008      0.05      2008
> 
> 16時16分46ノ     17916   2043736     99.13      9620   1105784   4190376
> 2548      0.06      2548
> 
> 16時16分47ノ     18060   2043592     99.12      9052   1106060   4189608
> 3316      0.08      3316
> 
> 16時16分48ノ     18008   2043644     99.13      8884   1106236   4188840
> 4084      0.10      4084
> 
> 16時16分49ノ     18056   2043596     99.12      8944   1105624   4188328
> 4596      0.11      4596
> 
> 
> 
> Linuxのメモリ管理として、buffersとcachedは空いているメモリ容量を確保するた
> め、実際のメモリの使用量はused-(buffers+cached)と考えています。なので、ス
> ワップ発生時のメモリ使用状況は、
> 
> 
> 
> メモリ使用量:2043512-(9662+1108020)=925830(kbyte)≒925(Mbyte)
> 
> であり、実メモリ(2G)の半分以下しかメモリを使用していないと思われます。
> 
> 
> 
> また、postgreSQLの設定(postgreSQL.conf)として、以下のように設定していま
> す。
> 
> shared_buffer:750M
> 
> sort_mem:3M
> 
> その他の設定値はデフォルト
> 
> 
> 
> この設定で負荷を重くするとスワップが発生し、負荷を軽くするとスワップが起きな
> いというように、負荷によってスワップの発生状況が変化していきます。APサーバで
> のDBコネクションプール数の最大は250に設定しているため、sort_memを最大に使っ
> たとしても以下のように実メモリ量を下回り、スワップが発生するとは思えません。
> 
> 
> 
> shared_buffer (750M)+sort_mem(3M×250=750M)+α<実メモリ量(2G)
> 
> 
> 
> 動作環境は以下の通りです。
> OS:RedHatLinux EnterpriseServer ES3
> 
> マシンの実メモリは2G
> 
> カーネルの共有メモリは1G
> DB:postgreSQL7.4.2
> 
> 
> 
> メモリ使用量は実メモリに達していないのに、何故スワップが発生してしまうので
> しょうか?ご教示の程、よろしくお願いいたします。
> 
> 


−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
  渡辺 隆志  Takasi Watanabe
    Email : office @ watarin.org
    http://www.watarin.org/




pgsql-jp メーリングリストの案内