Processor efficiency

Mike Muuss mike at BRL.MIL
Sat Jun 16 03:45:14 AEST 1990


In January I also noticed problems with running medium-large programs on the
SGIs, but I have not yet had time to dig in very far;  too much else to do.

In my case, watching a GR-OSVIEW shows a significant (like 25% of
each of the 8 CPUs) "system" loading, 10^5 interrupts/second,
and (as I recall) a large TLBFAULT rate.  My current theory is that
I may be using too many entries in the TLB.

The best description I have seen of this comes from the man page for
GR_OSVIEW, which says:

     tlbfault
             The TLB fault bar gives the number of operating-system handled
             TLB faults initiated by the processor.  There are two kinds of
             faults: double-level faults, and reference faults.

             On the 4D series, translation lookaside buffer (TLB) handling is
             performed entirely by software.  This is done by looking up the
             missing page entry in a page table, and entering the virtual to
             physical mapping into the TLB.  First-level faults are handled by
             extremely efficient low-level software.  The page tables
             themselves are virtually mapped, so when the first level TLB
             handler attempts to load a page table entry, it may fault because
             the page table isn't mapped.  This is a double-level fault, and
             must be repaired by high-level kernel routines.  A reference
             fault occurs when a page is touched, and is used by the operating
             system in keeping accurate usage information for efficient
             paging.

             A high double-level fault rate can be a problem, because of the
             overhead of kernel handling.  Each page table can map 2Mb of
             memory, but each program requires at least three segments: text,
             data and stack.  Additionally, most programs are linked with
             either the shared C library or shared graphics library, each of
             which adds two more segments to the program.  Mapping the
             graphics pipe requires another segment as well.  Gr_osview links
             with these, as well as with the shared font manager library,
             making for a total of 10 segments.  There are 62 TLB entries
             available and gr_osview uses more pages of data than this.  This
             results in a fairly high background double-level fault rate.
             However, the CPU load due to this double-level handling rate is
             not measurable for gr_osview, which is worse in these respects
             than most programs.


This may provide a clue.

By the way, my hat is off to Jim Barton, the author of GR_OSVEW.
A superb monitoring tool!

	Best,
	 -Mike



More information about the Comp.sys.sgi mailing list