-
Notifications
You must be signed in to change notification settings - Fork 313
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
An actorless load generator #852
Labels
enhancement
Improves the status quo
:Load Driver
Changes that affect the core of the load driver such as scheduling, the measurement approach etc.
meta
A high-level issue of a larger topic which requires more fine-grained issues / PRs
Comments
danielmitterdorfer
added
enhancement
Improves the status quo
meta
A high-level issue of a larger topic which requires more fine-grained issues / PRs
:Load Driver
Changes that affect the core of the load driver such as scheduling, the measurement approach etc.
discuss
Needs further clarification from the team
labels
Dec 20, 2019
danielmitterdorfer
added a commit
to danielmitterdorfer/rally-tracks
that referenced
this issue
Feb 20, 2020
Due to elastic/rally#852 we will implement a compatibility layer in the current load generator that will also use the asyncio API and thus requires custom runners to be registered differently (by specifying `async_runner=True`). Rally's runner registry will also expose a new attribute `async_runner` that is set to `True` if Rally requires runners to be registered as described above. With this commit we introduce a (temporary) compatibility layer for all custom runners that allows older Rally versions to work with the classic runners and newer Rally versions with the async runners. Relates elastic/rally#852
danielmitterdorfer
added a commit
to danielmitterdorfer/rally-eventdata-track
that referenced
this issue
Feb 20, 2020
Due to elastic/rally#852 we will implement a compatibility layer in the current load generator that will also use the asyncio API and thus requires custom runners to be registered differently (by specifying `async_runner=True`). Rally's runner registry will also expose a new attribute `async_runner` that is set to `True` if Rally requires runners to be registered as described above. With this commit we introduce a (temporary) compatibility layer for all custom runners that allows older Rally versions to work with the classic runners and newer Rally versions with the async runners. Relates elastic/rally#852
danielmitterdorfer
added a commit
to danielmitterdorfer/rally-eventdata-track
that referenced
this issue
Feb 20, 2020
Due to elastic/rally#852 we will implement a compatibility layer in the current load generator that will also use the asyncio API and thus requires custom runners to be registered differently (by specifying `async_runner=True`). Rally's runner registry will also expose a new attribute `async_runner` that is set to `True` if Rally requires runners to be registered as described above. With this commit we introduce a (temporary) compatibility layer for all custom runners that allows older Rally versions to work with the classic runners and newer Rally versions with the async runners. Relates elastic/rally#852
danielmitterdorfer
added a commit
to elastic/rally-eventdata-track
that referenced
this issue
Feb 21, 2020
Due to elastic/rally#852 we will implement a compatibility layer in the current load generator that will also use the asyncio API and thus requires custom runners to be registered differently (by specifying `async_runner=True`). Rally's runner registry will also expose a new attribute `async_runner` that is set to `True` if Rally requires runners to be registered as described above. With this commit we introduce a (temporary) compatibility layer for all custom runners that allows older Rally versions to work with the classic runners and newer Rally versions with the async runners. Relates elastic/rally#852 Relates elastic/rally#916
danielmitterdorfer
added a commit
to elastic/rally-eventdata-track
that referenced
this issue
Feb 21, 2020
Due to elastic/rally#852 we will implement a compatibility layer in the current load generator that will also use the asyncio API and thus requires custom runners to be registered differently (by specifying `async_runner=True`). Rally's runner registry will also expose a new attribute `async_runner` that is set to `True` if Rally requires runners to be registered as described above. With this commit we introduce a (temporary) compatibility layer for all custom runners that allows older Rally versions to work with the classic runners and newer Rally versions with the async runners. Relates elastic/rally#852 Relates elastic/rally#916
danielmitterdorfer
added a commit
to elastic/rally-tracks
that referenced
this issue
Feb 21, 2020
Due to elastic/rally#852 we will implement a compatibility layer in the current load generator that will also use the asyncio API and thus requires custom runners to be registered differently (by specifying `async_runner=True`). Rally's runner registry will also expose a new attribute `async_runner` that is set to `True` if Rally requires runners to be registered as described above. With this commit we introduce a (temporary) compatibility layer for all custom runners that allows older Rally versions to work with the classic runners and newer Rally versions with the async runners. Relates elastic/rally#852 Relates elastic/rally#916
danielmitterdorfer
added a commit
to elastic/rally-tracks
that referenced
this issue
Feb 21, 2020
Due to elastic/rally#852 we will implement a compatibility layer in the current load generator that will also use the asyncio API and thus requires custom runners to be registered differently (by specifying `async_runner=True`). Rally's runner registry will also expose a new attribute `async_runner` that is set to `True` if Rally requires runners to be registered as described above. With this commit we introduce a (temporary) compatibility layer for all custom runners that allows older Rally versions to work with the classic runners and newer Rally versions with the async runners. Relates elastic/rally#852 Relates elastic/rally#916
danielmitterdorfer
added a commit
to elastic/rally-tracks
that referenced
this issue
Feb 21, 2020
Due to elastic/rally#852 we will implement a compatibility layer in the current load generator that will also use the asyncio API and thus requires custom runners to be registered differently (by specifying `async_runner=True`). Rally's runner registry will also expose a new attribute `async_runner` that is set to `True` if Rally requires runners to be registered as described above. With this commit we introduce a (temporary) compatibility layer for all custom runners that allows older Rally versions to work with the classic runners and newer Rally versions with the async runners. Relates elastic/rally#852 Relates elastic/rally#916
danielmitterdorfer
added a commit
to elastic/rally-tracks
that referenced
this issue
Feb 21, 2020
Due to elastic/rally#852 we will implement a compatibility layer in the current load generator that will also use the asyncio API and thus requires custom runners to be registered differently (by specifying `async_runner=True`). Rally's runner registry will also expose a new attribute `async_runner` that is set to `True` if Rally requires runners to be registered as described above. With this commit we introduce a (temporary) compatibility layer for all custom runners that allows older Rally versions to work with the classic runners and newer Rally versions with the async runners. Relates elastic/rally#852 Relates elastic/rally#916
danielmitterdorfer
added a commit
to elastic/rally-tracks
that referenced
this issue
Feb 21, 2020
Due to elastic/rally#852 we will implement a compatibility layer in the current load generator that will also use the asyncio API and thus requires custom runners to be registered differently (by specifying `async_runner=True`). Rally's runner registry will also expose a new attribute `async_runner` that is set to `True` if Rally requires runners to be registered as described above. With this commit we introduce a (temporary) compatibility layer for all custom runners that allows older Rally versions to work with the classic runners and newer Rally versions with the async runners. Relates elastic/rally#852 Relates elastic/rally#916
danielmitterdorfer
added a commit
to elastic/rally-tracks
that referenced
this issue
Feb 21, 2020
Due to elastic/rally#852 we will implement a compatibility layer in the current load generator that will also use the asyncio API and thus requires custom runners to be registered differently (by specifying `async_runner=True`). Rally's runner registry will also expose a new attribute `async_runner` that is set to `True` if Rally requires runners to be registered as described above. With this commit we introduce a (temporary) compatibility layer for all custom runners that allows older Rally versions to work with the classic runners and newer Rally versions with the async runners. Relates elastic/rally#852 Relates elastic/rally#916
danielmitterdorfer
added a commit
that referenced
this issue
Mar 8, 2020
With this commit we add a new experimental subcommand `race-aync` to Rally. It allows to specify significantly more clients than the current `race` subcommand. The reason for this is that under the hood, `race-async` uses `asyncio` and runs all clients in a single event loop. Contrary to that, `race` uses an actor system under the hood and maps each client to one process. As the new subcommand is very experimental and not yet meant to be used broadly, there is no accompanying user documentation in this PR. Instead, we plan to build on top of this PR and expand the load generator to take advantage of multiple cores before we consider this usable in production (it will likely keep its experimental status though). In this PR we also implement a compatibility layer into the current load generator so both work internally now with `asyncio`. Consequently, we have already adapted all Rally tracks with a backwards-compatibility layer (see elastic/rally-tracks#97 and rally-eventdata-track#80). Closes #852
danielmitterdorfer
added a commit
that referenced
this issue
Mar 29, 2020
With this commit we add a new experimental subcommand `race-aync` to Rally. It allows to specify significantly more clients than the current `race` subcommand. The reason for this is that under the hood, `race-async` uses `asyncio` and runs all clients in a single event loop. Contrary to that, `race` uses an actor system under the hood and maps each client to one process. As the new subcommand is very experimental and not yet meant to be used broadly, there is no accompanying user documentation in this PR. Instead, we plan to build on top of this PR and expand the load generator to take advantage of multiple cores before we consider this usable in production (it will likely keep its experimental status though). In this PR we also implement a compatibility layer into the current load generator so both work internally now with `asyncio`. Consequently, we have already adapted all Rally tracks with a backwards-compatibility layer (see elastic/rally-tracks#97 and elastic/rally-eventdata-track#80). Closes #852 Relates #916
Reopening as our current multi-core implementation in #944 still uses the actor system. |
Closing as we have no intention of changing this in the foreseeable future (this may change in the far future though). |
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.
meta
A high-level issue of a larger topic which requires more fine-grained issues / PRs
At the moment Rally uses a process per client model (see #9 (comment), #58 and fe5dba3 for more details) and implements this with an actor system that allows clients (actors) to communicate with each other. The basic structure is that there is a controller actor (called
Driver
) for all clients and each client (actor) is responsible to execute scheduled tasks. However, this has several drawbacks that we've seen in practice:Note that these limitations are due to the specific actor system implementation, and not necessarily conceptual issues. There are, however, also shortcomings that can be related to the process per client model:
We should explore a few options based on these shortcomings:
There are maybe other options as well but these are the choices that first come to mind. We should also refine this ticket as we proceed with our analysis.
IMHO it is ok to support only one load generator machine in the first step but we should aim to support the Rally tracks that we currently maintain.
The text was updated successfully, but these errors were encountered: