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

Increased flexibility for termination of parallel tasks #228

Closed
cdahlqvist opened this issue Feb 13, 2017 · 3 comments
Closed

Increased flexibility for termination of parallel tasks #228

cdahlqvist opened this issue Feb 13, 2017 · 3 comments
Labels
enhancement Improves the status quo :Load Driver Changes that affect the core of the load driver such as scheduling, the measurement approach etc. :Track Management New operations, changes in the track format, track download changes and the like
Milestone

Comments

@cdahlqvist
Copy link
Contributor

At the moment is appears that Rally waits for all parallel tasks to complete before continuing. For some workloads, e.g. when one wants to index a specific number of documents and run periodic queries while doing so, I can be difficult to ensure that these parallel tasks terminate at roughly the same time.

It would be useful if it was possible to specify which of the parallel tasks that should be considered for termination, e.g. through a flag on the task. The default for all tasks would be that they are considered and at least one of the tasks need to be considered.

@danielmitterdorfer danielmitterdorfer added this to the 0.5.1 milestone Feb 13, 2017
@danielmitterdorfer danielmitterdorfer added :Load Driver Changes that affect the core of the load driver such as scheduling, the measurement approach etc. enhancement Improves the status quo labels Feb 13, 2017
@danielmitterdorfer danielmitterdorfer modified the milestones: 0.5.1, 0.5.2, 0.5.3 Mar 1, 2017
@danielmitterdorfer danielmitterdorfer modified the milestones: 0.5.4, 0.5.3 Apr 11, 2017
@danielmitterdorfer danielmitterdorfer modified the milestones: 0.5.x, 0.5.4 Jun 19, 2017
@danielmitterdorfer
Copy link
Member

One aspect is missing from the original description (or rather vague): Consider task N is marked as the task that determines termination of a parallel structure and is executed by M number of clients. We will terminate other tasks in the same parallel structure if and only if M clients have successfully finished the execution of task N (i.e. we will not terminate everything as soon as the first client executing task N has finished).

@danielmitterdorfer danielmitterdorfer modified the milestones: 0.6.3, 0.6.x Jul 17, 2017
@danielmitterdorfer danielmitterdorfer self-assigned this Jul 17, 2017
@danielmitterdorfer danielmitterdorfer added the :Track Management New operations, changes in the track format, track download changes and the like label Jul 18, 2017
@danielmitterdorfer
Copy link
Member

danielmitterdorfer commented Jul 18, 2017

As a concrete example of what will be possible consider this example challenge (it's based on geonames):

{
  "name": "parallel",
  "description": "Parallel test",
  "index-settings": {
    "index.number_of_replicas": 0
  },
  "schedule": [
    {
      "parallel": {
        "completed-by": "index-append",
        "tasks": [
          {
            "operation": "index-append",
            "warmup-time-period": 0,
            "time-period": 45,
            "clients": 8
          },
          {
            "operation": "index-stats",
            "clients": 1,
            "time-period": 120,
            "target-throughput": 10
          },
          {
            "operation": "node-stats",
            "clients": 2,
            "time-period": 120,
            "target-throughput": 10
          }
        ]
      }
    },
    {
      "operation": "force-merge",
      "clients": 1
    },
    {
      "parallel": {
        "completed-by": "default",
        "tasks": [
          {
            "operation": "default",
            "clients": 2,
            "warmup-iterations": 50,
            "iterations": 100,
            "target-throughput": 50
          },
          {
            "operation": "scroll",
            "clients": 2,
            "warmup-iterations": 5,
            "iterations": 500,
            "target-throughput": 25
          }
        ]
      }
    }
  ]
}

Rally will terminate the first structure after roughly 45 seconds (after all 8 clients executing the index-append operation have finished) regardless whether index-stats and node-stats have finished.

Then it will run force-merge with one client.

Finally, it runs the operation default and scroll in parallel. As soon as the operation default has finished, scroll will be completed and the benchmark terminates.

Note that Rally supports only one task in completed-by.

@cdahlqvist
Copy link
Contributor Author

@danielmitterdorfer Great. I think that should cover what I was planning of using it for.

@danielmitterdorfer danielmitterdorfer removed their assignment Aug 8, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement Improves the status quo :Load Driver Changes that affect the core of the load driver such as scheduling, the measurement approach etc. :Track Management New operations, changes in the track format, track download changes and the like
Projects
None yet
Development

No branches or pull requests

2 participants