Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Richard Jones <rich@annexia.org>
To: caml-list@inria.fr
Subject: virt-top
Date: Fri, 31 Aug 2007 23:16:38 +0100	[thread overview]
Message-ID: <20070831221638.GA17638@furbychan.cocan.org> (raw)

http://et.redhat.com/~rjones/virt-top/

Virt-top is a practical measurement tool for monitoring the
performance of virtual machines.  Unix users can think 'top' for Xen,
QEMU, etc.

At some point I want to write a paper about my experiences with
writing this in OCaml, but in brief:

Pros:

* I've had several comments about how easy the binary is to install --
it doesn't require lots of runtime infrastructure like an equivalent
Python program might.  It's just a native binary which is dynamically
linked to libvirt.so & ncurses.so.  People who aren't paying close
attention probably think I've written a C program.

* The program is incredibly short considering the amount of stuff
which it does -- just 1000 LoC.

* The program takes a tiny fraction of processor / memory than people
are used to.  And it doesn't leak memory.  (Believe me, these are
baffling new "features" compared to similar Python programs).

* Not having to worry about the usual C hassles (memory management,
strings, errors etc.) makes programming much simpler.  I know because
today I mistakenly started another project using C, and realised what
a grind it was -- a quick rewrite of that one in OCaml was necessary.

And now for the CONS:

* I have to provide binaries for most people, because compiling the
program is practically impossible for most users.

* Porting it to new platforms is hard, because of lack of
comprehensive OCaml support on things like FreeBSD / Solaris/ Gentoo /...
[I'm working on rectifying this and the above, but could do with help
from any FreeBSD and _especially_ Solaris users out there].

* Lack of library support is so acute that I've had to structure the
program in several "layers" so that, for example, only extlib &
ocaml-curses is absolutely required (it'd be hard to imagine a
top-like program which didn't use ncurses), but users can still build
from source with other OCaml libraries missing, although they will get
reduced functionality.
[See: http://hg.et.redhat.com/virt/applications/virt-top--devel?f=81bcc3563dc7;file=virt-top/README]

* Most people look at the code in confusion.  I still haven't had a
single patch from anyone, and that is disappointing (and more
importantly, against the kind of open involvement which Red Hat
requires).

* Tools: Common text editors don't know what to do with the .ml files.
Even emacs doesn't have tuareg-mode by default.  This extends
throughout the whole toolchain.  For example source control tools
can't annotate the code
(http://hg.et.redhat.com/virt/applications/virt-top--devel?f=2f31261c9437;file=virt-top/virt_top.ml - q.v.),
and automake doesn't understand what to do with .ml files.

So do we want to make functional programming available to the masses?
It's all the "stupid" stuff like the above which needs the effort to
fix.

Rich.

-- 
Richard Jones
Red Hat


                 reply	other threads:[~2007-08-31 22:16 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070831221638.GA17638@furbychan.cocan.org \
    --to=rich@annexia.org \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox