Skip to content

Commit

Permalink
demo: make demo runnable again
Browse files Browse the repository at this point in the history
Fix workload template specs:
- update node affinity in "demo-pod-with-discovery.cloverleaf"
- fix broken "demo-pod-without-discovery"

Fix runner scripts to be runnable from anywhere gqYour current working
dir shouldn't matter. Also make the scripts exit on any error. Also
remove trailing whitespace.

Minor fixes in README.
  • Loading branch information
marquiz committed Sep 10, 2020
1 parent 8686994 commit 02d68ba
Show file tree
Hide file tree
Showing 7 changed files with 74 additions and 70 deletions.
6 changes: 3 additions & 3 deletions demo/README.md
Expand Up @@ -30,7 +30,7 @@ While our example illustrates the benefits of using node feature discovery with

Scripts to reproduce our demo results can be found in [helper-scripts](helper-scripts/).
### Prerequisites
1. `Kubectl` should be configured properly to work with your Kubernetes cluster.
1. `kubectl` should be configured properly to work with your Kubernetes cluster.
2. Node feature discovery should have been already deployed on your Kubernetes cluster.

### Instructions
Expand All @@ -41,8 +41,8 @@ Follow these easy steps to reproduce the demo.
3. `./run-with-discovery.sh -a cloverleaf`
4. `./run-without-discovery.sh -a parsec`
5. `./run-without-discovery.sh -a cloverleaf`
6. `/aggregate-logs-and-plot.sh -a parsec`
7. `/aggregate-logs-and-plot.sh -a cloverleaf`
6. `./aggregate-logs-and-plot.sh -a parsec`
7. `./aggregate-logs-and-plot.sh -a cloverleaf`

Following the above steps will produce the performance and normalized performance logs and their corresponding plots for each application.

Expand Down
22 changes: 14 additions & 8 deletions demo/helper-scripts/aggregate-logs-and-plot.sh
@@ -1,7 +1,13 @@
#!/usr/bin/env bash
show_help() {

set -eo pipefail

this=`basename $0`
this_dir=`dirname $0`

show_help() {
cat << EOF
Usage: ${0##*/} [-a APPLICATION_NAME]
Usage: $this [-a APPLICATION_NAME]
Aggregate the results from the specified application and plot the result.
-a APPLICATION_NAME run the pods with APPLICATION_NAME application.
Expand All @@ -21,7 +27,7 @@ OPTIND=1
options="ha:"
while getopts $options option
do
case $option in
case $option in
a)
if [ "$OPTARG" == "parsec" ] || [ "$OPTARG" == "cloverleaf" ]
then
Expand All @@ -32,11 +38,11 @@ do
exit 0
fi
;;
h)
h)
show_help
exit 0
;;
'?')
'?')
show_help
exit 1
;;
Expand All @@ -59,7 +65,7 @@ rm -f temp.log labels-with-discovery-$app.log

minimum=$(awk 'min=="" || $2 < min {min=$2} END {print min}' performance.log)
awk -v min=$minimum '{print $1,((($2/min)*100))-100}' performance.log > performance-norm.log
./box-plot.R performance.log performance-comparison-$app.pdf
./box-plot-norm.R performance-norm.log performance-comparison-$app-norm.pdf
"$this_dir/box-plot.R" performance.log performance-comparison-$app.pdf
"$this_dir/box-plot-norm.R" performance-norm.log performance-comparison-$app-norm.pdf

./clean-up.sh -a $app
"$this_dir/clean-up.sh" -a $app
21 changes: 13 additions & 8 deletions demo/helper-scripts/clean-up.sh
@@ -1,8 +1,13 @@
#!/usr/bin/env bash
show_help() {

set -eo pipefail

this=`basename $0`

show_help() {
cat << EOF
Usage: ${0##*/} [-a APPLICATION_NAME]
Clean-up pods with and without discovery enabled for the specified application.
Usage: $this [-a APPLICATION_NAME]
Clean-up pods with and without discovery enabled for the specified application.
-a APPLICATION_NAME clean-up the pods with APPLICATION_NAME application.
APPLICATION_NAME can be one of parsec or cloverleaf.
Expand All @@ -21,7 +26,7 @@ OPTIND=1
options="ha:"
while getopts $options option
do
case $option in
case $option in
a)
if [ "$OPTARG" == "parsec" ] || [ "$OPTARG" == "cloverleaf" ]
then
Expand All @@ -32,11 +37,11 @@ do
exit 0
fi
;;
h)
h)
show_help
exit 0
;;
'?')
'?')
show_help
exit 1
;;
Expand All @@ -45,11 +50,11 @@ done

echo "Using application name = $app."
for i in {1..10}
do
do
kubectl delete po demo-$app-$i-wo-discovery
done

for i in {1..10}
do
do
kubectl delete po demo-$app-$i-with-discovery
done
@@ -1,30 +1,14 @@
apiVersion: v1
kind: Pod
metadata:
name: demo-cloverleaf-NUM
annotations:
scheduler.alpha.kubernetes.io/affinity: |
{
"nodeAffinity": {
"requiredDuringSchedulingIgnoredDuringExecution": {
"nodeSelectorTerms": [
{
"matchExpressions": [
{
"key": "feature.node.kubernetes.io/cpu-pstate.turbo",
"operator": "DoesNotExist"
}
]
}
]
}
}
}
name: demo-cloverleaf-NUM
spec:
containers:
- name: demo-container-cloverleaf-NUM
image: quay.io/kubernetes_incubator/node-feature-discovery-APP
ports:
- containerPort: 3551
hostPort: 10001
restartPolicy: Never
containers:
- name: demo-container-cloverleaf-NUM
image: quay.io/kubernetes_incubator/node-feature-discovery-APP
ports:
- containerPort: 3551
hostPort: 10001
nodeSelector:
feature.node.kubernetes.io/cpu-pstate.turbo: 'false'
restartPolicy: Never
4 changes: 2 additions & 2 deletions demo/helper-scripts/demo-pod-without-discovery.yaml.template
Expand Up @@ -5,8 +5,8 @@ metadata:
spec:
containers:
- image: quay.io/kubernetes_incubator/node-feature-discovery-IMG
name: demo-container-APP-NUM
name: demo-container-APP-NUM
ports:
- containerPort: 3351
hostPort: 10001
hostPort: 10001
restartPolicy: Never
28 changes: 16 additions & 12 deletions demo/helper-scripts/run-with-discovery.sh
@@ -1,7 +1,13 @@
#!/usr/bin/env bash
show_help() {

set -eo pipefail

this=`basename $0`
this_dir=`dirname $0`

show_help() {
cat << EOF
Usage: ${0##*/} [-a APPLICATION_NAME]
Usage: $this [-a APPLICATION_NAME]
Runs pods ten times with discovery enabled.
-a APPLICATION_NAME run the pods with APPLICATION_NAME application.
Expand All @@ -21,7 +27,7 @@ OPTIND=1
options="ha:"
while getopts $options option
do
case $option in
case $option in
a)
if [ "$OPTARG" == "parsec" ] || [ "$OPTARG" == "cloverleaf" ]
then
Expand All @@ -32,11 +38,11 @@ do
exit 0
fi
;;
h)
h)
show_help
exit 0
;;
'?')
'?')
show_help
exit 1
;;
Expand All @@ -49,14 +55,12 @@ for i in {1..10}
do
if [ "$app" == "parsec" ]
then
sed -e "s/NUM/$i-with-discovery/" -e "s/APP/demo-1/" demo-pod-with-discovery.yaml.parsec.template > demo-pod-with-discovery.yaml
kubectl create -f demo-pod-with-discovery.yaml
sed -e "s/NUM/$i-with-discovery/" -e "s/APP/demo-1/" \
"$this_dir/demo-pod-with-discovery.yaml.parsec.template" | kubectl create -f -
else
sed -e "s/NUM/$i-with-discovery/" -e "s/APP/demo-2/" demo-pod-with-discovery.yaml.cloverleaf.template > demo-pod-with-discovery.yaml
kubectl create -f demo-pod-with-discovery.yaml
sed -e "s/NUM/$i-with-discovery/" -e "s/APP/demo-2/" \
"$this_dir/demo-pod-with-discovery.yaml.cloverleaf.template" | kubectl create -f -
fi
echo "WithDiscovery" >> labels-with-discovery-$app.log
done
done
echo "Ten pods with node feature discovery enabled started."

rm -f demo-pod-with-discovery.yaml
27 changes: 16 additions & 11 deletions demo/helper-scripts/run-without-discovery.sh
@@ -1,7 +1,13 @@
#!/usr/bin/env bash
show_help() {

set -eo pipefail

this=`basename $0`
this_dir=`dirname $0`

show_help() {
cat << EOF
Usage: ${0##*/} [-a APPLICATION_NAME]
Usage: $this [-a APPLICATION_NAME]
Runs ten pods without discovery enabled with the specified application.
-a APPLICATION_NAME run the pods with APPLICATION_NAME application.
Expand All @@ -21,7 +27,7 @@ OPTIND=1
options="ha:"
while getopts $options option
do
case $option in
case $option in
a)
if [ "$OPTARG" == "parsec" ] || [ "$OPTARG" == "cloverleaf" ]
then
Expand All @@ -32,11 +38,11 @@ do
exit 0
fi
;;
h)
h)
show_help
exit 0
;;
'?')
'?')
show_help
exit 1
;;
Expand All @@ -49,13 +55,12 @@ for i in {1..10}
do
if [ "$app" == "parsec" ]
then
sed -e "s/NUM/$i-wo-discovery/" -e "s/IMG/demo-1/" -e "s/APP/$app/" demo-pod-without-discovery.yaml.template > demo-pod-without-discovery.yaml
sed -e "s/NUM/$i-wo-discovery/" -e "s/IMG/demo-1/" -e "s/APP/$app/" \
"$this_dir/demo-pod-without-discovery.yaml.template" | kubectl create -f -
else
sed -e "s/NUM/$i-wo-discovery/" -e "s/IMG/demo-2/" -e "s/APP/$app/" demo-pod-without-discovery.yaml.template > demo-pod-without-discovery.yaml
sed -e "s/NUM/$i-wo-discovery/" -e "s/IMG/demo-2/" -e "s/APP/$app/" \
"$this_dir/demo-pod-without-discovery.yaml.template" | kubectl create -f -
fi
kubectl create -f demo-pod-without-discovery.yaml
echo "WithoutDiscovery" >> labels-without-discovery-$app.log
done
done
echo "Ten pods without node feature discovery started."

rm -f demo-pod-without-discovery.yaml

0 comments on commit 02d68ba

Please sign in to comment.