[erlang-questions] Memory issue: big swap usage

龙第九子 <>
Mon Jul 16 13:07:28 CEST 2012


Thanks for your replies. I'll refactor my code to reduce some long
living processes.

Just now I tried Gustav's method as follow:

    $ grep "Swap:" /proc/27100/smaps | awk '{swap = swap + $2} END {print swap}'
    776

This indicated the beam process is using 776K swap memory. Not a big number.

It seems that the process doesn't use too much memory. (51m rss + 776K swap)
But I still don't understand why VmSize and VmData are so large, and
are growing larger everyday...

Kind regards

On Mon, Jul 16, 2012 at 6:06 PM, Gustav Simonsson
<> wrote:
>
> Hi,
>
> The swap column in top does not represent the current swap usage of processes.
> Rather, it represents how much swap would be necessary if the process was swapped out.
>
> If you want to find out how much swap your BEAM process is really using,
> look at the smaps file of the process and sum up the "Swap:" fields.
>
> For example:
>
> ps -e | grep beam
>  4726 pts/1    00:46:14 beam.smp
>
> grep "Swap:" /proc/4726/smaps | awk '{swap = swap + $2} END {print swap}'
>
> The output is in kilobytes.
>
> man proc | grep -A 15 smaps
>
> Regards,
> Gustav Simonsson
>
> Sent from my PC
>
> ----- Original Message -----
>> From: "龙第九子" <>
>> To: "Erlang-Questions" <>
>> Sent: Monday, 16 July, 2012 10:02:21 AM
>> Subject: [erlang-questions] Memory issue: big swap usage
>>
>> Hi all,
>>
>> Recently I wrote a service-monitoring program in Erlang. It uses
>> httpc
>> (the HTTP client shipped with Erlang/OTP) to fetch web server
>> statistics data, does some calculations, and then sends results to
>> another service. It works fine, however, the memory usage is very
>> strange. While VmRSS stays at a reasonable level, but VmSize and
>> VmData keep increasing (about 40m per day). Please look at the
>> following data:
>>
>> System memory usage:
>>
>>     $ free -m
>>                  total       used       free     shared    buffers
>>                      cached
>>     Mem:          2012       1486        525          0        216
>>            713
>>     -/+ buffers/cache:        557       1455
>>     Swap:         2047          5       2041
>>
>>
>> `top` shows that the beam.smp process consumes 51m physical memory :)
>> and 857m swap memory :(
>>
>>       PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  SWAP
>>       COMMAND
>>     27100 root      20   0  909m  51m 2288 S    2  2.6 149:54.65 857m
>>     beam.smp
>>
>>
>> Current VM status of the process:
>>
>>     $ cat /proc/27100/status|grep Vm
>>     VmPeak:      932260 kB
>>     VmSize:      931616 kB
>>     VmLck:           0 kB
>>     VmHWM:       54624 kB
>>     VmRSS:       52968 kB
>>     VmData:      907556 kB
>>     VmStk:          88 kB
>>     VmExe:        1860 kB
>>     VmLib:        2412 kB
>>     VmPTE:         208 kB
>>
>>
>> And Erlang reported memory usage (seems good):
>>
>>     15> erlang:memory().
>>     [{total,46487136},
>>      {processes,1283144},
>>      {processes_used,1251480},
>>      {system,45203992},
>>      {atom,509577},
>>      {atom_used,497728},
>>      {binary,169912},
>>      {code,4395539},
>>      {ets,323224}]
>>
>>
>> I use Erlang R14B03 (erts-5.8.4) compiled with GCC 4.4.5 on Debian 6
>> Linux 2.6.32-5-amd64. I'm not sure if there is a memory-leaking bug.
>> The problem is too hard for me and I have no choice but to restart
>> the
>> process. Could someone be kind enough to help me out? Please.
>> _______________________________________________
>> erlang-questions mailing list
>> 
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
> _______________________________________________
> erlang-questions mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-questions



-- 
茕茕白兔,东走西顾。衣不如新,人不如故。



More information about the erlang-questions mailing list