Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • The file scripts/clusterperf.py is the top-level driver that runs the performance benchmarks. It uses scripts/cluster.py to set up a RAMCloud cluster, then invokes the C++ program ClusterPerf on client machines to run benchmarks.
  • You must first have compiled ClusterPerf ("make all" will do that).
  • In addition, you must create a file scripts/localconfig.py that describes the machines available in your cluster. Here is a sample file:
    • Note: If you have rcres access, the hosts definition below is unnecessary; leaving host blank (i.e. hosts = []) will cause the scripts to automatically use the machines locked by the current user in rcres.
No Format
# This file customizes the cluster configuration for John Ousterhout.
# It is automatically included by config.py.

from config import *

hosts = []
for i in range(41,54):
 hosts.append(('rc%02d' % i,
 '192.168.1.%d' % (100 + i),
 i))

old_master_host = ('rc40', '192.168.1.140', 20)

...

  • Each entry in the hosts array describes one machine available for running either a RAMCloud server, a client, or both. The entry contains 3 values: a host name suitable for use with ssh to run commands on that host, the host's IP address (needed to create some service locators), and an ID that is used to generate Ethernet addresses for some transports. The third element is only used when running with raw Ethernet transports; you probably don't need to set this element. The variable old_master_host is not needed by clusterperf, but it is used by other scripts such as scripts/recovery.py; it specifies a machine (not in hosts) to use during recovery tests as the master server that will be crashed and recovered.
  • To run basic cluster tests, invoke the following command:

    scripts/clusterperf.py basic

    This will run the test named basic, which mmeasures measures read and write latency and throughput using a single client and a single server.
  • Clusterperf contains about a dozen performance tests. If you invoke scripts/clusterperf.py with no arguments, it will run all of the tests. To find out more about the tests, look in the file src/ClusterPerf.cc. There is one method in this file with the same name as each test, and the comments at the top of that method give a little bit of information about how the test works. The complete list of tests is defined by the table tests, which is declared just before the main function.
  • To get a complete listing of command-line options, invoke scripts/clusterbasic.py --help.
  • Clusterperf uses the file scripts/cluster.py to start up the RAMCloud cluster; if you have trouble running clusterperf, you may need to look into this script to see how things work. In addition, the file scripts/config.py contains many other configuration options. In our environment at Stanford we don't typically have to customize the information in this file, but if your environment is different from ours, then you may need to change things in this file as well.

...