Difference between revisions of "BC proc entries"
m (misprint) |
(→Old interface: punctuation, formatting, better wording) |
||
Line 2: | Line 2: | ||
== Old interface == | == Old interface == | ||
− | [[Proc/user_beancounters| | + | The [[Proc/user_beancounters|old interface]] consists of 2 (optionally 3) files: |
− | ; <code>user_beancounters</code> | + | ; <code>/proc/user_beancounters</code> |
− | : reveals an overall information about resource consumption of each beancounter in system | + | : reveals an overall information about resource consumption of each beancounter in system; described [[Proc/user_beancounters|here]]; |
− | ; <code>user_beancounters_sub</code> | + | ; <code>/proc/user_beancounters_sub</code> |
− | : reveals information about all beancounters and sub-beancounters in system | + | : reveals information about all beancounters and sub-beancounters in system; |
− | ; <code>user_beancounters_debug</code> | + | ; <code>/proc/user_beancounters_debug</code> |
− | : | + | : shows debugging information about each beancounter. Available if <code>CONFIG_UBC_DEBUG_KMEM</code> option is turned on. Information revealed includes the numbers of |
− | # objects charged from each slab | + | :# objects charged from each slab; |
− | # pages charged | + | :# pages charged; |
− | # vmalloc-ed pages | + | :# vmalloc-ed pages; |
− | # page beancounters | + | :# page beancounters; |
− | # etc | + | :# etc. |
== New interface == | == New interface == |
Revision as of 20:16, 2 March 2008
This page describes proc interface of UBC subsystem.
Contents
Old interface
The old interface consists of 2 (optionally 3) files:
/proc/user_beancounters
- reveals an overall information about resource consumption of each beancounter in system; described here;
/proc/user_beancounters_sub
- reveals information about all beancounters and sub-beancounters in system;
/proc/user_beancounters_debug
- shows debugging information about each beancounter. Available if
CONFIG_UBC_DEBUG_KMEM
option is turned on. Information revealed includes the numbers of- objects charged from each slab;
- pages charged;
- vmalloc-ed pages;
- page beancounters;
- etc.
New interface
In new interface only user_beancounters
entry is left for compatibility with old tools. New entries reside in /proc/bc
directory. This directory also contains subdirectories for each beancounter in the system. E.g.
# ls /proc/bc/ 0 ioacct_debug resources # vzctl start 101 ... # ls /proc/bc 0 101 ioacct_debug resources # ls /proc/bc/101/ ioacct kmem_debug resources vmaux
All new entries that are in /proc/bc
shows some overall information about BC subsystem, while entries in /proc/bc/$BCID
show per-beancounter info.
Existing general entries
/proc/bc/resources
- This entry looks like old
user_beancounters
entry but
- it doesn't contain “dummy” resources
- if new resource is added to BC it will appear in this entry only
/proc/bc/$BCID/resources
- This entry shows the same as
bc/resources
does but for$BCID
beancounter only. /proc/bc/$BCID/vmaux
- This entry shows auxiliary resources used in VM accounting.
/proc/bc/$BCID/kmem_debug
- This entry is available with
CONFIG_UBC_DEBUG_KMEM
option set and shows per-beancounter info that was in/proc/user_beancounters_debug
before.
Other entries
The following subsystems add their own entries in /proc/bc
and /proc/bc/$BCID
Kernel API
Subsystems may add its own entries in /proc/bc
or /proc/bc/$BCID
. To facilitate this the following API is used in BC sybsystem (declared in include/ub/proc.h
).
struct proc_dir_entry *bc_proc_root
- This is an entry that corresponds to
/proc/bc
directory. If a subsystem wishes to report some information that is not per-beancounter it may create entry using this as a parent. struct bc_proc_entry;
- This describes an entry that may show per-beancounter info. This looks like this:
struct bc_proc_entry { char *name; int (*show)(struct seq_file *, void *); struct bc_proc_entry *next; };
name
is the entry name as it will appear in/proc/bc/$BCID
show
is a callback that is to fill info about particulat beancounter
void bc_register_proc_entry(struct bc_proc_entry *);
- This call registers an entry that shows per-beancounter info.
The code that fills info about BC must look like this
static int bc_my_show(struct seq_file *f, void *v) { struct user_beancounter *ub; ub = seq_beancounter(f); /* dump info into f here */ return 0; } ... static struct bc_proc_entry my_entry = { .name = "my_entry", .show = bc_my_show, }; static int __init bc_my_init(void) { bc_register_proc_entry(&my_entry); return 0; } late_initcall(bc_my_init);
Note: Due to limitations in single_open the struct user_beancounter pointer is not passed as void *v into showing function but must be obtained from seq_file with seq_beancounter
|