- Information about /proc/ppc_htab
- =====================================================================
- This document and the related code was written by me (Cort Dougan), please
- email me (cort@fsmlabs.com) if you have questions, comments or corrections.
- Last Change: 2.16.98
- This entry in the proc directory is readable by all users but only
- writable by root.
- The ppc_htab interface is a user level way of accessing the
- performance monitoring registers as well as providing information
- about the PTE hash table.
- 1. Reading
- Reading this file will give you information about the memory management
- hash table that serves as an extended tlb for page translation on the
- powerpc. It will also give you information about performance measurement
- specific to the cpu that you are using.
- Explanation of the 604 Performance Monitoring Fields:
- MMCR0 - the current value of the MMCR0 register
- PMC1
- PMC2 - the value of the performance counters and a
- description of what events they are counting
- which are based on MMCR0 bit settings.
- Explanation of the PTE Hash Table fields:
- Size - hash table size in Kb.
- Buckets - number of buckets in the table.
- Address - the virtual kernel address of the hash table base.
- Entries - the number of ptes that can be stored in the hash table.
- User/Kernel - how many pte's are in use by the kernel or user at that time.
- Overflows - How many of the entries are in their secondary hash location.
- Percent full - ratio of free pte entries to in use entries.
- Reloads - Count of how many hash table misses have occurred
- that were fixed with a reload from the linux tables.
- Should always be 0 on 603 based machines.
- Non-error Misses - Count of how many hash table misses have occurred
- that were completed with the creation of a pte in the linux
- tables with a call to do_page_fault().
- Error Misses - Number of misses due to errors such as bad address
- and permission violations. This includes kernel access of
- bad user addresses that are fixed up by the trap handler.
- Note that calculation of the data displayed from /proc/ppc_htab takes
- a long time and spends a great deal of time in the kernel. It would
- be quite hard on performance to read this file constantly. In time
- there may be a counter in the kernel that allows successive reads from
- this file only after a given amount of time has passed to reduce the
- possibility of a user slowing the system by reading this file.
- 2. Writing
- Writing to the ppc_htab allows you to change the characteristics of
- the powerpc PTE hash table and setup performance monitoring.
- Resizing the PTE hash table is not enabled right now due to many
- complications with moving the hash table, rehashing the entries
- and many many SMP issues that would have to be dealt with.
- Write options to ppc_htab:
- - To set the size of the hash table to 64Kb:
- echo 'size 64' > /proc/ppc_htab
- The size must be a multiple of 64 and must be greater than or equal to
- 64.
- - To turn off performance monitoring:
- echo 'off' > /proc/ppc_htab
- - To reset the counters without changing what they're counting:
- echo 'reset' > /proc/ppc_htab
- Note that counting will continue after the reset if it is enabled.
- - To count only events in user mode or only in kernel mode:
- echo 'user' > /proc/ppc_htab
- ...or...
- echo 'kernel' > /proc/ppc_htab
- Note that these two options are exclusive of one another and the
- lack of either of these options counts user and kernel.
- Using 'reset' and 'off' reset these flags.
- - The 604 has 2 performance counters which can each count events from
- a specific set of events. These sets are disjoint so it is not
- possible to count _any_ combination of 2 events. One event can
- be counted by PMC1 and one by PMC2.
- To start counting a particular event use:
- echo 'event' > /proc/ppc_htab
- and choose from these events:
- PMC1
- ----
- 'ic miss' - instruction cache misses
- 'dtlb' - data tlb misses (not hash table misses)
- PMC2
- ----
- 'dc miss' - data cache misses
- 'itlb' - instruction tlb misses (not hash table misses)
- 'load miss time' - cycles to complete a load miss
- 3. Bugs
- The PMC1 and PMC2 counters can overflow and give no indication of that
- in /proc/ppc_htab.