kmem_debug(1M)

kmem_debug - kernel memory debug module

As shipped in IRIX 6.5.19. Added in IRIX 6.5.15.

NAME
     kmem_debug - kernel memory debug module

DESCRIPTION
     kmem_debug is a kernel memory debug module used to debug kernel memory.
     It is intended to be used only by those involved in writing and debugging
     device drivers or other parts of the kernel.

     To use kmem_debug, several steps must be taken to prepare the system:

     1.   kmem_debug must be manually installed by the user because it is not
          installed on the system as shipped from the factory.  kmem_debug is
          only available if eoe.sw.kdebug has been installed.

     2.   Alterations must be made to the file /var/sysgen/system/irix.sm to
          build a kernel capable of being debugged. kmem must be replaced with
          kmem_debug in the /var/sysgen/system/irix.sm file.

          Specifically the line

          INCLUDE: kmem

          must be changed to

          INCLUDE: kmem_debug

     3.   The program autoconfig(1M) must be run to generate a new kernel, and
          the system must be rebooted.

     There are three kernel tuneable parameters which direct the actions of
     the kmem_debug module.

     1.kmem_make_zones_private_min
          This tuneable indicates the lower bound of the range of zones to
          split.

     2.kmem_make_zones_private_max
          This tuneable indicates the upper bound of the range to split.  The
          min and max tuneables split up the zones, but do not make them
          private and do not show the structures which use those zones.  In
          order to do that you may want to use kmem_split_zone.

     3.kmem_split_zone
          If you suspect there is a memory leak in a particular zone, set
          kmem_split_zone to that zone size.  It makes the zone for that size
          private. It shows a separate structure for each zone.  You must
          remake the kernel and reboot for this tuneable to start working.
          You may then use icrash to look at the zone, or run the tool
          memleak(1M) to generate a report indicating whether there are memory
          leaks.
NOTES
     Zone memory consists of a number of zones of differing sizes.  Since
     there is limited table space for zones, structures with sizes close to
     each other are lumped together in the same zone.  For example, structures
     that have a size of 712 bytes may be put into the zone listed as size
     768.  In cases like this, you may need to know the exact size of the
     structure you wish to split when using kmem_split_zone.  kmem_split_zone
     should not be used with kmem_make_zones_private_max and
     kmem_make_zones_private_min.  There is limited table space for zones and
     using all three tuneables may result in the configuration of an
     unbootable kernel.

SEE ALSO
     memleak(1M).