Set Difference
Inspired by the HotNets paper.
Setup
Parameterization
There are two parameters to be configured when generating a set difference workload: set size and operation chain length, which we describe below.
Set Size
The number of elements (unsigned integers) each generated set will contain. The reason why we want to parameterize over the size of the sets is that we want to see the "break-even" point between the legacy and nanotransaction-based variants, with the assumption being that traditional RPC-based approaches are not too bad when the size of the data being exchanged by value is small enough, but as the size of the operands in flight increases, so does the per-request latency.
Operation Chain Length
This represents the number of sequential operations that accept a previously computed result as an operand. For instance, in the workload
ACTION ; HOST; OPERAND 1; OPERAND 2; OUTPUT
get_difference; 1; 4; 106; 4106
get_difference; 1; 4; 146; 4146
get_difference; 1; 4; 103; 4103
the chain length is 1, since none of the calls to get_difference rely on the result of a previous
call to get_difference, while in the workload
ACTION ; HOST; OPERAND 1; OPERAND 2; OUTPUT
get_difference; 1; 4; 106; 4106
get_difference; 1; 4106; 146; 4146
get_difference; 1; 4146; 103; 4103
the chain length is 3, since we are passing the outputs of operations as inputs to subsequent calls
to get_difference.
The motivation behind introducing this parameter is to investigate if some access patterns are inherently better suited to the magpie approach.