Weevil: a Distributed System Experiment Automation Tool
News: (June 30, 2009) new release
(v1.2.7) of Weevil. This release
fixes a couple of minor portability errors. See
the ChangeLog for more detail.
This research project addresses the problem of experimenting with
highly distributed systems. We use the term highly distributed
system to refer to a system capable of delivering a service to
many clients through a large number of distributed access points. A
highly distributed system usually consists of a network of components,
executing independent and possibly heterogeneous tasks, that
collectively realize a coherent service. Examples of such systems are
various forms of general-purpose communication systems,
application-level overlays, networks of caching servers, peer-to-peer
file-sharing systems, distributed databases, replicated file systems,
and distributed middleware systems in general.
One difficulty software engineers face later in distributed system
development process is how to evaluate and tune the alternative
designs and implementations. The only solution is systematic,
repeatable experimentation with executable prototypes in realistic
execution environments. Thus, many large-scale or emulated networks
come into being to provide the testbed for such large-scale
experiments. However, the large-scale and complicated nature of
large-scale network environments and distributed system usage
scenarios makes the control of such experiments difficult.
Our tool, Weevil, is to ease the difficulty in programming
distributed experiment control scripts by generating them based on
some easy-to-write configuration files. It covers a two-phase
- Workload generation: A distributed system workload is a
time-ordered list of service calls from clients to system access
points. While there are many ways to create such workloads, they
are still not flexible enough and unavailable for some scenarios.
Our approach to workload generation is to perform an offline
simulation of expected client behavior and record the resulting
service calls. During an experiment run, these service calls are
issued as inputs into the subject system.
- Experiment deployment and execution: This activity
applies a workload to a system and gathers runtime data. To achieve
this, the subject system, the workload, and the framework codes are
first deployed across an experimentation testbed and then
configured. Next, the system is started and stimulated by the
execution of service calls at the times and locations dictated by
the workload. When the experiment terminates, output and diagnostic
data are collected from across the testbed to facilitate efficient
data analysis and reduction.
Weevil consists of a synthetic-workload generator coupled
with an environment for managing the deployment and execution of
experiments. Weevil is intended to facilitate experimentation
activities for distributed systems by providing engineers with a
flexible, configurable, automated and, thus, repeatable process for
evaluating their software on a networked testbed. Further, Weevil is
not targeted at a specific system or application model, but rather it
is a generic, programmable tool.
Copyright © 2004-2006 University of Colorado.
Copyright © 2007-2008 Università della Svizzera italiana (USI).
Copyright (C) 2002-2006 University of Colorado Weevil is free
software: you can redistribute it and/or modify it under the terms of
the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any
Weevil is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with Weevil. If not,
We extended a parallel
, to allow
more arguments included in an arbitrary command (instead of only
allowing IP address as arguments in the original vxargs). We thank its
auther, Yun Mao, for providing this useful tool. You can download our
extended version of vxargs here
- User Manual: general user
documentation written by Yanyan Wang. This manual covers mostly the
models, including the documentation of most of the macros used to
define components and testbed.
- User Manual and Tutorial:
general user documentation, including a tutorial, written by
Giovanni Toffetti Carughi. This manual covers the installation and
use of Weevil.
Workload Generator Reference Manual
Experiment Environment Reference Manual
- Automating Experimentation with
Distributed Systems Using Generative Techniques
Ph.D. Thesis, Department of Computer Science, University of
Colorado. Aug. 2006.
- Automating Experimentation on Distributed Testbeds
and A.L. Wolf
Proceedings of 20th IEEE/ACM International Conference on Automated
Software Engineering. Long Beach, California. November 2005.
- Four Enhancements to Automated Distributed System Experimentation Methods
and A.L. Wolf
In Proceedings of the Thirtieth International Conference on Software Engineering (ICSE'08).
Leipzig, Germany, May 2008.
The development of Weevil was supported in part by the US National
Science Foundation, US Army Research Office, and European Commission
under agreement numbers ANI-0240412, DAAD19-01-1-0484, and IST-026955.