[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 メーリングリストの案内