diff options
-rw-r--r-- | ci/build_rpm.sh | 20 | ||||
-rw-r--r-- | ci/install_dependencies.sh | 36 | ||||
-rw-r--r-- | ci/utility/check_git_repo.sh | 50 | ||||
-rw-r--r-- | ci/utility/collectd_build_rpm.sh | 39 | ||||
-rw-r--r-- | ci/utility/collectd_get_sources.sh | 29 | ||||
-rw-r--r-- | ci/utility/intel_cmt_cat_build_install_rpm.sh | 50 | ||||
-rw-r--r-- | ci/utility/package-list.sh | 28 | ||||
-rw-r--r-- | docs/release/userguide/feature.userguide.rst | 37 |
8 files changed, 289 insertions, 0 deletions
diff --git a/ci/build_rpm.sh b/ci/build_rpm.sh new file mode 100644 index 00000000..3ad3b57b --- /dev/null +++ b/ci/build_rpm.sh @@ -0,0 +1,20 @@ +#!/bin/bash +# Copyright 2017 Intel Corporation +# +# 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. + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +sh $DIR/utility/collectd_get_sources.sh +sh $DIR/utility/intel_cmt_cat_build_install_rpm.sh +sh $DIR/utility/collectd_build_rpm.sh diff --git a/ci/install_dependencies.sh b/ci/install_dependencies.sh new file mode 100644 index 00000000..3fe1e725 --- /dev/null +++ b/ci/install_dependencies.sh @@ -0,0 +1,36 @@ +#!/bin/bash +# Copyright 2017 Intel Corporation +# +# 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. + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $DIR/utility/package-list.sh + +# For collectd +sudo yum install -y yum-utils +sudo yum install -y epel-release +sudo yum-builddep -y collectd + +sudo yum -y install autoconf automake flex bison libtool pkg-config + +sudo yum -y install git + +sudo yum -y install rpm-build \ + libcap-devel xfsprogs-devel iptables-devel \ + libmemcached-devel gtk2-devel libvirt-devel + +# For intel-cmt-cat +sudo yum -y install wget + +# For RPM build +mkdir -p $RPM_WORKDIR/{BUILD,RPMS,SOURCES,SPECS,SRPMS} diff --git a/ci/utility/check_git_repo.sh b/ci/utility/check_git_repo.sh new file mode 100644 index 00000000..f7ad0a8f --- /dev/null +++ b/ci/utility/check_git_repo.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# Copyright 2017 Intel Corporation +# +# 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. + +TARGET_DIR=$1 +REPO=$2 + +if [[ ! $1 ]] +then + echo "Test if target dir contains the given git repository" + echo "Usage: $0 <TARGET_DIR> <REPO_ADDRESS>" + exit 254 +fi + +cd $TARGET_DIR +if [[ $? != 0 ]] +then + echo "Directory is not existing" + exit 1 +fi + +git status &>/dev/null +if [[ $? != 0 ]] +then + echo "Not a git repo" + exit 2 +else + REMOTE=`git remote -vv | sed -e "2d" -r -e 's|^\S+\s(\S+)\s\S+$|\1|'` + if [[ "$REMOTE" == "$REPO" ]] + then + echo "YEP" + exit 0 + else + echo "Wrong repo" + exit 3 + fi +fi + +exit 255 diff --git a/ci/utility/collectd_build_rpm.sh b/ci/utility/collectd_build_rpm.sh new file mode 100644 index 00000000..d46a73e6 --- /dev/null +++ b/ci/utility/collectd_build_rpm.sh @@ -0,0 +1,39 @@ +#!/bin/bash +# Copyright 2017 Intel Corporation +# +# 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. + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $DIR/package-list.sh + +VERSION="VERSION_NOT_SET" + +cd $COLLECTD_DIR +VERSION=$( $COLLECTD_DIR/version-gen.sh | sed "s/\W$//g" ) +$COLLECTD_DIR/build.sh +$COLLECTD_DIR/configure +make dist + +cp $COLLECTD_DIR/collectd-$VERSION.tar.bz2 $RPM_WORKDIR/SOURCES/ + +sed --regexp-extended \ + --in-place=".bak" \ + --expression="s/Version:\s+\S+$/Version: $VERSION/g" \ + $COLLECTD_DIR/contrib/redhat/collectd.spec + +sed --regexp-extended \ + --in-place \ + --expression="s/without_intel_rdt:[0-9]/without_intel_rdt:1/g" \ + $COLLECTD_DIR/contrib/redhat/collectd.spec + +rpmbuild --define "_topdir $RPM_WORKDIR" -bb $COLLECTD_DIR/contrib/redhat/collectd.spec diff --git a/ci/utility/collectd_get_sources.sh b/ci/utility/collectd_get_sources.sh new file mode 100644 index 00000000..69108e4f --- /dev/null +++ b/ci/utility/collectd_get_sources.sh @@ -0,0 +1,29 @@ +#!/bin/bash +# Copyright 2017 Intel Corporation +# +# 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. + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $DIR/package-list.sh + +bash $DIR/check_git_repo.sh $COLLECTD_DIR $COLLECTD_REPO +if [[ $? != 0 ]] +then + rm -rf $COLLECTD_DIR + git clone --branch $COLLECTD_BRANCH $COLLECTD_REPO $COLLECTD_DIR +else + cd $COLLECTD_DIR + git reset HEAD --hard + git pull + git checkout -f $COLLECTD_BRANCH +fi diff --git a/ci/utility/intel_cmt_cat_build_install_rpm.sh b/ci/utility/intel_cmt_cat_build_install_rpm.sh new file mode 100644 index 00000000..d0e8954e --- /dev/null +++ b/ci/utility/intel_cmt_cat_build_install_rpm.sh @@ -0,0 +1,50 @@ +#!/bin/bash +# Copyright 2017 Intel Corporation +# +# 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. + +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $DIR/package-list.sh + +VERSION="v0.1.5-1" + +bash $DIR/check_git_repo.sh $CMTCAT_DIR $CMTCAT_REPO +if [[ $? != 0 ]] +then + rm -rf $CMTCAT_DIR + git clone --branch $CMTCAT_BRANCH $CMTCAT_REPO $CMTCAT_DIR +else + cd $CMTCAT_DIR + git reset HEAD --hard + git pull + git checkout -f $CMTCAT_BRANCH +fi + +cd $CMTCAT_DIR +make +sudo make install + +wget https://github.com/01org/intel-cmt-cat/archive/${VERSION}.tar.gz --directory-prefix=$CMTCAT_DIR + +mv $CMTCAT_DIR/${VERSION}.tar.gz $RPM_WORKDIR/SOURCES/ + +rpmbuild --define "_topdir $RPM_WORKDIR" -bb $CMTCAT_DIR/rpm/intel-cmt-cat.spec + +rpm -q intel-cmt-cat +if [ $? -eq 0 ] +then + echo "*** intel-cmt-cat is already installed" +else + RPM_NAME=`ls -1 $RPM_DIR | grep -E "cmt-cat-[0-9]"` + rpm -ivf $RPM_DIR/$RPM_NAME +fi diff --git a/ci/utility/package-list.sh b/ci/utility/package-list.sh new file mode 100644 index 00000000..9f878431 --- /dev/null +++ b/ci/utility/package-list.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# Copyright 2017 Intel Corporation +# +# 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. + +WORKSPACE=${WORKSPACE:-`cd && pwd`} + +COLLECTD_DIR=$WORKSPACE/collectd +CMTCAT_DIR=$WORKSPACE/intel-cmt-cat +RPM_WORKDIR=$WORKSPACE/rpmbuild + +CMTCAT_REPO=https://github.com/01org/intel-cmt-cat.git +CMTCAT_BRANCH=master +COLLECTD_REPO=https://github.com/collectd/collectd.git +COLLECTD_BRANCH=master + +# Here rpms built could be taken from +RPM_DIR=$RPM_WORKDIR/RPMS/x86_64/ diff --git a/docs/release/userguide/feature.userguide.rst b/docs/release/userguide/feature.userguide.rst index 2ecc4376..c1463e73 100644 --- a/docs/release/userguide/feature.userguide.rst +++ b/docs/release/userguide/feature.userguide.rst @@ -230,6 +230,17 @@ include: </Event> </Plugin> +.. note:: Currently, the DPDK library doesn’t support API to de-initialize + the DPDK resources allocated on the initialization. It means, the collectd + plugin will not be able to release the allocated DPDK resources + (locks/memory/pci bindings etc.) correctly on collectd shutdown or reinitialize + the DPDK library if primary DPDK process is restarted. The only way to release + those resources is to terminate the process itself. For this reason, the plugin + forks off a separate collectd process. This child process becomes a secondary + DPDK process which can be run on specific CPU cores configured by user through + collectd configuration file (“Coremask” EAL configuration option, the + hexadecimal bitmask of the cores to run on). + For more information on the plugin parameters, please see: https://github.com/collectd/collectd/blob/master/src/collectd.conf.pod @@ -262,6 +273,24 @@ To fully enable ASLR: For more information on multi-process support, please see: http://dpdk.org/doc/guides/prog_guide/multi_proc_support.html +**DPDK stats plugin limitations:** + +1. The DPDK primary process application should use the same version of DPDK + that collectd DPDK plugin is using; + +2. L2 statistics are only supported; + +3. The plugin has been tested on Intel NIC’s only. + +**DPDK stats known issues:** + +* DPDK port visibility + + When network port controlled by Linux is bound to DPDK driver, the port + will not be available in the OS. It affects the SNMP write plugin as those + ports will not be present in standard IF-MIB. Thus addition work is + required to be done to support DPDK ports and statistics. + Hugepages Plugin ^^^^^^^^^^^^^^^^^ Repo: https://github.com/collectd/collectd @@ -843,6 +872,14 @@ memAvailReal OID to value represented as free memory type of memory plugin: </Data> </Plugin> +**Limitations** + +* Object instance with Counter64 type is not supported in SNMPv1. When GetNext + request is received, Counter64 type objects will be skipped. When Get + request is received for Counter64 type object, the error will be returned. +* Interfaces that are not visible to Linux like DPDK interfaces cannot be + retreived using standard IF-MIB tables. + For more information on the plugin parameters, please see: https://github.com/maryamtahhan/collectd/blob/feat_snmp/src/collectd.conf.pod |