PyKstat 0.5

PyKstat is a Python interface to the Solaris kstat(3k) and utmpx APIs. Known to work with Python 1.5.2 and 2.2.

March 20, 2001: PyKstat 0.5. Irritating version scheme adjusted. Added interface to utmpx which has been tested with the new AddDict macros... no memory leaks now.

March 13, 2001: PyKstat 0.04. Horrid memory leak which I never saw was brought to my attention by Rick Nooner at He was sampling much more frequently than I ever have used this for, and so discovered the leak. He sent me some code, which I diddled with a bit and rolled into kstat.i.

February 6, 2001: PyKstat 0.03. I made a few changes to to accommodate the naming scheme for the disks that come with Ultra-5s.

Here is the README that comes with the package...

This is the fifth release of a Python interface to the Solaris kstat
API.  This version now includes an interface to utmpx as well.  I
recommend checking out the man pages for information on the C API.
This will only work for Solaris, and has been tested on Solaris 2.5,
2.5.1, and 2.6 for SPARC Solaris, and 2.6 for the Intel version of
Solaris, using Python 1.5.1 and 1.5.2.  No apparent problems with the
2.x versions of Python so far.

* Why did I do this?

    I am currently re-implementing a machine monitoring system.  The
original version, written in Perl, has to fork off and parse the
output from various system data tools, such as iostat, vmstat, uptime,
etc.  As it turns out, the vast majority of this data -- and a whole
lot more -- is available via the kstat(3k) interface.  I wanted to be
able to get all this data without forking.

* How did I do this?

    The PyKstat package has several parts, starting with a helper
library in C wrapping kstat into something more friendly.  The next
layer is the lowest Python layer, and is generated by SWIG.  I
distribute the SWIG generated wrappers, so you do not need SWIG
installed to use this package... unless you want to.  The SWIG layer
is little more than a Python version of my wrappers.

    The next layer is in  This provides an object oriented
interface, and nicely hides the chain-following you have to do if you
use the simplest interface. provides a single class, Kstat,
which does all the interesting work.  This interface does however
assume some familiarity with the kstat(3k) API.

    The final layer of PyKstat, and the interface I suspect most
people will want to use, is in  This interface is *not*
OOPy, but it does use the Kstat class as its engine.  I strongly
recommend looking at the doc strings in and playing with the
many functions provided to get a feel for the API.

    For the perversely curious, the dependencies are: kstat API <-
wkstat.c (my helpers) <- (SWIG generated interface to
wkstat.c) <- (OOPy interface to <-
(the most friendly interface).

* What about bugs?

    There are doubtless some bugs.  However, I don't believe there are
any major ones.  I have been using this software to check machine
statistics for a few months now, and in fact some single Python
programs have been running *continuously* for a month and reporting on
machine statistics.  Some memory leak problems recently discovered
have been fixed, too.

    If you discover any bugs, certainly let me know, but try to
include as much information as possible, and a snippet of code which
causes the problem.

* Cool!  How do I install this.

    Take a look at the Makefile.  It's pretty simple.  You should only
need to change your CC, though I recommend using gcc, and the two
lines saying where your Python is installed.  Then run 'make', then
'make install'.  The install process is crude in the extreme, and
simply copies a few files into your Python library area.

    Check out the few examples in the examples directory to get an
idea of how this package can be used.  See for a reproduction
of the Solaris who(1) program, which provides a nice example of the
utmpx interface.

William S. Annis
March, 2001

William Annis - System Administrator - Biomedical Computing Group                       PGP ID:1024/FBF64031
Mi parolas Esperanton - La Internacia Lingvo

Where are the screenshots?!

You're kidding, right?

Can't I see any pretty colors?

Oh, if you must, you can see in glorious color. As a nice side effect, you can see how the most user-friendly interface is written, with the doc strings, too. Here's for an example of how the utmpx interface works.

What's new?

Between versions 0.01 and 0.02 there are very few big changes, though a few of the RAW kstats are now available: vminfo, ncstats (directory name cache), cpustat and sysinfo. 0.03 contains some fixes to understand IDE disks on the new Ultras. 0.04 fixes memory leak problems. 0.5 (note version numbering change) adds the utmpx interface

Where do I get it?

Right here.

Future Plans

This page last altered on: Tue Mar 20 10:37:40 2001
Send comments or problems to
William Annis.

More software...