Benchmarking Code and Additional Results for "Efficient Support for Range Queries and Range Updates Using Contention Adapting Search Trees"
This archive contains code that can be used to reproduce the results included in the following publication:
- Konstantinos Sagonas and Kjell Winblad. Efficient Support for Range Queries and Range Updates Using Contention Adapting Search Trees. In Proceedings of the 28th International Workshop on Languages and Compilers for Parallel Computing, Raleigh, USA, September 2015. (publisher's version, preprint)
More information about how to use the benchmark code can be found in the included README.md file.
This page contains more information about CA trees.
Please, contact Kjell Winblad (kjell.winblad@it.uu.se) if you have any questions.
Additional Results
We have run benchmarks for range queries and range updates on two machines. The first machine called Bulldozer has four AMD Opteron 6276 (2.3 GHz, 16 cores, 16M L2/16M L3 Cache), giving a total of 64 cores and 128GB or RAM, running Linux 3.10-amd64 and Oracle Hotspot JVM 1.8.0_31 (started with parameters -Xmx4g, -Xms4g, -server and -d64). The second machine called Sandy has four Intel(R) Xeon(R) E5-4650 CPUs (2.70GHz each with eight cores and hyperthreading) and the same operating system and JVM as bulldozer. On Sandy we pinned threads to NUMA nodes so the first 16 threads run on one chip, from 17 to 32 threads on two chips and so on. Performance graphs showing throughput in ops/microsecond on the y-axis and thread counts on the x-axis can be found below. A figure title of the form w:A% r:B% q:C%-R1 u:D%-R2 represents a scenario with (A/2)% insert, (A/2)% remove, B% get operations, C% range queries of maximum range size R1, and D% range updates with maximum range size R2.
Machine\Key range | 500000 | 1000000 | 2000000 |
---|---|---|---|
Bulldozer | Download | Download | Download |
Sandy | Download | Download | Download |