sinfo - a monitoring tool for networked computers

by

Jürgen Rinas

Contents of this page
The Problem
The Solution - How it works
Some Screenshots
Documentation
Preconditions
ChangeLog
Download
Published on

The Problem |

Don't you know the problem?

1.) There are many computers connected to your local network and you have got the (scientific) programs to use their computational power.

But the computers are too different to use some special clustering software. So you are on your own!

The first problem you've got to solve is an overview of the available computers an their current load. sinfo is an approach to solve this problem.

2.) You are responsible for an laboratory of public accessible computers. And you need a tool that provides a quick overview of all nodes and the (insane) processes running on it. sinfo can be your choice.

sinfo is running for about two years on our local network and has become a tool for daily use.

I'm running sinfo on the following systems:

- Linux 2.6.32
- FreeBSD 8.2 (it compiles, after a long time again)
- Solaris 2.8, 2.9
  From version 0.0.15 on I can't test sinfo on solaris, since we scraped our last ultra sparcs lately. I would be grateful for your information if sinfo still works on solaris, or if you can provide me with an account on one of your solaris machines.

The Solution - How it works |

shematic information flow of sinfo

The sinfo-system is split into two parts. A demon and a user program.

1.) The demon (sinfod) distributes system information using UDP broadcasts on the local network. Each demon will also receive UDP broadcasts of all other demons and manage a list of the most recent informations.

2.) The user program (sinfo) connects to the demon via the local loop-back interface and displays the up to date informations using the ncurses library.

This scheme has the advantage that it produces minimal network load. If each node broadcasts it's information in a cooperative manner, the network load is O(N), where N is the number of nodes in your network.

Other systems to monitor your cluster load (e.g. rup(1) ) are using a polling scheme where every node has to ask every other node for the system information: In that case the network load is O(N**2).

The Informations broadcasted include:

- The number of CPUs and their speed.
- The network node hostname, the hardware type, the host processor type, the operating system name, the operating system release, the operating system version. - Everything uname provides.
- The uptime of the system.
- The load average.
- The current load - split by user, nice, system and idle times.
- The memory usage of the RAM and the swap space.
- The network traffic send and received by the network card.
- Informations of the TOP-5 processes.

Some Screenshots |

| Normal view of sinfo with of most computers of our local network. The computer with sinfo running on it is highlighted.

| View of sinfo with system information included.

Documentation |

For documentation look at the man pages of sinfo-client and sinfod.

Preconditions |

The following tools and libraries are necessary to compile and use sinfo. Most of them should be already available on any modern Linux system.

necessary libraries:

- ncurses - libraries for terminal handling (tested with version 5.7)
- boost - peer-reviewed portable C++ source libraries using Boost.Asio, Boost.Bind and Boost.Signals (tested with version 1.42)

ChangeLog |

sinfo 0.0.48 - Tue, 16 Dec 2014 14:54:52 +0100

- removed some warnings from newer g++s
- changed configure to locate boost by AX_BOOST_BASE
- many changes to make cppcheck more happy
- updated for newer boost libraries i.e. no -mt any more
- removed bashisms in scripts

sinfo 0.0.47 - Sun, 08 Jul 2012 08:42:55 +0200

- switched from stand alone asio.hpp to boost/asio.hpp bundled with boost in order to simplify library requirements

sinfo 0.0.46 - Mon, 14 May 2012 19:41:06 +0200

- some compile fixes for gcc 4.7 http://gcc.gnu.org/gcc-4.7/porting_to.html : Name lookup changes
- fixed cursor handling, by using the asio::null_buffers() concept to get a trigger, if input is available according to the example http://www.boost.org/doc/libs/1_45_0/doc/html/boost_asio/example/non blocking/third_party_lib.cpp

sinfo 0.0.45 - Tue, 13 Mar 2012 07:07:27 +0100

- corrected README compile hint for FreeBSD
- added configure flag --disable-IPv6 to disable IPv6 support

sinfo 0.0.44 - Tue, 13 Dec 2011 18:32:33 +0100

- added reconnect for TCP connections
- added LIBADD to make it --as-needed linkable tnx to T.Harder

Download |

- license: GPL
- source package sinfo-0.0.48.tar.gz, 687k, 2014-Dec-16
- old versions

I've prepared a debian package for this program. You can download this via
`apt-get update; apt-get install sinfo`
if you configure your system to include my debian repository.

Published on |

- sinfo's project page on freecode - http://freecode.com/projects/sinfo
- sinfo is listed at http://www.linuxlinks.com/Software/Monitoring/Network/
- a link at http://debianlinux.net/system_management.html
- a link at http://www.solaris4you.dk/monitoringSS.html
- a link at http://www.hccfl.edu/pollock/AUnix2/sys_mgmnt_tools.htm
- a link at the Famous Software Award
- an article about sinfo in LINUX JOURNAL Oct/2011
- a blog on building sinfo on Debian/wheezy=testing
- a blog on building sinfo on rock 5.4.3/centos 5.6

Lately I've seen some sites out there linking sinfo's homepage. If you want your site to be listed here or know a site not listed here, please drop me a line.