1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- What: /sys/kernel/debug/kmemtrace/
- Date: July 2008
- Contact: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
- Description:
- In kmemtrace-enabled kernels, the following files are created:
- /sys/kernel/debug/kmemtrace/
- cpu<n> (0400) Per-CPU tracing data, see below. (binary)
- total_overruns (0400) Total number of bytes which were dropped from
- cpu<n> files because of full buffer condition,
- non-binary. (text)
- abi_version (0400) Kernel's kmemtrace ABI version. (text)
- Each per-CPU file should be read according to the relay interface. That is,
- the reader should set affinity to that specific CPU and, as currently done by
- the userspace application (though there are other methods), use poll() with
- an infinite timeout before every read(). Otherwise, erroneous data may be
- read. The binary data has the following _core_ format:
- Event ID (1 byte) Unsigned integer, one of:
- 0 - represents an allocation (KMEMTRACE_EVENT_ALLOC)
- 1 - represents a freeing of previously allocated memory
- (KMEMTRACE_EVENT_FREE)
- Type ID (1 byte) Unsigned integer, one of:
- 0 - this is a kmalloc() / kfree()
- 1 - this is a kmem_cache_alloc() / kmem_cache_free()
- 2 - this is a __get_free_pages() et al.
- Event size (2 bytes) Unsigned integer representing the
- size of this event. Used to extend
- kmemtrace. Discard the bytes you
- don't know about.
- Sequence number (4 bytes) Signed integer used to reorder data
- logged on SMP machines. Wraparound
- must be taken into account, although
- it is unlikely.
- Caller address (8 bytes) Return address to the caller.
- Pointer to mem (8 bytes) Pointer to target memory area. Can be
- NULL, but not all such calls might be
- recorded.
- In case of KMEMTRACE_EVENT_ALLOC events, the next fields follow:
- Requested bytes (8 bytes) Total number of requested bytes,
- unsigned, must not be zero.
- Allocated bytes (8 bytes) Total number of actually allocated
- bytes, unsigned, must not be lower
- than requested bytes.
- Requested flags (4 bytes) GFP flags supplied by the caller.
- Target CPU (4 bytes) Signed integer, valid for event id 1.
- If equal to -1, target CPU is the same
- as origin CPU, but the reverse might
- not be true.
- The data is made available in the same endianness the machine has.
- Other event ids and type ids may be defined and added. Other fields may be
- added by increasing event size, but see below for details.
- Every modification to the ABI, including new id definitions, are followed
- by bumping the ABI version by one.
- Adding new data to the packet (features) is done at the end of the mandatory
- data:
- Feature size (2 byte)
- Feature ID (1 byte)
- Feature data (Feature size - 3 bytes)
- Users:
- kmemtrace-user - git://repo.or.cz/kmemtrace-user.git
|