While the experiment can be run on developer setup from within a virtual machine or on a laptop, it is targeted for the data center environment with high bandwidth links and rich multi socket servers. Therefore further steps will assume that experiment will be run in the multi node environment.
When Swan is used in a cluster environment, we recommend the following machine topology:
Type | Description | Machine |
---|---|---|
System Under Test (SUT) | Machine where Swan is run and thus where workloads are deployed. | 1 x 10Gb link, hyper threaded with 16 or more hyper threads, preferably with 2 sockets |
Load generator agents | Machines to generate stress on the target machine. Our application of choice for this task is Mutilate. | 10Gb link for each agent, 20 or more hyper threads in total |
Services node | Machine where Cassandra, Jupyter and Load Generator Master will run. The 'cleaniness' of this machine is less important than target and load generator machines. | 1 x 1-10Gb link, higher memory capacity to accommodate for Cassandra heap usage. |
When Memcached is run on large multi-core machine, then it will require multiple load generator agents be fully saturated.
Although Swan can be run on any machine, the more recent hardware might yield more detailed metrics about workload interference. For example Haswell CPU (Xeon v3) enables monitoring of cache occupancy (via CMT). Newer Broadwell CPU (Xeon v4) adds Memory Bandwidth Monitoring and enables user to separate cache for different workloads (via CAT). For more information, please see Intel RDT page.
Swan was tested on CentOS 7, and installation instructions covers only this distribution, although other distribution should be able to run Swan just fine.
In the next section there is a list of default options of CentOS 7 kernel that should be changed to accommodate larger loads and make latency variance lower.
Experiment when run will log Warning
messages if those setting are not set properly, but will run nonetheless.
This should be set on SUT and load generator machines.
As the both Mutilate and Memcached will create many connections, it is important that the number of available file descriptors is high enough. It should be in the high tens of thousands. To check the current limit, run:
$ ulimit -n
256
and set a new value with:
$ ulimit -n 65536
This should be set on SUT machine.
Sometimes, the Linux kernel applies anti-denial of service measures, like introducing TCP SYN cookies. This will break the mutilate load generators and should be turned off on the SUT machine:
$ sudo sysctl net.ipv4.tcp_syncookies=0
This should be set on SUT machine. Does not affect virtual machines.
To avoid power saving policies to kick in while carrying out the experiments, set the power governor policy to 'performance':
$ sudo cpupower frequency-set -g performance
Please move to Installation page.