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

Provide network and CPU throttling #177

Closed
hmdhk opened this issue Dec 18, 2020 · 3 comments
Closed

Provide network and CPU throttling #177

hmdhk opened this issue Dec 18, 2020 · 3 comments
Labels
enhancement New feature or request

Comments

@hmdhk
Copy link
Contributor

hmdhk commented Dec 18, 2020

Currently synthetics tests results are not representative of the majority of users that visit a specific web application. To better represent a real world situation we should run the tests with CPU and network throttling enabled. We can run the tests multiple times with different CPU/network throttling profiles.

@paulb-elastic @drewpost, IMHO it's preferable to make a decision on throttling while still in the experimental phase since the generated report results will be affect by this.

@hmdhk hmdhk added the enhancement New feature or request label Dec 18, 2020
@paulb-elastic
Copy link
Contributor

I completely agree that this is so important.

From a CPU perspective, we need to ensure in the first instance that there is a consistent allocation of CPU resources available for the test to run. We have had some discussions internally about this, and it’s listed as a requirement for GA (#93), being able to provide a consistent CPU boundary for both on prem and within cloud.

The most important thing in the first instance is to ensure consistency of the resources available, which dovetails from protecting against noisy neighbours.

Future enhancements could potentially be implemented to simulate slower devices (like a device profile configuration against a monitor that simulates a slower device).

Network throttling is equally important and monitors should rarely be running at line speed (certainly not when we’re gathering performance data) as it can generate such variability and misleading results.

Monitor configurations should be used to define what network speed the test runs with, controlling upload speed, download speed and latency as a minimum set of variables.

In all these cases, there is a need to ensure that the platform has sufficient CPU and network bandwidth to deliver the total concurrent monitors being run from that shared infrastructure, to ensure that it does not create a bottleneck that impacts the performance metrics of the tests.

@drewpost
Copy link

drewpost commented Jan 4, 2021

100% agree on the importance of this from a product perspective.

Device simulation is my biggest use case. Both with synthetic monitors and also ad-hoc generated runs based on identified anomalous RUM cohorts.

We should also consider the UX of this @katrin-freihofner - From a user's perspective is it better to have mixed speeds within a single monitor or would we have one speed per monitor consistently? Also, how do we communicate when speed settings have changed when viewing historical data

@paulb-elastic
Copy link
Contributor

I’d like to split this out to track and prioritise the features individually.

(I am excluding the platform consistency (CPU) from this as that’s a platform requirement for GA)

From the Synthetic Agent perspective, there are several things we need to throttle/emulate:

  • UA String (to emulate a different device type, often combined with a change of the viewport)
  • Viewport (to emulate a different device type, often combined with a change of the UA String)
  • Network (to emulate more realistic, throttled connections such as DSL, 3G, 4G etc.)
  • CPU (to emulate older devices)

Three separate issues have been raised to cover these as follows:

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

No branches or pull requests

3 participants