Skip to content

Commit 9fd44d6

Browse files
committed
Extended benchmark results
1 parent 3b06d88 commit 9fd44d6

23 files changed

+106
-55
lines changed

README.md

Lines changed: 30 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,31 +42,50 @@ The number of threads can be larger than the number of available logical CPU cor
4242

4343
## Benchmarking script
4444

45-
The `TinyFastSimulator-Benchmark.sh` (no load balancer mode) and the `TinyFastSimulator-Balanced-Benchmark.sh` (load balancer mode) scripts can be used to test the performance in relation to the number of threads. The scripts are to be called with three parameters: the maximum number of threads to be used, the number of arrivals per thread and the output file. The scripts will run the simulator with one threads and the number of arrival specified; then with two threads and the double total number of arrivals etc. until the specified maximum number of threads is reached. For each simulation run one line is added to the specified output file. Each line will have three columns: the number of threads used, the runtime (in seconds) and the used RAM (in KB). To get statistical stable result a number of arrivals of 100,000,000 or higher should be used.
45+
The `TinyFastSimulator-Benchmark.sh` (no load balancer mode), the `TinyFastSimulator-Balanced-Benchmark.sh` (load balancer mode) and the `TinyFastSimulator-Balanced-Epsilon-Benchmark.sh` (load balancer mode, using epsilon collector instead of G1 collector) scripts can be used to test the performance in relation to the number of threads. The scripts are to be called with three parameters: the maximum number of threads to be used, the number of arrivals per thread and the output file. The scripts will run the simulator with one threads and the number of arrival specified; then with two threads and the double total number of arrivals etc. until the specified maximum number of threads is reached. For each simulation run one line is added to the specified output file. Each line will have three columns: the number of threads used, the runtime (in seconds) and the used RAM (in KB). To get statistical stable result a number of arrivals of 100,000,000 or higher should be used.
4646

4747
Usage example: `./TinyFastSimulator-Benchmark.sh 32 100000000 results.txt`
4848

4949
## Benchmark results
5050

51-
The following benchmarks were performed on a system with two CPUs of the type AMD Epyc 7281 (Zen+ architecture, 16 physical / 32 logical cores each).
51+
The following benchmarks were performed on a system with two CPUs of the type AMD Epyc 7281 (Zen+ architecture, 16 physical / 32 logical cores each). The charts are the average values over three simulations runs each.
5252

53-
### No load balancer
53+
### Java 21, G1 collector, no load balancer
5454

55-
![Benchmark - no load balancer - absolute performance](images/Benchmark1.png)
55+
![Benchmark - Java 21 - G1 - no load balancer - absolute performance](images/Benchmark-J21-fix-G1-1.png)
5656

57-
![Benchmark - no load balancer - relative performance](images/Benchmark2.png)
57+
![Benchmark - Java 21 - G1 - no load balancer - relative performance](images/Benchmark-J21-fix-G1-2.png)
5858

59-
### Load balancer
59+
### Java 21, G1 collector, load balancer
6060

61-
![Benchmark - load balancer - absolute performance](images/Benchmark3.png)
61+
![Benchmark - Java 21 - G1 - load balancer - absolute performance](images/Benchmark-J21-dyn-G1-1.png)
6262

63-
![Benchmark - load balancer - relative performance](images/Benchmark4.png)
63+
![Benchmark - Java 21 - G1 - load balancer - relative performance](images/Benchmark-J21-dyn-eps-2.png)
6464

65-
### Load balancer + No garbage collection ("epsilon collector")
65+
### Java 21- epsilon collector, load balancer
6666

67-
![Benchmark - load balancer - epsilon collector - absolute performance](images/Benchmark5.png)
67+
![Benchmark - Java 21 - epsilon collector - load balancer - absolute performance](images/Benchmark-J21-dyn-eps-1.png)
68+
69+
![Benchmark - Java 21 - epsilon collector - load balancer - relative performance](images/Benchmark-J21-dyn-eps-2.png)
70+
71+
### Java 24, G1 collector, no load balancer
72+
73+
![Benchmark - Java 24 - G1 - no load balancer - absolute performance](images/Benchmark-J24-fix-G1-1.png)
74+
75+
![Benchmark - Java 24 - G1 - no load balancer - relative performance](images/Benchmark-J24-fix-G1-2.png)
76+
77+
### Java 24, G1 collector, load balancer
78+
79+
![Benchmark - Java 24 - G1 - load balancer - absolute performance](images/Benchmark-J24-dyn-G1-1.png)
80+
81+
![Benchmark - Java 24 - G1 - load balancer - relative performance](images/Benchmark-J24-dyn-eps-2.png)
82+
83+
### Java 24- epsilon collector, load balancer
84+
85+
![Benchmark - Java 24 - epsilon collector - load balancer - absolute performance](images/Benchmark-J24-dyn-eps-1.png)
86+
87+
![Benchmark - Java 24 - epsilon collector - load balancer - relative performance](images/Benchmark-J24-dyn-eps-2.png)
6888

69-
![Benchmark - load balancer - epsilon collector - relative performance](images/Benchmark6.png)
7089

7190
(The JVM options `-XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC` were used to active the epsilon collector.)
7291

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/bin/bash
2+
3+
if [ ! -f "./TinyFastSimulator-Java.jar" ]
4+
then
5+
echo "Simulator program file (TinyFastSimulator-Java.jar) not found"
6+
exit 1
7+
fi
8+
9+
if [ "$1" == "" -o "$2" == "" -o "$3" == "" ]
10+
then
11+
echo "The script has to be called with three parameters:"
12+
echo "1. Maximum number of threads"
13+
echo "2. Number of arrivals (in single thread mode) to be simulated"
14+
echo "3. Output file for the results"
15+
echo "Example: ./TinyFastSimulator-Benchmark.sh 32 100000000 results.txt"
16+
exit 1
17+
fi
18+
19+
echo "Benchmarking the performance at different numbers of threads"
20+
echo "Output will be written to $3"
21+
22+
echo -e "Threads\tRuntime [sec.]\tMemory [KB]" >> $3
23+
for ((x=1;x<=$1;x++))
24+
do
25+
echo "Running simulation $x of $1"
26+
echo -en "$x\t" >> $3
27+
\time -f "%e\t%M" -o $3 -a java -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -jar TinyFastSimulator-Java.jar load_balancer threads=$x arrivals=$2 increase_arrivals > /dev/null
28+
done

images/Benchmark-J21-dyn-G1-1.png

149 KB
Loading

images/Benchmark-J21-dyn-G1-2.png

139 KB
Loading

images/Benchmark-J21-dyn-eps-1.png

150 KB
Loading

images/Benchmark-J21-dyn-eps-2.png

140 KB
Loading

images/Benchmark-J21-fix-G1-1.png

191 KB
Loading

images/Benchmark-J21-fix-G1-2.png

185 KB
Loading

images/Benchmark-J24-dyn-G1-1.png

127 KB
Loading

images/Benchmark-J24-dyn-G1-2.png

125 KB
Loading

0 commit comments

Comments
 (0)