summaryrefslogtreecommitdiffstats
path: root/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild
diff options
context:
space:
mode:
authorMark D. Gray <mark.d.gray@intel.com>2016-01-07 15:23:03 +0000
committerStefan Berg <stefan.k.berg@ericsson.com>2016-01-29 08:47:37 +0000
commit6c6f90b3ad763c229fe75ae2a9b3f673f84382da (patch)
treeec45a70e35476d441f30cabd9f8d1665c2ccadd9 /build/f_isoroot/f_ovsnfv-dpdk-pluginbuild
parent0404985fca063a2a1f68ead9aad8a220f2cf5bcc (diff)
f_ovsnfv-dpdk-pluginbuild: Update repo location
The code for fuel-plugin-ovsnfv has been moved to the ovsnfv OPNFV project repository. This patch updates the OPNFV fuel plugin builder to use this location. Change-Id: Ida1640ea6005aa1f4b31be145913556d6b05aa6e Signed-off-by: Mark D. Gray <mark.d.gray@intel.com> (cherry picked from commit 42d1a8174af0f2081a9de76c798ee2b081cc0686)
Diffstat (limited to 'build/f_isoroot/f_ovsnfv-dpdk-pluginbuild')
-rw-r--r--build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/Makefile9
-rw-r--r--build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/config.mk5
2 files changed, 8 insertions, 6 deletions
diff --git a/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/Makefile b/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/Makefile
index 6b76fbe50..70fd22409 100644
--- a/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/Makefile
+++ b/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/Makefile
@@ -37,15 +37,16 @@ release:.ovsnfvbuild
@rm -rf fuel-plugin-ovsnfv
sudo apt-get -y install build-essential ruby-dev rubygems-integration python-pip git rpm createrepo dpkg-dev
sudo pip install fuel-plugin-builder
- git clone $(OVSNFV_DPDK_REPO)
- cd fuel-plugin-ovsnfv; \
+ git clone $(OVSNFV_DPDK_REPO) ovsnfv
+ cd ovsnfv; \
git checkout $(OVSNFV_DPDK_BRANCH); \
if [ ! -z $(OVSNFV_DPDK_CHANGE) ]; then \
git fetch $(OVSNFV_DPDK_REPO) $(OVSNFV_DPDK_CHANGE); \
git checkout FETCH_HEAD; \
fi
- INCLUDE_DEPENDENCIES=true fpb --debug --build fuel-plugin-ovsnfv/
- @mv fuel-plugin-ovsnfv/fuel-plugin-ovsnfv*.rpm .
+ cd ovsnfv; \
+ INCLUDE_DEPENDENCIES=true fpb --debug --build $(OVSNFV_DPDK_DIR)
+ @mv ovsnfv/$(OVSNFV_DPDK_DIR)/fuel-plugin-ovsnfv*.rpm .
$(REPOINFO) -r . > gitinfo_ovsnfv-dpdk-plugin.txt
@rm -rf fuel-plugin-ovsnfv
@touch .ovsnfvbuild
diff --git a/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/config.mk b/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/config.mk
index cfaa4f723..1893fce4a 100644
--- a/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/config.mk
+++ b/build/f_isoroot/f_ovsnfv-dpdk-pluginbuild/config.mk
@@ -7,6 +7,7 @@
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
-OVSNFV_DPDK_BRANCH=d13417a93c4df1d4db8f86f23ae4d42a056b5de8
-OVSNFV_DPDK_REPO=https://github.com/mrmarkgray/fuel-plugin-ovsnfv
+OVSNFV_DPDK_BRANCH=stable/brahmaputra
+OVSNFV_DPDK_REPO=https://gerrit.opnfv.org/gerrit/p/ovsnfv.git
+OVSNFV_DPDK_DIR=fuel-plugin-ovsnfv
OVSNFV_DPDK_CHANGE=
ce */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0


====================
Performance Profiler
====================

https://goo.gl/98Osig

This blueprint proposes to create a performance profiler for doctor scenarios.

Problem Description
===================

In the verification job for notification time, we have encountered some
performance issues, such as

1. In environment deployed by APEX, it meets the criteria while in the one by
Fuel, the performance is much more poor.
2. Signification performance degradation was spotted when we increase the total
number of VMs

It takes time to dig the log and analyse the reason. People have to collect
timestamp at each checkpoints manually to find out the bottleneck. A performance
profiler will make this process automatic.

Proposed Change
===============

Current Doctor scenario covers the inspector and notifier in the whole fault
management cycle::

  start                                          end
    +       +         +        +       +          +
    |       |         |        |       |          |
    |monitor|inspector|notifier|manager|controller|
    +------>+         |        |       |          |
  occurred  +-------->+        |       |          |
    |     detected    +------->+       |          |
    |       |     identified   +-------+          |
    |       |               notified   +--------->+
    |       |                  |    processed  resolved
    |       |                  |                  |
    |       +<-----doctor----->+                  |
    |                                             |
    |                                             |
    +<---------------fault management------------>+

The notification time can be split into several parts and visualized as a
timeline::

  start                                         end
    0----5---10---15---20---25---30---35---40---45--> (x 10ms)
    +    +   +   +   +    +      +   +   +   +   +
  0-hostdown |   |   |    |      |   |   |   |   |
    +--->+   |   |   |    |      |   |   |   |   |
    |  1-raw failure |    |      |   |   |   |   |
    |    +-->+   |   |    |      |   |   |   |   |
    |    | 2-found affected      |   |   |   |   |
    |    |   +-->+   |    |      |   |   |   |   |
    |    |     3-marked host down|   |   |   |   |
    |    |       +-->+    |      |   |   |   |   |
    |    |         4-set VM error|   |   |   |   |
    |    |           +--->+      |   |   |   |   |
    |    |           |  5-notified VM error  |   |
    |    |           |    +----->|   |   |   |   |
    |    |           |    |    6-transformed event
    |    |           |    |      +-->+   |   |   |
    |    |           |    |      | 7-evaluated event
    |    |           |    |      |   +-->+   |   |
    |    |           |    |      |     8-fired alarm
    |    |           |    |      |       +-->+   |
    |    |           |    |      |         9-received alarm
    |    |           |    |      |           +-->+
  sample | sample    |    |      |           |10-handled alarm
  monitor| inspector |nova| c/m  |    aodh   |
    |                                        |
    +<-----------------doctor--------------->+

Note: c/m = ceilometer

And a table of components sorted by time cost from most to least

+----------+---------+----------+
|Component |Time Cost|Percentage|
+==========+=========+==========+
|inspector |160ms    | 40%      |
+----------+---------+----------+
|aodh      |110ms    | 30%      |
+----------+---------+----------+
|monitor   |50ms     | 14%      |
+----------+---------+----------+
|...       |         |          |
+----------+---------+----------+
|...       |         |          |
+----------+---------+----------+

Note: data in the table is for demonstration only, not actual measurement

Timestamps can be collected from various sources

1. log files
2. trace point in code

The performance profiler will be integrated into the verification job to provide
detail result of the test. It can also be deployed independently to diagnose
performance issue in specified environment.

Working Items
=============

1. PoC with limited checkpoints
2. Integration with verification job
3. Collect timestamp at all checkpoints
4. Display the profiling result in console
5. Report the profiling result to test database
6. Independent package which can be installed to specified environment