diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-26 15:46:18 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-10-26 15:46:18 -0400 |
commit | 138c4ae9cfda8fdcf9e137457853b09ef8cf8f77 (patch) | |
tree | 704c363de6d5868b08e9ae31a436ff04d423f625 /tools | |
parent | 3b3dd79d6a8b3debd0291465fc8cd9caf765d545 (diff) | |
parent | e182a345d40deba7c3165a2857812bf403818319 (diff) |
Merge branch 'slab/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux
* 'slab/for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/penberg/linux:
tools, slub: Fix off-by-one buffer corruption after readlink() call
slub: Discard slab page when node partial > minimum partial number
slub: correct comments error for per cpu partial
mm: restrict access to slab files under procfs and sysfs
slub: Code optimization in get_partial_node()
slub: doc: update the slabinfo.c file path
slub: explicitly document position of inserting slab to partial list
slub: update slabinfo tools to report per cpu partial list statistics
slub: per cpu cache for partial pages
slub: return object pointer from get_partial() / new_slab().
slub: pass kmem_cache_cpu pointer to get_partial()
slub: Prepare inuse field in new_slab()
slub: Remove useless statements in __slab_alloc
slub: free slabs without holding locks
slub: use print_hex_dump
slab: use print_hex_dump
Diffstat (limited to 'tools')
-rw-r--r-- | tools/slub/slabinfo.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/tools/slub/slabinfo.c b/tools/slub/slabinfo.c index 868cc93f7ac2..164cbcf61106 100644 --- a/tools/slub/slabinfo.c +++ b/tools/slub/slabinfo.c | |||
@@ -42,6 +42,7 @@ struct slabinfo { | |||
42 | unsigned long deactivate_remote_frees, order_fallback; | 42 | unsigned long deactivate_remote_frees, order_fallback; |
43 | unsigned long cmpxchg_double_cpu_fail, cmpxchg_double_fail; | 43 | unsigned long cmpxchg_double_cpu_fail, cmpxchg_double_fail; |
44 | unsigned long alloc_node_mismatch, deactivate_bypass; | 44 | unsigned long alloc_node_mismatch, deactivate_bypass; |
45 | unsigned long cpu_partial_alloc, cpu_partial_free; | ||
45 | int numa[MAX_NODES]; | 46 | int numa[MAX_NODES]; |
46 | int numa_partial[MAX_NODES]; | 47 | int numa_partial[MAX_NODES]; |
47 | } slabinfo[MAX_SLABS]; | 48 | } slabinfo[MAX_SLABS]; |
@@ -455,6 +456,11 @@ static void slab_stats(struct slabinfo *s) | |||
455 | s->alloc_from_partial * 100 / total_alloc, | 456 | s->alloc_from_partial * 100 / total_alloc, |
456 | s->free_remove_partial * 100 / total_free); | 457 | s->free_remove_partial * 100 / total_free); |
457 | 458 | ||
459 | printf("Cpu partial list %8lu %8lu %3lu %3lu\n", | ||
460 | s->cpu_partial_alloc, s->cpu_partial_free, | ||
461 | s->cpu_partial_alloc * 100 / total_alloc, | ||
462 | s->cpu_partial_free * 100 / total_free); | ||
463 | |||
458 | printf("RemoteObj/SlabFrozen %8lu %8lu %3lu %3lu\n", | 464 | printf("RemoteObj/SlabFrozen %8lu %8lu %3lu %3lu\n", |
459 | s->deactivate_remote_frees, s->free_frozen, | 465 | s->deactivate_remote_frees, s->free_frozen, |
460 | s->deactivate_remote_frees * 100 / total_alloc, | 466 | s->deactivate_remote_frees * 100 / total_alloc, |
@@ -1145,7 +1151,7 @@ static void read_slab_dir(void) | |||
1145 | switch (de->d_type) { | 1151 | switch (de->d_type) { |
1146 | case DT_LNK: | 1152 | case DT_LNK: |
1147 | alias->name = strdup(de->d_name); | 1153 | alias->name = strdup(de->d_name); |
1148 | count = readlink(de->d_name, buffer, sizeof(buffer)); | 1154 | count = readlink(de->d_name, buffer, sizeof(buffer)-1); |
1149 | 1155 | ||
1150 | if (count < 0) | 1156 | if (count < 0) |
1151 | fatal("Cannot read symlink %s\n", de->d_name); | 1157 | fatal("Cannot read symlink %s\n", de->d_name); |
@@ -1209,6 +1215,8 @@ static void read_slab_dir(void) | |||
1209 | slab->order_fallback = get_obj("order_fallback"); | 1215 | slab->order_fallback = get_obj("order_fallback"); |
1210 | slab->cmpxchg_double_cpu_fail = get_obj("cmpxchg_double_cpu_fail"); | 1216 | slab->cmpxchg_double_cpu_fail = get_obj("cmpxchg_double_cpu_fail"); |
1211 | slab->cmpxchg_double_fail = get_obj("cmpxchg_double_fail"); | 1217 | slab->cmpxchg_double_fail = get_obj("cmpxchg_double_fail"); |
1218 | slab->cpu_partial_alloc = get_obj("cpu_partial_alloc"); | ||
1219 | slab->cpu_partial_free = get_obj("cpu_partial_free"); | ||
1212 | slab->alloc_node_mismatch = get_obj("alloc_node_mismatch"); | 1220 | slab->alloc_node_mismatch = get_obj("alloc_node_mismatch"); |
1213 | slab->deactivate_bypass = get_obj("deactivate_bypass"); | 1221 | slab->deactivate_bypass = get_obj("deactivate_bypass"); |
1214 | chdir(".."); | 1222 | chdir(".."); |