<docbook><section><title>VirtMonitorMemoryConsumption</title><title> Monitoring Virtuoso Memory Consumption</title> Monitoring Virtuoso Memory Consumption
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> What</bridgehead>
<para>Like any other process, Virtuoso consumes system resources, including memory.
 Here we describe one way to monitor the memory consumption of a Virtuoso server instance.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> Why monitor memory consumption?</bridgehead>
<para>In a mission critical application, running 24/7, memory consumption should be fairly consistent when the server is in use.
 A server should not consume all system memory, which may result in it hanging or being terminated by the operating system.</para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> How to monitor Virtuoso&#39;s memory consumption</bridgehead>
<para>On a Linux or other Unix-like system, you can use a script like this, which we&#39;ve called memcheck-virtuoso.sh, which checks the memory consumption directly at the process level: </para>
<programlisting>#!/bin/bash
# saved to /tmp/memcheck-virtuoso.sh

pid=$(pidof virtuoso-t);
log=/tmp/mem-trace-virtuoso.txt;

echo $(printf &quot;%s   %s   %s&quot; $(date +%FT%R) $(cat /proc/${pid}/status |grep VmSize) ${pid}) | tee -a ${log}
</programlisting><para> This script outputs 3 columns: </para>
<orderedlist spacing="compact"><listitem>date-timestamp </listitem>
<listitem>VmSize: the actual memsize of the Virtuoso instance  (from the cat -&gt; grep for that process id) </listitem>
<listitem>the process id (or PID) of the Virtuoso instance</listitem>
</orderedlist><para> Here is a sample: </para>
<programlisting>$ cat /tmp/memcheck-virtuoso.txt
2014-11-14T17:22   VmSize: 15724332kB   3974
2014-11-14T17:46   VmSize: 15874064kB   3974
2014-11-14T17:55   VmSize: 15874064kB   3974
2014-11-14T18:52   VmSize: 15878076kB   3974
2014-11-14T18:52   VmSize: 15878076kB   3974
2014-11-14T22:29   VmSize: 15878076kB   3974
2014-11-14T22:30   VmSize: 15878076kB   3974
2014-11-14T22:56   VmSize: 15878076kB   3974
2014-11-14T22:56   VmSize: 15878076kB   3974
2014-11-14T23:33   VmSize: 15878076kB   3974
2014-11-14T23:33   VmSize: 15878076kB   3974
2014-11-14T23:52   VmSize: 15878076kB   3974
2014-11-14T23:53   VmSize: 15878076kB   3974
$
</programlisting><para> The script can be run manually as required.
 It can also be set up as a cron job to run at a specified internal, e.g., 4 hours in the sample below: </para>
<programlisting>$ crontab -l |grep mem
0 */4 * * * /tmp/memcheck-virtuoso.sh
</programlisting><para> </para>
<bridgehead class="http://www.w3.org/1999/xhtml:h2"> Also See</bridgehead>
<itemizedlist mark="bullet" spacing="compact"><listitem>Technical discussion about <ulink url="http://locklessinc.com/articles/memory_usage/">Measuring Memory Usage</ulink></listitem>
</itemizedlist><para> </para>
</section></docbook>