Merge remote-tracking branch 'github/pr/734'
[collectd.git] / src / memory.c
index b33c1f8..8166acc 100644 (file)
@@ -18,7 +18,7 @@
  * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
  *
  * Authors:
- *   Florian octo Forster <octo at verplant.org>
+ *   Florian octo Forster <octo at collectd.org>
  *   Simon Kuhnle <simon at blarzwurst.de>
  *   Manuel Sanmartin
  **/
@@ -283,6 +283,8 @@ static int memory_read_internal (value_list_t *vl)
        gauge_t mem_buffered = 0;
        gauge_t mem_cached = 0;
        gauge_t mem_free = 0;
+       gauge_t mem_slab_reclaimable = 0;
+       gauge_t mem_slab_unreclaimable = 0;
 
        if ((fh = fopen ("/proc/meminfo", "r")) == NULL)
        {
@@ -304,6 +306,10 @@ static int memory_read_internal (value_list_t *vl)
                        val = &mem_buffered;
                else if (strncasecmp (buffer, "Cached:", 7) == 0)
                        val = &mem_cached;
+               else if (strncasecmp (buffer, "SReclaimable:", 13) == 0)
+                       val = &mem_slab_reclaimable;
+               else if (strncasecmp (buffer, "SUnreclaim:", 11) == 0)
+                       val = &mem_slab_unreclaimable;
                else
                        continue;
 
@@ -324,11 +330,13 @@ static int memory_read_internal (value_list_t *vl)
        if (mem_total < (mem_free + mem_buffered + mem_cached))
                return (-1);
 
-       mem_used = mem_total - (mem_free + mem_buffered + mem_cached);
-       MEMORY_SUBMIT ("used",     mem_used,
-                      "buffered", mem_buffered,
-                      "cached",   mem_cached,
-                      "free",     mem_free);
+       mem_used = mem_total - (mem_free + mem_buffered + mem_cached + mem_slab_unreclaimable + mem_slab_reclaimable);
+       MEMORY_SUBMIT ("used",        mem_used,
+                      "buffered",    mem_buffered,
+                      "cached",      mem_cached,
+                      "free",        mem_free,
+                      "slab_unrecl", mem_slab_unreclaimable,
+                      "slab_recl",   mem_slab_reclaimable);
 /* #endif KERNEL_LINUX */
 
 #elif HAVE_LIBKSTAT