mirror of
https://github.com/clearlinux/cloud-native-setup.git
synced 2026-09-03 20:31:30 +00:00
The time we measure is the time to launch and delete the whole deployment, not the 'pod'. Change the graph titles to be more accurate. Signed-off-by: Graham Whaley <graham.whaley@intel.com>
126 lines
4.0 KiB
R
Executable File
126 lines
4.0 KiB
R
Executable File
#!/usr/bin/env Rscript
|
|
# Copyright (c) 2018-2019 Intel Corporation
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# Show effects of parallel container launch on boot and deletion times by
|
|
# launching and killing off a deployment whilst ramping the number of pods requested.
|
|
|
|
suppressMessages(suppressWarnings(library(ggplot2))) # ability to plot nicely.
|
|
# So we can plot multiple graphs
|
|
library(gridExtra) # together.
|
|
suppressMessages(suppressWarnings(library(ggpubr))) # for ggtexttable.
|
|
suppressMessages(library(jsonlite)) # to load the data.
|
|
suppressMessages(library(scales)) # For de-science notation of axis
|
|
|
|
testnames=c(
|
|
"k8s-parallel*"
|
|
)
|
|
|
|
data=c()
|
|
stats=c()
|
|
rstats=c()
|
|
rstats_names=c()
|
|
cstats=c()
|
|
cstats_names=c()
|
|
|
|
skip_points_enable_smooth=0 # Should we draw the points as well as lines on the graphs.
|
|
|
|
for (currentdir in resultdirs) {
|
|
dirstats=c()
|
|
for (testname in testnames) {
|
|
matchdir=paste(inputdir, currentdir, sep="")
|
|
matchfile=paste(testname, '\\.json', sep="")
|
|
files=list.files(matchdir, pattern=matchfile)
|
|
if ( length(files) == 0 ) {
|
|
#warning(paste("Pattern [", matchdir, "/", matchfile, "] matched nothing"))
|
|
}
|
|
for (ffound in files) {
|
|
fname=paste(inputdir, currentdir, ffound, sep="")
|
|
if ( !file.exists(fname)) {
|
|
warning(paste("Skipping non-existent file: ", fname))
|
|
next
|
|
}
|
|
|
|
# Derive the name from the test result dirname
|
|
datasetname=basename(currentdir)
|
|
|
|
# Import the data
|
|
fdata=fromJSON(fname)
|
|
# De-nest the test name specific data
|
|
shortname=substr(ffound, 1, nchar(ffound)-nchar(".json"))
|
|
fdata=fdata[[shortname]]
|
|
|
|
testname=datasetname
|
|
|
|
# convert ms to seconds
|
|
cdata=data.frame(boot_time=as.numeric(fdata$BootResults$launch_time$Result)/1000)
|
|
cdata=cbind(cdata, delete_time=as.numeric(fdata$BootResults$delete_time$Result)/1000)
|
|
cdata=cbind(cdata, npod=as.numeric(fdata$BootResults$n_pods$Result))
|
|
|
|
# If we have more than 20 items to draw, then do not draw the points on
|
|
# the graphs, as they are then too noisy to read.
|
|
# But, do draw the smoothed lines to help read the now dense and potentially
|
|
# noisy graphs.
|
|
if (length(cdata[, "boot_time"]) > 20) {
|
|
skip_points_enable_smooth=1
|
|
}
|
|
|
|
cdata=cbind(cdata, testname=rep(testname, length(cdata[, "boot_time"]) ))
|
|
cdata=cbind(cdata, dataset=rep(datasetname, length(cdata[, "boot_time"]) ))
|
|
|
|
# Store away as a single set
|
|
data=rbind(data, cdata)
|
|
}
|
|
}
|
|
}
|
|
|
|
# Show how boot time changed
|
|
boot_line_plot <- ggplot( data=data, aes(npod, boot_time, colour=testname, group=dataset)) +
|
|
geom_line( alpha=0.2) +
|
|
xlab("parallel pods") +
|
|
ylab("Boot time (s)") +
|
|
ggtitle("Deployment boot time (detail)") +
|
|
#ylim(0, NA) + # For big machines, better to not 0-index
|
|
theme(axis.text.x=element_text(angle=90))
|
|
|
|
if ( skip_points_enable_smooth == 0 ) {
|
|
boot_line_plot = boot_line_plot + geom_point(alpha=0.3)
|
|
} else {
|
|
boot_line_plot = bool_line_plot + geom_smooth(se=FALSE, method="loess", size=0.3)
|
|
}
|
|
|
|
# And get a zero Y index plot.
|
|
boot_line_plot_zero = boot_line_plot + ylim(0, NA) +
|
|
ggtitle("Deployment boot time (0 index)")
|
|
|
|
# Show how boot time changed
|
|
delete_line_plot <- ggplot( data=data, aes(npod, delete_time, colour=testname, group=dataset)) +
|
|
geom_line(alpha=0.2) +
|
|
xlab("parallel pods") +
|
|
ylab("Delete time (s)") +
|
|
ggtitle("Deployment deletion time (detail)") +
|
|
#ylim(0, NA) + # For big machines, better to not 0-index
|
|
theme(axis.text.x=element_text(angle=90))
|
|
|
|
if ( skip_points_enable_smooth == 0 ) {
|
|
delete_line_plot = delete_line_plot + geom_point(alpha=0.3)
|
|
} else {
|
|
delete_line_plot = delete_line_plot + geom_smooth(se=FALSE, method="loess", size=0.3)
|
|
}
|
|
|
|
# And get a 0 indexed Y axis plot
|
|
delete_line_plot_zero = delete_line_plot + ylim(0, NA) +
|
|
ggtitle("Deployment deletion time (0 index)")
|
|
|
|
# See https://www.r-bloggers.com/ggplot2-easy-way-to-mix-multiple-graphs-on-the-same-page/ for
|
|
# excellent examples
|
|
master_plot = grid.arrange(
|
|
boot_line_plot_zero,
|
|
delete_line_plot_zero,
|
|
boot_line_plot,
|
|
delete_line_plot,
|
|
nrow=2,
|
|
ncol=2 )
|
|
|