|
@@ -67,8 +67,11 @@ static ssize_t node_read_meminfo(struct device *dev,
|
|
|
int nid = dev->id;
|
|
|
struct pglist_data *pgdat = NODE_DATA(nid);
|
|
|
struct sysinfo i;
|
|
|
+ unsigned long sreclaimable, sunreclaimable;
|
|
|
|
|
|
si_meminfo_node(&i, nid);
|
|
|
+ sreclaimable = node_page_state(pgdat, NR_SLAB_RECLAIMABLE);
|
|
|
+ sunreclaimable = node_page_state(pgdat, NR_SLAB_UNRECLAIMABLE);
|
|
|
n = sprintf(buf,
|
|
|
"Node %d MemTotal: %8lu kB\n"
|
|
|
"Node %d MemFree: %8lu kB\n"
|
|
@@ -118,6 +121,7 @@ static ssize_t node_read_meminfo(struct device *dev,
|
|
|
"Node %d NFS_Unstable: %8lu kB\n"
|
|
|
"Node %d Bounce: %8lu kB\n"
|
|
|
"Node %d WritebackTmp: %8lu kB\n"
|
|
|
+ "Node %d KReclaimable: %8lu kB\n"
|
|
|
"Node %d Slab: %8lu kB\n"
|
|
|
"Node %d SReclaimable: %8lu kB\n"
|
|
|
"Node %d SUnreclaim: %8lu kB\n"
|
|
@@ -138,20 +142,21 @@ static ssize_t node_read_meminfo(struct device *dev,
|
|
|
nid, K(node_page_state(pgdat, NR_UNSTABLE_NFS)),
|
|
|
nid, K(sum_zone_node_page_state(nid, NR_BOUNCE)),
|
|
|
nid, K(node_page_state(pgdat, NR_WRITEBACK_TEMP)),
|
|
|
- nid, K(node_page_state(pgdat, NR_SLAB_RECLAIMABLE) +
|
|
|
- node_page_state(pgdat, NR_SLAB_UNRECLAIMABLE)),
|
|
|
- nid, K(node_page_state(pgdat, NR_SLAB_RECLAIMABLE)),
|
|
|
+ nid, K(sreclaimable +
|
|
|
+ node_page_state(pgdat, NR_KERNEL_MISC_RECLAIMABLE)),
|
|
|
+ nid, K(sreclaimable + sunreclaimable),
|
|
|
+ nid, K(sreclaimable),
|
|
|
+ nid, K(sunreclaimable)
|
|
|
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
|
|
- nid, K(node_page_state(pgdat, NR_SLAB_UNRECLAIMABLE)),
|
|
|
+ ,
|
|
|
nid, K(node_page_state(pgdat, NR_ANON_THPS) *
|
|
|
HPAGE_PMD_NR),
|
|
|
nid, K(node_page_state(pgdat, NR_SHMEM_THPS) *
|
|
|
HPAGE_PMD_NR),
|
|
|
nid, K(node_page_state(pgdat, NR_SHMEM_PMDMAPPED) *
|
|
|
- HPAGE_PMD_NR));
|
|
|
-#else
|
|
|
- nid, K(node_page_state(pgdat, NR_SLAB_UNRECLAIMABLE)));
|
|
|
+ HPAGE_PMD_NR)
|
|
|
#endif
|
|
|
+ );
|
|
|
n += hugetlb_report_node_meminfo(nid, buf + n);
|
|
|
return n;
|
|
|
}
|