PSI 0.3b3
Python System Information
License: MIT

-------------------------
Python System Information
-------------------------

``psi`` is a Python module providing direct access to real-time system
and process information.  It is made of of several sub-modules.

The ``arch`` module gives some information about the system such as
the sytem name and version, the machine architecture etc.  It has a
class representing each system and a factory function that will return
an instance of the class which ``psi`` is running on currently.

The experimental ``mount`` module gives information about the various
mounted filesystems on the system.  It has a class representing local
or remote filesystems.

The ``process`` module provides an interface to information about
processes currently running on the system.  Each process is
represented as an instance of the ``Process`` class and additionally
there is a ``ProcessTable`` class which is a dictionary of all running
processes.  To know exactly what attributes are available and what
they mean you should look at the docstrings and examples in the
``REAME`` file and ``examples/`` directory, but important to note is
that all the information is collected at instatiation time.  So the
contents of ``ProcessTable`` and ``Process`` instances are really
snapshots and will still contain all information even after the actual
process has gone.

Lastly there are some general functions available directly under the
``psi`` namespace such as ``loadavg()``, ``getzoneid()`` etc.  Once
more see the docstrings for detailed information.

Some information may not be available on all platforms, rather then
trying to emulate this information these parts of the API just don't
exists on those platforms.  Examples of these are:
``psi.process.Process.pcpu`` which is not available on Linux,
``psi.getzoneid()`` which is only available on SunOS 10 and above etc.
If not all information can be found some attribute descriptors of
objects might return subclasses of AttributeError, allowing you to use
generic ``getattr()`` semantics as well as more specifically detect why
an attribute is not available (insufficient privileges, not
implemented, ...).


Supported Platforms
===================

Python: 2.2 and above, including 3.x.

Linux: all 2.4 and 2.6 kernels.

SunOS: Solaris 8 and above, including OpenSolaris (SunOS 11).

AIX: 5.2 and 5.3

Darwin: 10.3 and above.


Documentation
=============

Care is taken to provide complete and accurate docstrings, so use
Python's ``pydoc`` tool and the interactive prompt should get you on
your way.

We also have a wiki (http://bitbucket.org/chrismiles/psi/wiki/Home)
and a mailing list (http://groups.google.com/group/psi-discuss
psi-discuss@googlegroups.com).  Don't hesitate to ask questions or
give feedback.


Bugs
====

Please use our issue tracker:
http://bitbucket.org/chrismiles/psi/issues


Extra setup.py features
=======================

New ``build_ext`` option: ``--devel``.  This uses ``-Werror`` and
enables many more warnings as well as disables optimisation.

Using ``--undef PYMALLOC`` or ``-U PYMALLOC`` to ``build_ext`` will
use libc's memory heap for allocation instead of Python's.


The ``test`` command will run the testsuite.  Some tests will only be
run when running the test suite as root.  Currently these are the
tests that try to run a simple test application under specific
schedulers and priorities to assert psi detects these process
attributes correctly.


The ``valgrind`` command does run the testsuite under the valgrind
memory checker.  For this you need to have a specially compiled
python::

  ./configure --with-pydebug --without-pymalloc --prefix=/opt/pydebug
  make
  make install


The ``tags`` command will build an emacs TAGS file using ``grind``
(which is a binary of the python grin_ package).

.. _grin: http://pypi.python.org/pypi/grin