Mstone is a multi-protocol stress and performance measurement tool. Mstone can test multiple protocols simultaneously and measures the performance of every transaction. The performance can be graphed throughout the duration of the test.
First a bit of history: Netscape Messaging Server includes Mailstone to allow customers to test their mail server installations before public roll out. Mailstone is a benchmark framework for testing mail protocols like POP, IMAP, SMTP, and WMAP (Netscape Messenger Express). However, all the new directions for Mailstone are in protocols other than mail. So we changed the name to mstone (think multi-stone) and made the source available so people can easily develop new tests.
Mstone gives you a lot of detailed information. It does not spit out a standardized "POPmark" number or anything like that. You could standardize a test sequence and combine the detailed numbers using a standard formula, but that's a task for people with much time to kill.
In order to simulate high load levels and to randomize accesses, mstone can run on multiple test client machines and the results automatically combined when the test is complete. Each client can have multiple processes and multiple threads (limited only by the OS and hardware). Simultaneous connection counts of 100,000 have be performed and much higher levels are possible. For long lasting protocols like IMAP and WMAP, this is important for properly stressing the servers.
Mstone currently runs on recent versions of: Linux, Solaris, AIX, OSF, HPUX, and NT. Any OS with POSIX threads support should be an easy port. The test client machines can each be running different operating systems. Common utilities like perl, gnuplot, and gd are used and can be packaged with mstone for completeness.
Tests are defined through workload files and command line arguments. Everything is designed to be repeatable and easily sequenced. The results are available in HTML, plain text, and as a spreadsheet import file (CSV).
Mstone should build, package, and work fine on all major Unix and NT. The other support components (perl, gnuplot, and gd) will be build if present (read Building for more details). Some sites will have usable versions of these components already, but many don't.
Future protocols may include: WCAP, LDAP, WAP, DNS, ICQ, and disk performance. See the complete ToDo list for more details. Documentation for adding your own test protocols will be started Real Soon Now.
Proper autoconf support would be nice.
First, set your CVSROOT
environment variable to the
appropriate CVS repository and check out the mozilla/mstone
module. Mstone does not depend on any other directories under
mozilla
.
% cvs co mozilla/mstone % cd mozilla/mstone % gmake rpackage
You should now have a complete runnable tree under a platform-specific
directory under build/package/
.