mirror of
https://github.com/optim-enterprises-bv/kubernetes.git
synced 2025-11-02 11:18:16 +00:00
This is useful to see whether pod scheduling happens in bursts and how it
behaves over time, which is relevant in particular for dynamic resource
allocation where it may become harder at the end to find the node which still
has resources available.
Besides "pods scheduled" it's also useful to know how many attempts were
needed, so schedule_attempts_total also gets sampled and stored.
To visualize the result of one or more test runs, use:
gnuplot.sh *.dat
55 lines
2.0 KiB
Bash
Executable File
55 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Copyright 2024 The Kubernetes Authors.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
# Invoke this script with a list of *.dat and it'll plot them with gnuplot.
|
|
# Any non-file parameter is passed through to gnuplot. By default,
|
|
# an X11 window is used to display the result. To write into a file,
|
|
# use
|
|
# -e "set term png; set output <output>.png"
|
|
|
|
files=()
|
|
args=( -e "set term x11 persist" )
|
|
|
|
for i in "$@"; do
|
|
if [ -f "$i" ]; then
|
|
files+=("$i")
|
|
else
|
|
args+=("$i")
|
|
fi
|
|
done
|
|
|
|
(
|
|
cat <<EOF
|
|
set ytics autofreq nomirror tc lt 1
|
|
set xlabel 'measurement runtime [seconds]'
|
|
set ylabel 'scheduling rate [pods/second]' tc lt 1
|
|
set y2tics autofreq nomirror tc lt 2
|
|
set y2label 'scheduling attempts per pod' tc lt 2
|
|
|
|
# Derivative from https://stackoverflow.com/questions/15751226/how-can-i-plot-the-derivative-of-a-graph-in-gnuplot.
|
|
d2(x,y) = (\$0 == 0) ? (x1 = x, y1 = y, 1/0) : (x2 = x1, x1 = x, y2 = y1, y1 = y, (y1-y2)/(x1-x2))
|
|
dx = 0.25
|
|
|
|
EOF
|
|
echo -n "plot "
|
|
for file in "${files[@]}"; do
|
|
echo -n "'${file}' using (\$1 - dx):(d2(\$1, \$2)) with linespoints title '$(basename "$file" .dat | sed -e 's/_/ /g') metric rate' axis x1y1, "
|
|
echo -n "'${file}' using (\$1 - dx):(d2(\$1, \$4)) with linespoints title '$(basename "$file" .dat | sed -e 's/_/ /g') observed rate' axis x1y1, "
|
|
echo -n "'${file}' using 1:(\$3/\$2) with linespoints title '$(basename "$file" .dat | sed -e 's/_/ /g') attempts' axis x1y2, "
|
|
done
|
|
echo
|
|
) | tee /dev/stderr | gnuplot "${args[@]}" -
|