Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 11 Sep 2007 13:43:13 +0200
From:      Borja Marcos <borjamar@sarenet.es>
To:        freebsd-performance@freebsd.org
Subject:   Announcement: Devilator 1.0a for FreeBSD
Message-ID:  <CAD4B228-9B25-4D7D-9982-1701746D978D@sarenet.es>

next in thread | raw e-mail | index | archive | help
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


Hello,

I'm happy to announce the first public release (consider it an alpha)
of Devilator, a performance
data collector for FreeBSD systems that generates Orca compatible
files. The README file follows.



************************************************************************
*******
WARNING!!!!

This is the first public evaluation release of a program developed
for internal
use. Please exercise extreme care when using it, and report any
issues to the
author to have them fixed in future releases.
************************************************************************
*******


==================================
            DEVILATOR
==================================

"Why does my system run slowly?" "What can I do to make it run
faster?" "The
CPU seems to be idle. Why don't I get better performance?" "Will a
bigger CPU
make it run faster?" "Will I need a better CPU next year?" "Was the
system
slower last Thursday, or is it just my imagination?" These questions
are made probably hundreds or perhaps even thousands of times every
day, and the answer
is not always easy.

A system's performance is a function of its CPU power, bus bandwidth,
memory capacity, disk I/O bandwidth (often neglected) and software.
Nowadays,
with the usage of concurrent programs growing, software performance
problems
get increasingly important as well. We can have the fastest and
greatest hardware available, but a poor locking decision in a
concurrent program
can make it crawl, no matter what we do. A bad mix of workloads can
cause
these problems as well.

Performance tuning is often a black art, and historical data is reall
valuable, a need that the classical commands such as top, vmstat,
gstat, etc
don't address adequately (in my opinion).

Devilator is a system performance data collector for FreeBSD. It's
designed
to work with Blair Zajac's Orca system (http://www.orcaware.com/
orca/) and
it aims to be a FreeBSD equivalent of the "Orcallator" data collector
for
Solaris.

This program has been growing for a long time, supplying performance
data for
our in-house systems. As this program has been written as a series of
quick
hacks, it is actually quite ugly, but effective anyway. The main goal
when
writing it was to gather enough performance data from the OS, always
avoiding
typical scripts that launch many other utilities. This program reads
OS data
directly, either through the sysctl interface or from GEOM (in the
case of
disk I/O performance data). As the documentation on some of these
issues is
not great, I have borrowed code from the GEOM utility "gstat", from
"top",
and "orcallator.se", part of the Orca package.

The data collected by Devilator can be divided among the following
groups:

1- Processor/s usage. This includes the classical "system load"
values, and the percentage of CPU time spent on user processes,
system, interrupt and nice.

2- OS activity. Includes a graph of forks/s, system calls/s, system
processes and interrupt activity. The system processes and interrupt
information show
where the system is spending its share of CPU time. The system
processes shown
vary from version to version, with more information offered by the
most recent
FreeBSD releases. Hopefully this can be useful for system
administrators and
system developers alike, keeping historic data on the activity of tasks
like "vmdaemon", "syncer", etc.

3- Process activity. Includes the number of processes in the system,
how many
of them are in a given state (running, sleeping, stopped, zombies,
waiting or
locked), and a graph of sleep situations. How many processes are
sleeping on
select(), waiting for network I/O, waiting for the disk subsystem,
filesystem,
etc? This is really useful when evaluating the performance of
programs such
as MySQL, trying different filesystem configurations or threading
models. These
data will be hopefully useful to FreeBSD developers and porters as well.

4- Network activity, offering the classical information on
established connections, TCP and UDP traffic, network interface
traffic and errors, TCP
connection rate, etc.

5- Virtual memory, including swap and paging activity, memory usage,
and page
scanner activity.

6- Disk I/O data (available on FreeBSD 5+, as it depends on GEOM),
including
the percentage of busy time for disks, partitions and slices, together
with the volume of data transfers in MB/s and the average service
time in ms.


- ---------------
USING DEVILATOR
- ---------------

In order to use this program it's a good idea to be familiarised with
Orca
first. Orca (http://www.orcaware.com/orca/) is a general purpose
graphing
program based on RRDtool.

This program can be used to monitor a single machine, running both
Devilator
and Orca on it, or it can be installed at dozens of servers, where it
will just
gather performance data and write it to text files, while a different
server
downloads those performance data files periodically, running Orca and
generating the HTML files and RRD graphs for all of them.

Depending on the number of machines, a single machine can monitor
dozens of
servers, and the impact of Devilator is negligible. It just wakes up at
5 minute intervals, reads some OS statistics using sysctl(3) and
GEOM, and
writes a line to a text file.

In order to have Orca use the data provided by Devilator, the supplied
Orca configuration file, devilator.cfg, must be used. The relevant
variables to set up are:

- --------------
# base_dir is the directory where the RRD files will be stored.
base_dir                /var/orca/rrd/orcallator

# html_dir is the directory where the web pages (HTML files and PNG
graphs)
# will be stored. This directory will be made available with a suitable
# web server such as Apache.

html_dir                /var/www/orca

# find_files specifies the directory under which the text files with
# performance data reside. It is possible to monitor a set of
machines with a
# single Orca instance, with each machine having its own directory under
# /var/orca/orcallator, such as /var/orca/orcallator/server1,
# /var/orca/orcallator/server2...


find_files              /var/orca/orcallator/(.*)/(?:(?:orcallator)|
(?:percol))-
\d{4}-\d{2}-\d{2}(?:-\d{3,})?(?:\.(?:Z|gz|bz2))?
- ---------------

Please read the Orca documentation and become familiar with it.


- -------------------
FUTURE WORK
- -------------------

The graphs are a bit messy right now, although they are easy to
customize
editing the .cfg file. This program generates a lot of information
that might
not be necessary for everyone. Unnecessary graphs can be turned off
just by
commenting out the relevant sections in the configuration file.

Some enhancements would probably be useful. Tracking resources usage by
process name would allow the administrator to know which CGI scripts are
using more resources, etc.

I will be happy to hear about other interesting datasets. Simple sysctl
fetches are trivial to do. But obviously it would be insane to include
all the available data.

- --------------------
PORTABILITY
- --------------------

This program has been developed under FreeBSD, and some of the bits
(like its reliance on GEOM to gather disk I/O statistics) are pretty
FreeBSD-specific.
So far I have tested it and used it on FreeBSD 4.9 (x86), FreeBSD 6.x on
sparc64 and x86, and FreeBSD 7 on amd64.


- --------------------
SUPPORT
- --------------------

This program is supplied as is, and there's absolutely no guarantee
of any kind, including suitability for any particular purpose.
There's no
guarantee of technical support either.

This program started its life as an internal development, and I'm
polishing
it for public distribution. Most of the development time has been
payed for
by my employer, Sarenet, and it's being released as a contribution to
the
FreeBSD community.





Please send bugs, ideas, flames, etc to the following address:

Borja Marcos.
Sarenet S.A.

borjamar@sarenet.es
borjam@gmail.com (Preferred for Devilator issues)


Devilator can be downloaded from:

http://homepage.mac.com/borjam/.Public/devilator-1.0a.tar.gz
MD5 (devilator-1.0a.tar.gz) = 5868761c2ce0f8dc3ff51167fd06400a


And the PGP signature for the file follows:

- -----BEGIN PGP SIGNATURE-----
Version: PGP Desktop 9.5.3 (Build 5003)

qANQR1DEDQMAAhGlPtFtULJLjAHCPwMFAEbmbwOlPtFtULJLjBECYlEAnj1HejG2
rBJVYur8VvZ51MlSYVX1AJ9Aak05xRRkQ/BKn8Asl9nWsxD6rA==
=rKMg
- -----END PGP SIGNATURE-----


- ----------------
"The thing he realised about the windows was this: because they had
been converted into openable windows after they had first been
designed to be impregnable, they were, in fact, much less secure than
if they had been designed as openable windows in the first place."
     Douglas Adams, "Mostly Harmless"




-----BEGIN PGP SIGNATURE-----
Version: PGP Desktop 9.5.3 (Build 5003)

wj8DBQFG5nfqpT7RbVCyS4wRAr7eAJ98PUckfBpE6nH+ouU9hpN/FhT0LACg03UH
ETLJnR4KJFgk02lNuTZanW4=
=ULQE
-----END PGP SIGNATURE-----



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAD4B228-9B25-4D7D-9982-1701746D978D>