lkml.org 
[lkml]   [2011]   [May]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH 11/12] Don't use inline node_page_state for sysfs output functions
Date
From: Andi Kleen <ak@linux.intel.com>

These are not time critical, and using an out of line function
saves about 2.5k text on a non force inline kernel.

I left the main hotpath user -- readahead -- inline for now.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
---
drivers/base/node.c | 76 +++++++++++++++++++++++++++-----------------------
1 files changed, 41 insertions(+), 35 deletions(-)

diff --git a/drivers/base/node.c b/drivers/base/node.c
index b3b72d6..c3f3a8d 100644
--- a/drivers/base/node.c
+++ b/drivers/base/node.c
@@ -57,6 +57,12 @@ static inline ssize_t node_read_cpulist(struct sys_device *dev,
static SYSDEV_ATTR(cpumap, S_IRUGO, node_read_cpumask, NULL);
static SYSDEV_ATTR(cpulist, S_IRUGO, node_read_cpulist, NULL);

+/* Don't inline */
+static unsigned long my_node_page_state(int node, enum zone_stat_item item)
+{
+ return node_page_state(node, item);
+}
+
#define K(x) ((x) << (PAGE_SHIFT - 10))
static ssize_t node_read_meminfo(struct sys_device * dev,
struct sysdev_attribute *attr, char * buf)
@@ -81,16 +87,16 @@ static ssize_t node_read_meminfo(struct sys_device * dev,
nid, K(i.totalram),
nid, K(i.freeram),
nid, K(i.totalram - i.freeram),
- nid, K(node_page_state(nid, NR_ACTIVE_ANON) +
- node_page_state(nid, NR_ACTIVE_FILE)),
- nid, K(node_page_state(nid, NR_INACTIVE_ANON) +
- node_page_state(nid, NR_INACTIVE_FILE)),
- nid, K(node_page_state(nid, NR_ACTIVE_ANON)),
- nid, K(node_page_state(nid, NR_INACTIVE_ANON)),
- nid, K(node_page_state(nid, NR_ACTIVE_FILE)),
- nid, K(node_page_state(nid, NR_INACTIVE_FILE)),
- nid, K(node_page_state(nid, NR_UNEVICTABLE)),
- nid, K(node_page_state(nid, NR_MLOCK)));
+ nid, K(my_node_page_state(nid, NR_ACTIVE_ANON) +
+ my_node_page_state(nid, NR_ACTIVE_FILE)),
+ nid, K(my_node_page_state(nid, NR_INACTIVE_ANON) +
+ my_node_page_state(nid, NR_INACTIVE_FILE)),
+ nid, K(my_node_page_state(nid, NR_ACTIVE_ANON)),
+ nid, K(my_node_page_state(nid, NR_INACTIVE_ANON)),
+ nid, K(my_node_page_state(nid, NR_ACTIVE_FILE)),
+ nid, K(my_node_page_state(nid, NR_INACTIVE_FILE)),
+ nid, K(my_node_page_state(nid, NR_UNEVICTABLE)),
+ nid, K(my_node_page_state(nid, NR_MLOCK)));

#ifdef CONFIG_HIGHMEM
n += sprintf(buf + n,
@@ -122,30 +128,30 @@ static ssize_t node_read_meminfo(struct sys_device * dev,
"Node %d AnonHugePages: %8lu kB\n"
#endif
,
- nid, K(node_page_state(nid, NR_FILE_DIRTY)),
- nid, K(node_page_state(nid, NR_WRITEBACK)),
- nid, K(node_page_state(nid, NR_FILE_PAGES)),
- nid, K(node_page_state(nid, NR_FILE_MAPPED)),
- nid, K(node_page_state(nid, NR_ANON_PAGES)
+ nid, K(my_node_page_state(nid, NR_FILE_DIRTY)),
+ nid, K(my_node_page_state(nid, NR_WRITEBACK)),
+ nid, K(my_node_page_state(nid, NR_FILE_PAGES)),
+ nid, K(my_node_page_state(nid, NR_FILE_MAPPED)),
+ nid, K(my_node_page_state(nid, NR_ANON_PAGES)
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
- + node_page_state(nid, NR_ANON_TRANSPARENT_HUGEPAGES) *
+ + my_node_page_state(nid, NR_ANON_TRANSPARENT_HUGEPAGES) *
HPAGE_PMD_NR
#endif
),
- nid, K(node_page_state(nid, NR_SHMEM)),
- nid, node_page_state(nid, NR_KERNEL_STACK) *
+ nid, K(my_node_page_state(nid, NR_SHMEM)),
+ nid, my_node_page_state(nid, NR_KERNEL_STACK) *
THREAD_SIZE / 1024,
- nid, K(node_page_state(nid, NR_PAGETABLE)),
- nid, K(node_page_state(nid, NR_UNSTABLE_NFS)),
- nid, K(node_page_state(nid, NR_BOUNCE)),
- nid, K(node_page_state(nid, NR_WRITEBACK_TEMP)),
- nid, K(node_page_state(nid, NR_SLAB_RECLAIMABLE) +
- node_page_state(nid, NR_SLAB_UNRECLAIMABLE)),
- nid, K(node_page_state(nid, NR_SLAB_RECLAIMABLE)),
- nid, K(node_page_state(nid, NR_SLAB_UNRECLAIMABLE))
+ nid, K(my_node_page_state(nid, NR_PAGETABLE)),
+ nid, K(my_node_page_state(nid, NR_UNSTABLE_NFS)),
+ nid, K(my_node_page_state(nid, NR_BOUNCE)),
+ nid, K(my_node_page_state(nid, NR_WRITEBACK_TEMP)),
+ nid, K(my_node_page_state(nid, NR_SLAB_RECLAIMABLE) +
+ my_node_page_state(nid, NR_SLAB_UNRECLAIMABLE)),
+ nid, K(my_node_page_state(nid, NR_SLAB_RECLAIMABLE)),
+ nid, K(my_node_page_state(nid, NR_SLAB_UNRECLAIMABLE))
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
, nid,
- K(node_page_state(nid, NR_ANON_TRANSPARENT_HUGEPAGES) *
+ K(my_node_page_state(nid, NR_ANON_TRANSPARENT_HUGEPAGES) *
HPAGE_PMD_NR)
#endif
);
@@ -166,12 +172,12 @@ static ssize_t node_read_numastat(struct sys_device * dev,
"interleave_hit %lu\n"
"local_node %lu\n"
"other_node %lu\n",
- node_page_state(dev->id, NUMA_HIT),
- node_page_state(dev->id, NUMA_MISS),
- node_page_state(dev->id, NUMA_FOREIGN),
- node_page_state(dev->id, NUMA_INTERLEAVE_HIT),
- node_page_state(dev->id, NUMA_LOCAL),
- node_page_state(dev->id, NUMA_OTHER));
+ my_node_page_state(dev->id, NUMA_HIT),
+ my_node_page_state(dev->id, NUMA_MISS),
+ my_node_page_state(dev->id, NUMA_FOREIGN),
+ my_node_page_state(dev->id, NUMA_INTERLEAVE_HIT),
+ my_node_page_state(dev->id, NUMA_LOCAL),
+ my_node_page_state(dev->id, NUMA_OTHER));
}
static SYSDEV_ATTR(numastat, S_IRUGO, node_read_numastat, NULL);

@@ -182,8 +188,8 @@ static ssize_t node_read_vmstat(struct sys_device *dev,
return sprintf(buf,
"nr_written %lu\n"
"nr_dirtied %lu\n",
- node_page_state(nid, NR_WRITTEN),
- node_page_state(nid, NR_DIRTIED));
+ my_node_page_state(nid, NR_WRITTEN),
+ my_node_page_state(nid, NR_DIRTIED));
}
static SYSDEV_ATTR(vmstat, S_IRUGO, node_read_vmstat, NULL);

--
1.7.4.4


\
 
 \ /
  Last update: 2011-05-21 02:05    [W:0.094 / U:0.448 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site