Administrator
|
Division strategies are used to divide a work into multiple non-overlapping partitions which have smaller ranges of containers or objects, there strategies are supported: container (based), object (based), or none.
I will use an example to explain the difference between those strategies. For example, here is a work as following:
<work name="main" workers="4" runtime="300" division="?"> <operation type="read" ratio="100" config="containers=u(1,8);objects=u(1,1000)" /> </work>
if "division=container", it means the data range will be partitioned by container, the access pattern looks like:
Worker Container Range Object Range
----------------------------------------------------------
worker 1 1 1-1000
worker 2 2 1-1000
worker 3 3 1-1000
worker 4 4 1-1000
(Note: it's not supported if workers is larger than the count of container defined in counter range).
if "division=object", it means the data range will be partitioned by object, the access pattern looks like:
Worker Container Range Object Range
---------------------------------------------------------
worker 1 1-4 1-250
worker 2 1-4 251-500
worker 3 1-4 501-750
worker 4 1-4 751-1000
(Note: it's not supported if workers is larger than the count of object defined in object range).
if "division=none", which is the default case, it is used to turn off division so that each worker does exactly what the work has specified—there is no partitions of the work, so each worker may touch all containers or objects.
I'm considering to add this part into user guide to help understand how different division strategy works.
-Y.G.
|