- mem_used = mem_total - (mem_free + mem_buffered + mem_cached);
- memory_submit ("used", (gauge_t) mem_used, (gauge_t) mem_total);
- memory_submit ("buffered", (gauge_t) mem_buffered, (gauge_t) mem_total);
- memory_submit ("cached", (gauge_t) mem_cached, (gauge_t) mem_total);
- memory_submit ("free", (gauge_t) mem_free, (gauge_t) mem_total);
+ mem_used = mem_total - (mem_free + mem_buffered + mem_cached + mem_slab_total);
+
+ /* SReclaimable and SUnreclaim were introduced in kernel 2.6.19
+ * They sum up to the value of Slab, which is available on older & newer
+ * kernels. So SReclaimable/SUnreclaim are submitted if available, and Slab
+ * if not. */
+ if (detailed_slab_info)
+ MEMORY_SUBMIT ("used", mem_used,
+ "buffered", mem_buffered,
+ "cached", mem_cached,
+ "free", mem_free,
+ "slab_unrecl", mem_slab_unreclaimable,
+ "slab_recl", mem_slab_reclaimable);
+ else
+ MEMORY_SUBMIT ("used", mem_used,
+ "buffered", mem_buffered,
+ "cached", mem_cached,
+ "free", mem_free,
+ "slab", mem_slab_total);