Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add option to allow for unique object names across drivers #129

Closed
agama opened this issue Oct 21, 2013 · 5 comments
Closed

Add option to allow for unique object names across drivers #129

agama opened this issue Oct 21, 2013 · 5 comments
Milestone

Comments

@agama
Copy link

agama commented Oct 21, 2013

In some situations, ensuring that the object names generated by drivers are guaranteed to be unique is a requirement. It would be nice to have an option supplied via the XML that would enable this feature, or to have a substitution string as a part of the object name prefix that would be recognised and replaced with the driver ID (e.g. obj_%d, where %d would be replaced).

@gilmcgrath
Copy link

adding null comment so I can track as a participant

@ywang19
Copy link
Contributor

ywang19 commented Oct 24, 2013

A good requirement, however, quick evaluation shows some conflicts with current code, we will do a deeper evaluation to see if and how to cover it.

thanks.
-Y.G.

@ywang19
Copy link
Contributor

ywang19 commented Nov 18, 2013

The division strategy should help on it, below part is from latest user guide section 4.10.2, let me know if it's you are asking for.

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.
Different stage type has different default division strategy, for init/dispose, the default is “container”, for prepare/cleanup, the default is “object”, and for normal, the default is “none”.

We will use one example to explain the difference between different division strategies, here is a work as following:


If "division=container", it means the data range will be partitioned by container, the access pattern looks like:
Worker Container Range Object Range
#1 1-2 1-1000
#2 3-4 1-1000
#3 5-6 1-1000
#4 7-8 1-1000
(Note: it's not supported if # of workers is larger than # of containers.)

If "division=object", it means the data range will be partitioned by object, the access pattern looks like:
Worker Container Range Object Range
#1 1-8 1-250
#2 1-8 251-500
#3 1-8 501-750
#4 1-8 751-1000
(Note: it's not supported if the # of workers is larger than the # of objects.)

If "division=none", 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.

@ywang19
Copy link
Contributor

ywang19 commented Apr 3, 2014

Assuming division strategy could cover this requirement well.

@ywang19 ywang19 closed this as completed Apr 3, 2014
@ywang19 ywang19 modified the milestone: 0.4.0 May 16, 2014
@EricJLarson
Copy link

Hi @ywang19,

In our tests, the "division" property prevents container-object names from being reused, but only in smaller workloads with < 4 drivers. In our tests using 17 drivers, the following causes workload configuration causes the creation of between 5 and 11 objects with a container-object name that was already created during the workload.

<work name="main" division="container" workers="17" totalOps="800">
...... containers=r(1,35);objects=u(1,900)... />

Are we mis-using the "division" field?
Could you provide a sample workload that will not have overwrites, but will have 17 workers and 800 writes?

Btw, we are a fan of your work!

Thank you,
Eric

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants