Commit Graph

30 Commits

Author SHA1 Message Date
Morales Quispe, Marcela f7254e2b30 Edit test description for k8s_scale and k8s_parallel tests.
Signed-off-by: Morales Quispe, Marcela <marcela.morales.quispe@intel.com>
2019-11-05 09:15:44 +00:00
David Lyle 50553aa7bb only collect noschedule once
As part of the existing json file, there is a 'kubectl get nodes'
json dump. Instead of collecting this information each pod launch,
use the data already gathered. This data is immutable during the
test runs. This greatly improves the overall runtime of the test
script by preventing expensive kubectl execs per node per iteration.

Signed-off-by: David Lyle <dklyle0@gmail.com>
2019-10-18 12:39:00 -05:00
David Lyle 20cb90c7f7 Adding support for aysnc metrics via collectd
This patch adds a new script, scaling/k8s_scaling_rapid.sh, for
launching pods and collecting metrics. The goal is to two fold.
The first goal is improve the required runtime duration of scaling
to large numbers of pods. k8s_scaling.sh can take up to 29 hours
to scale to 2900 pods. The is largely due to the overhead of
collecting system utilization stats after each new pod is launched.
This new script will collect system utilization stats asynchronously.
The second goal is to make it easier to collect additional system
utilization stats by leveraging the plugins supported by collectd.

Instead of using the stats daemon set, a new daemon set
that runs collectd on each node is added. collectd configuration
is handled by collectd/collectd.conf A configmap is added to the
K8s cluster containing collectd.conf, so the user of the script
can test new configurations easily. The configmap is created and
deleted as part of the test run. The data from collectd is stored on
each node in the cluster via the csv plugin and the data is
collected to the master node at the end of the test run.

Several new pages have been added to the metrics_report.pdf
These pages cover the same metrics as k8s_scale.sh results, but are
populated with data from collectd. Additionally, network interface
results are added.

To run the report, in addition to the previous steps of creating
a new directory and copying the result json file into it, all the
new <node_name>.tar.gz files must be copied in as well.

Signed-off-by: David Lyle <dklyle0@gmail.com>
2019-10-18 12:39:00 -05:00
Marcela Morales Q ef72f7387c Update to Kubernetes naming usage in README file and logs to be homogenous. (#213)
Signed-off-by: Morales Quispe, Marcela <marcela.morales.quispe@intel.com>
2019-10-11 11:07:27 -07:00
Antti Kervinen 0325a44d6f scaling: fix syntax error in results/k8s-scaling-nc.json
Signed-off-by: Antti Kervinen <antti.kervinen@intel.com>
2019-10-07 11:21:04 -06:00
David Lyle 11c6d011cf global variables in function aren't global
A recent change put global variable declarations in a function,
the variables no longer are globally visible. This change removes
the encapsulation in a function.
2019-10-03 17:01:22 -05:00
Antti Kervinen 6213a499c1 metrics: scaling: add pod response latency test
- Send n requests for each of the running pods.
- Measure response time to response.
- Report response time percentiles: 5-25-50-75-95 %.
- Refactor scaling/*.sh variables to scaling/common.bash.

Signed-off-by: Antti Kervinen <antti.kervinen@intel.com>
2019-10-01 14:30:33 -06:00
David Lyle ccddc591dc Adding metric for inode usage
Adds support for tracking inode usage on the nodes. Results also
added to report.

The stats pod is updated as well to use net=host.
2019-09-12 09:45:05 -05:00
Antti Kervinen 18fde35232 metrics: scaling: require jq is installed
Also remove trailing whitespace

Signed-off-by: Antti Kervinen <antti.kervinen@intel.com>
2019-08-29 09:01:00 -06:00
David Lyle a61deb736c Fix array declaration
Used as associative array, not declared that way. The result
was indexing errors.
2019-08-29 14:31:50 +01:00
Graham Whaley 6d5c782fce metrics: scaling: check we have bc installed
We now use `bc` for some of the stats calculations. Ensure it
is installed, or we silently generate bad field data.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-08-27 09:41:44 -06:00
Graham Whaley 5e53ce9afb metrics: scaling: calculate mem consumed and pod/Gb
Keep track of memory consumed on the nodes, log that, and
generate an overall cluster value for 'pods-per-Gb'.

Generate this data here, whilst we have the data to hand, as
it can get much more difficult to calculate this information
the further you get down the monitoring stream (such as the
farther you get into an ELK stack).

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-08-27 09:41:44 -06:00
Graham Whaley 40cca1a8d4 metrics: scaling: whitespace fix
four-space to tab.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-08-14 08:20:36 -06:00
Graham Whaley 7b98d82e11 metrics: scaling: add datestamps to stats samples
Add invididual date entries to each statistics sample, to
suppliment the top level date entry. This helps order the
samples if we are flattening the data into say Elasticsearch.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-08-14 08:20:36 -06:00
Graham Whaley e4ef431b0f metrics: parallel scaling: add 'grace' handling
When 'grace' handling was added, it got missed from the parallel
script (which shares the bb.*.in files). Add it in to fix the test.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-08-14 08:20:36 -06:00
David Lyle c88d9a61c3 clean up 2019-08-07 09:53:36 +01:00
David Lyle d72621ae2e show which node the pod launched on, store pod name 2019-08-07 09:53:36 +01:00
David Lyle af7b595e4a excluding NoSchedule nodes from workload calculations 2019-08-07 09:53:36 +01:00
David Lyle ec9dbe1f0e changing node shapes in charts rather than color 2019-08-02 17:39:44 +01:00
David Lyle 45c9a7821a format fixes 2019-08-02 17:39:44 +01:00
David Lyle 510dd83b09 adding multinode utilization tracking 2019-08-02 17:39:44 +01:00
Graham Whaley 42359e1f8e metrics: scaling: store json int results as non-strings
We were storing some JSON data (such as NUM_PODS) as strings.
This would default their type into the Elastic DB as strings,
and not ints. May as well store ints as ints, so make that so.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-07-30 13:13:35 -06:00
Graham Whaley e73beb18e1 metrics: parallel: Test deployment parallel pod scaling
Test how long it takes to launch, and delete, a deployment
running up 'n' pods. Used to ascertain if parallel launch times
are linear with number of pods or not.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-07-30 13:13:35 -06:00
Graham Whaley fa94c2ce90 metrics: api: move some api code out to a common file
We are very likely to re-use the k8s api code in many/all of the
tests, so move common code out to a common libray file.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-07-30 13:13:35 -06:00
Graham Whaley bead9c7dfc metrics: use RUNTIME to determine RuntimeClass
If we have $RUNTIME set in the env, then we set up the pod
RuntimeClass, otherwise, just use the default node runtimes.

Clean up some of the un-used library code around docker/RUNTIME
as well whilst we are there.

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-07-30 13:13:35 -06:00
Graham Whaley 6e238d7cd9 metrics: scaling: change check for 'first deploy' to non-1 indexed
We need to check when we are launching our first instance of a
deployment when using the k8s API directly, as we have to modify
the URL for the first instance. Rather than check for '1', let's
check for 'STEP', as technically you can run the loop starting at
a non-1 index (particularly useful to run with NUM_PODS==STEP, as
you then get a 'single shot' test of 'n' containers).

Signed-off-by: Graham Whaley <graham.whaley@intel.com>
2019-07-30 11:51:06 -07:00
David Lyle c4b6824f07 Fixing proxy process management 2019-07-26 16:14:55 +01:00
David Lyle d7d40598b4 Add option to use API to launch 2019-07-26 16:14:55 +01:00
David Lyle 0f39518f8d Moving to milliseconds rather than seconds 2019-07-24 17:46:21 +01:00
David Lyle c67566e41e Initial commit of metrics for scaling 2019-07-24 17:46:21 +01:00