mirror of
https://github.com/kubernetes-sigs/node-feature-discovery.git
synced 2025-04-07 01:24:33 +00:00
commit
48354d0cba
7 changed files with 74 additions and 70 deletions
|
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
|
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -32,11 +38,11 @@ do
|
|||
exit 0
|
||||
fi
|
||||
;;
|
||||
h)
|
||||
h)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
'?')
|
||||
'?')
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -32,11 +37,11 @@ do
|
|||
exit 0
|
||||
fi
|
||||
;;
|
||||
h)
|
||||
h)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
'?')
|
||||
'?')
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -32,11 +38,11 @@ do
|
|||
exit 0
|
||||
fi
|
||||
;;
|
||||
h)
|
||||
h)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
'?')
|
||||
'?')
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -32,11 +38,11 @@ do
|
|||
exit 0
|
||||
fi
|
||||
;;
|
||||
h)
|
||||
h)
|
||||
show_help
|
||||
exit 0
|
||||
;;
|
||||
'?')
|
||||
'?')
|
||||
show_help
|
||||
exit 1
|
||||
;;
|
||||
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue