COMP2121 Lab 1 Synchrobench Setup The goal of this lab is to setup the Java version of Synchrobench using the command line. Syn- chrobench requires Java 1.6 or higher and Apache ant. The use of a machine running a Unix-based operating system like Linux/Unix/Mac OS X is recommended. Exercise 1: Get Synchrobench Synchrobench is a micro-benchmark suite used to evaluate synchronization techniques on data struc- tures. Synchrobench is written in C/C++ and Java and currently includes arrays, binary trees, hash tables, linked lists, queues and skip lists that are synchronized with copy-on-write, locks, read-copy- update, compare-and-swap and transactional memory. A non-synchronized version of these data structures is proposed in each language as a baseline to measure the performance gain on multi- (/many)-core machines. Get a copy of Synchrobench by clicking here or 1 wget https://github.com/gramoli/synchrobench/archive/master.zip and unzip it: 1 unzip master.zip 2 rm master.zip Find your runtime Java library. This is a Java archive usually called rt.jar (sometimes called classes.jar) often located in /usr/lib/jvm/java-1.Version-archivecture/jre/lib/ on Linux or /System/Library/Frameworks/JavaVM.framework/Versions/1.Version/Classes/ on Mac OS X. 1 find /usr/lib/jvm/ -name rt.jar Duration: 5 min Exercise 2: Synchrobench on the command line 1. The Java folder contains the Java version of Synchrobench. Change Line 27, 31 or 35 if your run Mac OS X, Linux or Solaris, respectively, of file Makefile with the absolute path to your runtime Java library found in the previous step. Run the updated makefile to compile. 1 cd synchrobench-master/java 2 make 1 COMP2121 Synchrobench Setup 2. You should have a set of available data structures in the bin directory. Run one benchmark (e.g., LockBasedFriendlyTreeMap) with no warmup (-W 0), 2 threads (-t 2) running 10% of update (insert/remove) operations and 90% of read-only (contains) operations (-u 10) during 1 second (-d 1000). Extract its throughput performance. 1 java -server -cp lib/compositional-deucestm-0.1.jar:lib/mydeuce.jar \ 2 contention.benchmark.Test -W 0 -t 2 -d 1000 -u 10 -b \ 3 trees.lockbased.LockBasedFriendlyTreeMap > output.txt 4 grep Throughput output.txt Look at the output file output.txt. What is the difference between the effective updates and the update ratio you provided with parameter -u? Explain. Duration: 5 min Distributed Systems and Network Principles Page 2 of 2