From 196ed0599148d6c8ed0e2ca82ad03e129e26428a Mon Sep 17 00:00:00 2001 From: Peter Mikus Date: Fri, 28 Jul 2017 13:06:56 +0200 Subject: [PATCH 1/1] CSIT-618 Add LaTeX support to release report - Add option to generate PDF from release report. - Conditional content - Static plot conversion Change-Id: I7c4f0b41898791d1cab446d0fc3b07220380e1b8 Signed-off-by: Peter Mikus --- .../dpdk_performance_results/index.rst | 5 +- .../honeycomb_functional_results/index.rst | 5 +- .../nshsfc_functional_results/index.rst | 5 +- .../vpp_functional_results/index.rst | 5 +- .../vpp_performance_results/index.rst | 5 +- .../packet_latency_graphs/ip4.rst | 44 +- .../packet_latency_graphs/l2.rst | 44 +- .../packet_throughput_graphs/ip4.rst | 88 +- .../packet_throughput_graphs/l2.rst | 88 +- .../dpdk_performance_tests/test_environment.rst | 1065 ++++++++++---------- docs/report/introduction/csit_design.png | Bin 106902 -> 0 bytes docs/report/introduction/csit_design.rst | 10 +- docs/report/introduction/csit_design_picture.svg | 649 ++++++++++++ .../packet_latency_graphs/ip4.rst | 44 +- .../packet_latency_graphs/ip4_tunnels.rst | 44 +- .../packet_latency_graphs/ip6.rst | 44 +- .../packet_latency_graphs/ip6_tunnels.rst | 45 +- .../packet_latency_graphs/ipsec.rst | 43 +- .../packet_latency_graphs/l2.rst | 61 +- .../packet_latency_graphs/vm_vhost.rst | 62 +- .../packet_throughput_graphs/ip4.rst | 87 +- .../packet_throughput_graphs/ip4_tunnels.rst | 87 +- .../packet_throughput_graphs/ip6.rst | 88 +- .../packet_throughput_graphs/ip6_tunnels.rst | 88 +- .../packet_throughput_graphs/ipsec.rst | 88 +- .../packet_throughput_graphs/l2.rst | 112 +- .../packet_throughput_graphs/vm_vhost.rst | 124 ++- .../vpp_performance_tests/test_environment.rst | 1065 ++++++++++---------- resources/tools/report_gen/conf.py | 87 +- resources/tools/report_gen/fdio.svg | 25 + resources/tools/report_gen/requirements.txt | 2 +- resources/tools/report_gen/run_report.cfg | 3 +- resources/tools/report_gen/run_report.sh | 108 +- 33 files changed, 3102 insertions(+), 1218 deletions(-) delete mode 100644 docs/report/introduction/csit_design.png create mode 100644 docs/report/introduction/csit_design_picture.svg create mode 100644 resources/tools/report_gen/fdio.svg diff --git a/docs/report/detailed_test_results/dpdk_performance_results/index.rst b/docs/report/detailed_test_results/dpdk_performance_results/index.rst index fefffb36b4..e6466d2e60 100644 --- a/docs/report/detailed_test_results/dpdk_performance_results/index.rst +++ b/docs/report/detailed_test_results/dpdk_performance_results/index.rst @@ -3,9 +3,8 @@ DPDK Performance Results .. note:: - Data sources for reported test results: i) FD.io test executor jobs - `FD.io test executor dpdk performance jobs`_ - , ii) archived FD.io jobs test result `output files + Data sources for reported test results: i) `FD.io test executor dpdk + performance jobs`_, ii) archived FD.io jobs test result `output files <../../_static/archive/>`_. .. toctree:: diff --git a/docs/report/detailed_test_results/honeycomb_functional_results/index.rst b/docs/report/detailed_test_results/honeycomb_functional_results/index.rst index 7357af6065..b89c59a6b1 100644 --- a/docs/report/detailed_test_results/honeycomb_functional_results/index.rst +++ b/docs/report/detailed_test_results/honeycomb_functional_results/index.rst @@ -3,9 +3,8 @@ Honeycomb Functional Results .. note:: - Data sources for reported test results: i) FD.io test executor jobs - `FD.io test executor Honeycomb functional jobs`_ - , ii) archived FD.io jobs test result `output files + Data sources for reported test results: i) `FD.io test executor Honeycomb + functional jobs`_, ii) archived FD.io jobs test result `output files <../../_static/archive/>`_. .. toctree:: diff --git a/docs/report/detailed_test_results/nshsfc_functional_results/index.rst b/docs/report/detailed_test_results/nshsfc_functional_results/index.rst index 4907982911..0800b4a1e9 100644 --- a/docs/report/detailed_test_results/nshsfc_functional_results/index.rst +++ b/docs/report/detailed_test_results/nshsfc_functional_results/index.rst @@ -3,9 +3,8 @@ NSH SFC Functional Results .. note:: - Data sources for reported test results: i) FD.io test executor jobs - `FD.io test executor NSH_SFC functional jobs`_ - , ii) archived FD.io jobs test result `output files + Data sources for reported test results: i) `FD.io test executor NSH_SFC + functional jobs`_, ii) archived FD.io jobs test result `output files <../../_static/archive/>`_. .. toctree:: diff --git a/docs/report/detailed_test_results/vpp_functional_results/index.rst b/docs/report/detailed_test_results/vpp_functional_results/index.rst index eeafc10394..4d7060bb54 100644 --- a/docs/report/detailed_test_results/vpp_functional_results/index.rst +++ b/docs/report/detailed_test_results/vpp_functional_results/index.rst @@ -3,9 +3,8 @@ VPP Functional Results .. note:: - Data sources for reported test results: i) FD.io test executor jobs - `FD.io test executor vpp functional jobs`_ - , ii) archived FD.io jobs test result `output files + Data sources for reported test results: i) `FD.io test executor vpp + functional jobs`_, ii) archived FD.io jobs test result `output files <../../_static/archive/>`_. .. toctree:: diff --git a/docs/report/detailed_test_results/vpp_performance_results/index.rst b/docs/report/detailed_test_results/vpp_performance_results/index.rst index 112095aaff..ca3eec6442 100644 --- a/docs/report/detailed_test_results/vpp_performance_results/index.rst +++ b/docs/report/detailed_test_results/vpp_performance_results/index.rst @@ -3,9 +3,8 @@ VPP Performance Results .. note:: - Data sources for reported test results: i) FD.io test executor jobs - `FD.io test executor vpp performance jobs`_ - , ii) archived FD.io jobs test result `output files + Data sources for reported test results: i) `FD.io test executor vpp + performance jobs`_, ii) archived FD.io jobs test result `output files <../../_static/archive/>`_. .. toctree:: diff --git a/docs/report/dpdk_performance_tests/packet_latency_graphs/ip4.rst b/docs/report/dpdk_performance_tests/packet_latency_graphs/ip4.rst index 70a2f7ee1b..4449785436 100644 --- a/docs/report/dpdk_performance_tests/packet_latency_graphs/ip4.rst +++ b/docs/report/dpdk_performance_tests/packet_latency_graphs/ip4.rst @@ -13,13 +13,31 @@ physical core (1c)** - is presented in the figure below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/dpdk/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-ipv4-ndrdisc-lat50} + \label{fig:64B-1t1c-ipv4-ndrdisc-lat50-dpdk} + \end{figure} + *Figure 1. L3FWD 1thread 1core - packet latency for Phy-to-Phy IPv4 Routed-Forwarding.* CSIT test cases used to generate results presented above can be found in CSIT git repository by filtering with specified regex as follows: -.. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -E '64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -E '64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/dpdk/perf + $ grep -E '64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc' * Testpmd packet latency - running in configuration of **two worker threads (2t) on two physical cores (2c)** - is presented in the figure below. @@ -28,10 +46,28 @@ on two physical cores (2c)** - is presented in the figure below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/dpdk/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-ipv4-ndrdisc-lat50} + \label{fig:64B-2t2c-ipv4-ndrdisc-lat50-dpdk} + \end{figure} + *Figure 2. L3FWD 2thread 2core - packet latency for Phy-to-Phy IPv4 Routed-Forwarding.* CSIT test cases used to generate results presented above can be found in CSIT git repository by filtering with specified regex as follows: -.. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -E '64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -E '64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/dpdk/perf + $ grep -E '64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc' * diff --git a/docs/report/dpdk_performance_tests/packet_latency_graphs/l2.rst b/docs/report/dpdk_performance_tests/packet_latency_graphs/l2.rst index b333f7985e..f981df9c89 100644 --- a/docs/report/dpdk_performance_tests/packet_latency_graphs/l2.rst +++ b/docs/report/dpdk_performance_tests/packet_latency_graphs/l2.rst @@ -14,13 +14,31 @@ physical core (1c)** - is presented in the figure below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/dpdk/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-l2-ndrdisc-lat50} + \label{fig:64B-1t1c-l2-ndrdisc-lat50-dpdk} + \end{figure} + *Figure 1. Testpmd 1thread 1core - packet latency for Phy-to-Phy L2 Ethernet Looping.* CSIT test cases used to generate results presented above can be found in CSIT git repository by filtering with specified regex as follows: -.. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-1t1c-eth-l2xcbase-testpmd-ndrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-1t1c-eth-l2xcbase-testpmd-ndrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/dpdk/perf + $ grep -P '64B-1t1c-eth-l2xcbase-testpmd-ndrdisc' * Testpmd packet latency - running in configuration of **two worker threads (2t) on two physical cores (2c)** - is presented in the figure below. @@ -29,10 +47,28 @@ on two physical cores (2c)** - is presented in the figure below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/dpdk/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-l2-ndrdisc-lat50} + \label{fig:64B-2t2c-l2-ndrdisc-lat50-dpdk} + \end{figure} + *Figure 2. Testpmd 2thread 2core - packet latency for Phy-to-Phy L2 Ethernet Looping.* CSIT test cases used to generate results presented above can be found in CSIT git repository by filtering with specified regex as follows: -.. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-2t2c-eth-l2xcbase-testpmd-ndrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-2t2c-eth-l2xcbase-testpmd-ndrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/dpdk/perf + $ grep -P '64B-2t2c-eth-l2xcbase-testpmd-ndrdisc' * diff --git a/docs/report/dpdk_performance_tests/packet_throughput_graphs/ip4.rst b/docs/report/dpdk_performance_tests/packet_throughput_graphs/ip4.rst index 7a0bc04328..11a54cca85 100644 --- a/docs/report/dpdk_performance_tests/packet_throughput_graphs/ip4.rst +++ b/docs/report/dpdk_performance_tests/packet_throughput_graphs/ip4.rst @@ -17,14 +17,32 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/dpdk/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-ipv4-ndrdisc} + \label{fig:64B-1t1c-ipv4-ndrdisc-dpdk} + \end{figure} + *Figure 1. L3FWD 1thread 1core - NDR Throughput for Phy-to-Phy IPv4 Routed-Forwarding Looping.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/dpdk/perf + $ grep -P '64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc' * Testpmd NDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -33,14 +51,32 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/dpdk/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-ipv4-ndrdisc} + \label{fig:64B-2t2c-ipv4-ndrdisc-dpdk} + \end{figure} + *Figure 2. L3FWD 2threads 2cores - NDR Throughput for Phy-to-Phy IPv4 Routed-Forwarding Looping.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/dpdk/perf + $ grep -P '64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc' * PDR Throughput ~~~~~~~~~~~~~~ @@ -52,14 +88,32 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/dpdk/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-ipv4-pdrdisc} + \label{fig:64B-1t1c-ipv4-pdrdisc-dpdk} + \end{figure} + *Figure 3. L3FWD 1thread 1core - PDR Throughput for Phy-to-Phy IPv4 Routed-Forwarding Looping.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-1t1c-ethip4-ip4base-l3fwd-pdrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-1t1c-ethip4-ip4base-l3fwd-pdrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/dpdk/perf + $ grep -P '64B-1t1c-ethip4-ip4base-l3fwd-pdrdisc' * L3FWD PDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. PDR measured for 0.5% packet loss ratio. @@ -68,11 +122,29 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/dpdk/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-ipv4-pdrdisc} + \label{fig:64B-2t2c-ipv4-pdrdisc-dpdk} + \end{figure} + *Figure 4. L3FWD 2thread 2core - PDR Throughput for Phy-to-Phy IPv4 Routed-Forwarding Looping.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-2t2c-ethip4-ip4base-l3fwd-pdrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-2t2c-ethip4-ip4base-l3fwd-pdrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/dpdk/perf + $ grep -P '64B-2t2c-ethip4-ip4base-l3fwd-pdrdisc' * diff --git a/docs/report/dpdk_performance_tests/packet_throughput_graphs/l2.rst b/docs/report/dpdk_performance_tests/packet_throughput_graphs/l2.rst index eb3be14af1..b63a12f3ad 100644 --- a/docs/report/dpdk_performance_tests/packet_throughput_graphs/l2.rst +++ b/docs/report/dpdk_performance_tests/packet_throughput_graphs/l2.rst @@ -17,14 +17,32 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/dpdk/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-l2-ndrdisc} + \label{fig:64B-1t1c-l2-ndrdisc-dpdk} + \end{figure} + *Figure 1. Testpmd 1thread 1core - NDR Throughput for Phy-to-Phy L2 Ethernet Looping.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-1t1c-eth-l2xcbase-testpmd-ndrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-1t1c-eth-l2xcbase-testpmd-ndrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/dpdk/perf + $ grep -P '64B-1t1c-eth-l2xcbase-testpmd-ndrdisc' * Testpmd NDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -33,14 +51,32 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/dpdk/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-l2-ndrdisc} + \label{fig:64B-2t2c-l2-ndrdisc-dpdk} + \end{figure} + *Figure 2. Testpmd 2threads 2cores - NDR Throughput for Phy-to-Phy L2 Ethernet Looping.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-2t2c-eth-l2xcbase-testpmd-ndrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-2t2c-eth-l2xcbase-testpmd-ndrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/dpdk/perf + $ grep -P '64B-2t2c-eth-l2xcbase-testpmd-ndrdisc' * PDR Throughput ~~~~~~~~~~~~~~ @@ -52,14 +88,32 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/dpdk/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-l2-pdrdisc} + \label{fig:64B-1t1c-l2-pdrdisc-dpdk} + \end{figure} + *Figure 3. Testpmd 1thread 1core - PDR Throughput for Phy-to-Phy L2 Ethernet Looping.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-1t1c-eth-l2xcbase-testpmd-pdrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-1t1c-eth-l2xcbase-testpmd-pdrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/dpdk/perf + $ grep -P '64B-1t1c-eth-l2xcbase-testpmd-pdrdisc' * Testpmd PDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. PDR measured for 0.5% packet loss ratio. @@ -68,11 +122,29 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/dpdk/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-l2-pdrdisc} + \label{fig:64B-2t2c-l2-pdrdisc-dpdk} + \end{figure} + *Figure 4. Testpmd 2thread 2core - PDR Throughput for Phy-to-Phy L2 Ethernet Looping.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-2t2c-eth-l2xcbase-testpmd-pdrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/dpdk/perf && grep -P '64B-2t2c-eth-l2xcbase-testpmd-pdrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/dpdk/perf + $ grep -P '64B-2t2c-eth-l2xcbase-testpmd-pdrdisc' * diff --git a/docs/report/dpdk_performance_tests/test_environment.rst b/docs/report/dpdk_performance_tests/test_environment.rst index a8c0a485d2..b02ca67068 100644 --- a/docs/report/dpdk_performance_tests/test_environment.rst +++ b/docs/report/dpdk_performance_tests/test_environment.rst @@ -438,538 +438,539 @@ Below a subset of the running configuration: :: - $ dpkg -l - Desired=Unknown/Install/Remove/Purge/Hold - | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend - |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) - ||/ Name Version Architecture Description - +++-=================================================================-=====================================-=====================================-======================================================================================================================================== - ii accountsservice 0.6.40-2ubuntu11.1 amd64 query and manipulate user account information - ii acl 2.2.52-3 amd64 Access control list utilities - ii adduser 3.113+nmu3ubuntu4 all add and remove users and groups - ii apparmor 2.10.95-0ubuntu2.6 amd64 user-space parser utility for AppArmor - ii apt 1.2.12~ubuntu16.04.1 amd64 commandline package manager - ii apt-utils 1.2.12~ubuntu16.04.1 amd64 package management related utility programs - ii autoconf 2.69-9 all automatic configure script builder - ii automake 1:1.15-4ubuntu1 all Tool for generating GNU Standards-compliant Makefiles - ii autotools-dev 20150820.1 all Update infrastructure for config.{guess,sub} files - ii base-files 9.4ubuntu4.2 amd64 Debian base system miscellaneous files - ii base-passwd 3.5.39 amd64 Debian base system master password and group files - ii bash 4.3-14ubuntu1.1 amd64 GNU Bourne Again SHell - ii binutils 2.26.1-1ubuntu1~16.04.3 amd64 GNU assembler, linker and binary utilities - ii bridge-utils 1.5-9ubuntu1 amd64 Utilities for configuring the Linux Ethernet bridge - ii bsdutils 1:2.27.1-6ubuntu3.1 amd64 basic utilities from 4.4BSD-Lite - ii build-essential 12.1ubuntu2 amd64 Informational list of build-essential packages - ii busybox-initramfs 1:1.22.0-15ubuntu1 amd64 Standalone shell setup for initramfs - ii busybox-static 1:1.22.0-15ubuntu1 amd64 Standalone rescue shell with tons of builtin utilities - ii bzip2 1.0.6-8 amd64 high-quality block-sorting file compressor - utilities - ii ca-certificates 20160104ubuntu1 all Common CA certificates - ii ca-certificates-java 20160321 all Common CA certificates (JKS keystore) - ii cgroup-bin 0.41-7ubuntu1 all control and monitor control groups (transitional package) - ii cgroup-lite 1.11 all Light-weight package to set up cgroups at system boot - ii cgroup-tools 0.41-7ubuntu1 amd64 control and monitor control groups (tools) - ii cloud-image-utils 0.27-0ubuntu24 all cloud image management utilities - ii console-setup 1.108ubuntu15.2 all console font and keymap setup program - ii console-setup-linux 1.108ubuntu15.2 all Linux specific part of console-setup - ii coreutils 8.25-2ubuntu2 amd64 GNU core utilities - ii cpio 2.11+dfsg-5ubuntu1 amd64 GNU cpio -- a program to manage archives of files - ii cpp 4:5.3.1-1ubuntu1 amd64 GNU C preprocessor (cpp) - ii cpp-5 5.4.0-6ubuntu1~16.04.2 amd64 GNU C preprocessor - ii cpu-checker 0.7-0ubuntu7 amd64 tools to help evaluate certain CPU (or BIOS) features - ii cpufrequtils 008-1 amd64 utilities to deal with the cpufreq Linux kernel feature - ii crda 3.13-1 amd64 wireless Central Regulatory Domain Agent - ii cron 3.0pl1-128ubuntu2 amd64 process scheduling daemon - ii crudini 0.7-1 amd64 utility for manipulating ini files - ii dash 0.5.8-2.1ubuntu2 amd64 POSIX-compliant shell - ii dbus 1.10.6-1ubuntu3 amd64 simple interprocess messaging system (daemon and utilities) - ii debconf 1.5.58ubuntu1 all Debian configuration management system - ii debconf-i18n 1.5.58ubuntu1 all full internationalization support for debconf - ii debianutils 4.7 amd64 Miscellaneous utilities specific to Debian - ii debootstrap 1.0.78+nmu1ubuntu1.3 all Bootstrap a basic Debian system - ii dh-python 2.20151103ubuntu1.1 all Debian helper tools for packaging Python libraries and applications - ii diffutils 1:3.3-3 amd64 File comparison utilities - ii distro-info 0.14build1 amd64 provides information about the distributions' releases - ii distro-info-data 0.28ubuntu0.1 all information about the distributions' releases (data files) - ii dkms 2.2.0.3-2ubuntu11.2 all Dynamic Kernel Module Support Framework - ii dmidecode 3.0-2ubuntu0.1 amd64 SMBIOS/DMI table decoder - ii dns-root-data 2015052300+h+1 all DNS root data including root zone and DNSSEC key - ii dnsmasq-base 2.75-1ubuntu0.16.04.2 amd64 Small caching DNS proxy and DHCP/TFTP server - ii dpkg 1.18.4ubuntu1.1 amd64 Debian package management system - ii dpkg-dev 1.18.4ubuntu1.1 all Debian package development tools - ii e2fslibs:amd64 1.42.13-1ubuntu1 amd64 ext2/ext3/ext4 file system libraries - ii e2fsprogs 1.42.13-1ubuntu1 amd64 ext2/ext3/ext4 file system utilities - ii eject 2.1.5+deb1+cvs20081104-13.1 amd64 ejects CDs and operates CD-Changers under Linux - ii expect 5.45-7 amd64 Automates interactive applications - ii fakeroot 1.20.2-1ubuntu1 amd64 tool for simulating superuser privileges - ii file 1:5.25-2ubuntu1 amd64 Determines file type using "magic" numbers - ii findutils 4.6.0+git+20160126-2 amd64 utilities for finding files--find, xargs - ii fontconfig-config 2.11.94-0ubuntu1.1 all generic font configuration library - configuration - ii fonts-dejavu-core 2.35-1 all Vera font family derivate with additional characters - ii g++ 4:5.3.1-1ubuntu1 amd64 GNU C++ compiler - ii g++-5 5.4.0-6ubuntu1~16.04.2 amd64 GNU C++ compiler - ii gcc 4:5.3.1-1ubuntu1 amd64 GNU C compiler - ii gcc-5 5.4.0-6ubuntu1~16.04.2 amd64 GNU C compiler - ii gcc-5-base:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GCC, the GNU Compiler Collection (base package) - ii gcc-6-base:amd64 6.0.1-0ubuntu1 amd64 GCC, the GNU Compiler Collection (base package) - ii genisoimage 9:1.1.11-3ubuntu1 amd64 Creates ISO-9660 CD-ROM filesystem images - ii gettext-base 0.19.7-2ubuntu3 amd64 GNU Internationalization utilities for the base system - ii gir1.2-glib-2.0:amd64 1.46.0-3ubuntu1 amd64 Introspection data for GLib, GObject, Gio and GModule - ii git 1:2.7.4-0ubuntu1 amd64 fast, scalable, distributed revision control system - ii git-man 1:2.7.4-0ubuntu1 all fast, scalable, distributed revision control system (manual pages) - ii gnupg 1.4.20-1ubuntu3.1 amd64 GNU privacy guard - a free PGP replacement - ii gpgv 1.4.20-1ubuntu3.1 amd64 GNU privacy guard - signature verification tool - ii grep 2.25-1~16.04.1 amd64 GNU grep, egrep and fgrep - ii grub-common 2.02~beta2-36ubuntu3.1 amd64 GRand Unified Bootloader (common files) - ii grub-gfxpayload-lists 0.7 amd64 GRUB gfxpayload blacklist - ii grub-pc 2.02~beta2-36ubuntu3.1 amd64 GRand Unified Bootloader, version 2 (PC/BIOS version) - ii grub-pc-bin 2.02~beta2-36ubuntu3.1 amd64 GRand Unified Bootloader, version 2 (PC/BIOS binaries) - ii grub2-common 2.02~beta2-36ubuntu3.1 amd64 GRand Unified Bootloader (common files for version 2) - ii gzip 1.6-4ubuntu1 amd64 GNU compression utilities - ii hostname 3.16ubuntu2 amd64 utility to set/show the host name or domain name - ii ifupdown 0.8.10ubuntu1 amd64 high level tools to configure network interfaces - ii init 1.29ubuntu2 amd64 System-V-like init utilities - metapackage - ii init-system-helpers 1.29ubuntu2 all helper tools for all init systems - ii initramfs-tools 0.122ubuntu8.1 all generic modular initramfs generator (automation) - ii initramfs-tools-bin 0.122ubuntu8.1 amd64 binaries used by initramfs-tools - ii initramfs-tools-core 0.122ubuntu8.1 all generic modular initramfs generator (core tools) - ii initscripts 2.88dsf-59.3ubuntu2 amd64 scripts for initializing and shutting down the system - ii insserv 1.14.0-5ubuntu3 amd64 boot sequence organizer using LSB init.d script dependency information - ii installation-report 2.60ubuntu1 all system installation report - ii iproute2 4.3.0-1ubuntu3 amd64 networking and traffic control tools - ii iptables 1.6.0-2ubuntu3 amd64 administration tools for packet filtering and NAT - ii iputils-ping 3:20121221-5ubuntu2 amd64 Tools to test the reachability of network hosts - ii ipxe-qemu 1.0.0+git-20150424.a25a16d-1ubuntu1 all PXE boot firmware - ROM images for qemu - ii isc-dhcp-client 4.3.3-5ubuntu12.1 amd64 DHCP client for automatically obtaining an IP address - ii isc-dhcp-common 4.3.3-5ubuntu12.1 amd64 common files used by all of the isc-dhcp packages - ii iso-codes 3.65-1 all ISO language, territory, currency, script codes and their translations - ii iw 3.17-1 amd64 tool for configuring Linux wireless devices - ii java-common 0.56ubuntu2 all Base package for Java runtimes - ii kbd 1.15.5-1ubuntu4 amd64 Linux console font and keytable utilities - ii keyboard-configuration 1.108ubuntu15.2 all system-wide keyboard preferences - ii klibc-utils 2.0.4-8ubuntu1.16.04.1 amd64 small utilities built with klibc for early boot - ii kmod 22-1ubuntu4 amd64 tools for managing Linux kernel modules - ii krb5-locales 1.13.2+dfsg-5 all Internationalization support for MIT Kerberos - ii language-selector-common 0.165.3 all Language selector for Ubuntu - ii laptop-detect 0.13.7ubuntu2 amd64 attempt to detect a laptop - ii less 481-2.1 amd64 pager program similar to more - ii libaccountsservice0:amd64 0.6.40-2ubuntu11.1 amd64 query and manipulate user account information - shared libraries - ii libacl1:amd64 2.2.52-3 amd64 Access control list shared library - ii libaio1:amd64 0.3.110-2 amd64 Linux kernel AIO access library - shared library - ii libalgorithm-diff-perl 1.19.03-1 all module to find differences between files - ii libalgorithm-diff-xs-perl 0.04-4build1 amd64 module to find differences between files (XS accelerated) - ii libalgorithm-merge-perl 0.08-3 all Perl module for three-way merge of textual data - ii libapparmor-perl 2.10.95-0ubuntu2.6 amd64 AppArmor library Perl bindings - ii libapparmor1:amd64 2.10.95-0ubuntu2 amd64 changehat AppArmor library - ii libapr1:amd64 1.5.2-3 amd64 Apache Portable Runtime Library - ii libapt-inst2.0:amd64 1.2.12~ubuntu16.04.1 amd64 deb package format runtime library - ii libapt-pkg5.0:amd64 1.2.12~ubuntu16.04.1 amd64 package management runtime library - ii libasan2:amd64 5.4.0-6ubuntu1~16.04.2 amd64 AddressSanitizer -- a fast memory error detector - ii libasn1-8-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - ASN.1 library - ii libasound2:amd64 1.1.0-0ubuntu1 amd64 shared library for ALSA applications - ii libasound2-data 1.1.0-0ubuntu1 all Configuration files and profiles for ALSA drivers - ii libasprintf0v5:amd64 0.19.7-2ubuntu3 amd64 GNU library to use fprintf and friends in C++ - ii libasyncns0:amd64 0.8-5build1 amd64 Asynchronous name service query library - ii libatm1:amd64 1:2.5.1-1.5 amd64 shared library for ATM (Asynchronous Transfer Mode) - ii libatomic1:amd64 5.4.0-6ubuntu1~16.04.2 amd64 support library providing __atomic built-in functions - ii libattr1:amd64 1:2.4.47-2 amd64 Extended attribute shared library - ii libaudit-common 1:2.4.5-1ubuntu2 all Dynamic library for security auditing - common files - ii libaudit1:amd64 1:2.4.5-1ubuntu2 amd64 Dynamic library for security auditing - ii libavahi-client3:amd64 0.6.32~rc+dfsg-1ubuntu2 amd64 Avahi client library - ii libavahi-common-data:amd64 0.6.32~rc+dfsg-1ubuntu2 amd64 Avahi common data files - ii libavahi-common3:amd64 0.6.32~rc+dfsg-1ubuntu2 amd64 Avahi common library - ii libblkid1:amd64 2.27.1-6ubuntu3.1 amd64 block device ID library - ii libbluetooth3:amd64 5.37-0ubuntu5 amd64 Library to use the BlueZ Linux Bluetooth stack - ii libboost-iostreams1.58.0:amd64 1.58.0+dfsg-5ubuntu3.1 amd64 Boost.Iostreams Library - ii libboost-random1.58.0:amd64 1.58.0+dfsg-5ubuntu3.1 amd64 Boost Random Number Library - ii libboost-system1.58.0:amd64 1.58.0+dfsg-5ubuntu3.1 amd64 Operating system (e.g. diagnostics support) library - ii libboost-thread1.58.0:amd64 1.58.0+dfsg-5ubuntu3.1 amd64 portable C++ multi-threading - ii libbrlapi0.6:amd64 5.3.1-2ubuntu2.1 amd64 braille display access via BRLTTY - shared library - ii libbsd0:amd64 0.8.2-1 amd64 utility functions from BSD systems - shared library - ii libbz2-1.0:amd64 1.0.6-8 amd64 high-quality block-sorting file compressor library - runtime - ii libc-bin 2.23-0ubuntu3 amd64 GNU C Library: Binaries - ii libc-dev-bin 2.23-0ubuntu3 amd64 GNU C Library: Development binaries - ii libc6:amd64 2.23-0ubuntu3 amd64 GNU C Library: Shared libraries - ii libc6-dev:amd64 2.23-0ubuntu3 amd64 GNU C Library: Development Libraries and Header Files - ii libcaca0:amd64 0.99.beta19-2build2~gcc5.2 amd64 colour ASCII art library - ii libcacard0:amd64 1:2.5.0-2 amd64 Virtual Common Access Card (CAC) Emulator (runtime library) - ii libcap-ng0:amd64 0.7.7-1 amd64 An alternate POSIX capabilities library - ii libcap2:amd64 1:2.24-12 amd64 POSIX 1003.1e capabilities (library) - ii libcap2-bin 1:2.24-12 amd64 POSIX 1003.1e capabilities (utilities) - ii libcc1-0:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GCC cc1 plugin for GDB - ii libcgroup1:amd64 0.41-7ubuntu1 amd64 control and monitor control groups (library) - ii libcilkrts5:amd64 5.4.0-6ubuntu1~16.04.2 amd64 Intel Cilk Plus language extensions (runtime) - ii libcomerr2:amd64 1.42.13-1ubuntu1 amd64 common error description library - ii libcpufreq0 008-1 amd64 shared library to deal with the cpufreq Linux kernel feature - ii libcryptsetup4:amd64 2:1.6.6-5ubuntu2 amd64 disk encryption support - shared library - ii libcups2:amd64 2.1.3-4 amd64 Common UNIX Printing System(tm) - Core library - ii libcurl3-gnutls:amd64 7.47.0-1ubuntu2.1 amd64 easy-to-use client-side URL transfer library (GnuTLS flavour) - ii libdb5.3:amd64 5.3.28-11 amd64 Berkeley v5.3 Database Libraries [runtime] - ii libdbus-1-3:amd64 1.10.6-1ubuntu3 amd64 simple interprocess messaging system (library) - ii libdbus-glib-1-2:amd64 0.106-1 amd64 simple interprocess messaging system (GLib-based shared library) - ii libdebconfclient0:amd64 0.198ubuntu1 amd64 Debian Configuration Management System (C-implementation library) - ii libdevmapper1.02.1:amd64 2:1.02.110-1ubuntu10 amd64 Linux Kernel Device Mapper userspace library - ii libdns-export162 1:9.10.3.dfsg.P4-8ubuntu1.1 amd64 Exported DNS Shared Library - ii libdpkg-perl 1.18.4ubuntu1.1 all Dpkg perl modules - ii libdrm-amdgpu1:amd64 2.4.67-1ubuntu0.16.04.2 amd64 Userspace interface to amdgpu-specific kernel DRM services -- runtime - ii libdrm-intel1:amd64 2.4.67-1ubuntu0.16.04.2 amd64 Userspace interface to intel-specific kernel DRM services -- runtime - ii libdrm-nouveau2:amd64 2.4.67-1ubuntu0.16.04.2 amd64 Userspace interface to nouveau-specific kernel DRM services -- runtime - ii libdrm-radeon1:amd64 2.4.67-1ubuntu0.16.04.2 amd64 Userspace interface to radeon-specific kernel DRM services -- runtime - ii libdrm2:amd64 2.4.67-1ubuntu0.16.04.2 amd64 Userspace interface to kernel DRM services -- runtime - ii libedit2:amd64 3.1-20150325-1ubuntu2 amd64 BSD editline and history libraries - ii libelf1:amd64 0.165-3ubuntu1 amd64 library to read and write ELF files - ii liberror-perl 0.17-1.2 all Perl module for error/exception handling in an OO-ish way - ii libestr0 0.1.10-1 amd64 Helper functions for handling strings (lib) - ii libexpat1:amd64 2.1.0-7ubuntu0.16.04.2 amd64 XML parsing C library - runtime library - ii libexpat1-dev:amd64 2.1.0-7ubuntu0.16.04.2 amd64 XML parsing C library - development kit - ii libfakeroot:amd64 1.20.2-1ubuntu1 amd64 tool for simulating superuser privileges - shared libraries - ii libfdisk1:amd64 2.27.1-6ubuntu3.1 amd64 fdisk partitioning library - ii libfdt1:amd64 1.4.0+dfsg-2 amd64 Flat Device Trees manipulation library - ii libffi6:amd64 3.2.1-4 amd64 Foreign Function Interface library runtime - ii libfile-fcntllock-perl 0.22-3 amd64 Perl module for file locking with fcntl(2) - ii libflac8:amd64 1.3.1-4 amd64 Free Lossless Audio Codec - runtime C library - ii libfontconfig1:amd64 2.11.94-0ubuntu1.1 amd64 generic font configuration library - runtime - ii libfontenc1:amd64 1:1.1.3-1 amd64 X11 font encoding library - ii libfreetype6:amd64 2.6.1-0.1ubuntu2 amd64 FreeType 2 font engine, shared library files - ii libfribidi0:amd64 0.19.7-1 amd64 Free Implementation of the Unicode BiDi algorithm - ii libfuse2:amd64 2.9.4-1ubuntu3 amd64 Filesystem in Userspace (library) - ii libgcc-5-dev:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GCC support library (development files) - ii libgcc1:amd64 1:6.0.1-0ubuntu1 amd64 GCC support library - ii libgcrypt20:amd64 1.6.5-2ubuntu0.2 amd64 LGPL Crypto library - runtime library - ii libgdbm3:amd64 1.8.3-13.1 amd64 GNU dbm database routines (runtime version) - ii libgirepository-1.0-1:amd64 1.46.0-3ubuntu1 amd64 Library for handling GObject introspection data (runtime library) - ii libgl1-mesa-dri:amd64 11.2.0-1ubuntu2.2 amd64 free implementation of the OpenGL API -- DRI modules - ii libgl1-mesa-glx:amd64 11.2.0-1ubuntu2.2 amd64 free implementation of the OpenGL API -- GLX runtime - ii libglapi-mesa:amd64 11.2.0-1ubuntu2.2 amd64 free implementation of the GL API -- shared library - ii libglib2.0-0:amd64 2.48.1-1~ubuntu16.04.1 amd64 GLib library of C routines - ii libglib2.0-bin 2.48.1-1~ubuntu16.04.1 amd64 Programs for the GLib library - ii libglib2.0-data 2.48.1-1~ubuntu16.04.1 all Common files for GLib library - ii libglib2.0-dev 2.48.1-1~ubuntu16.04.1 amd64 Development files for the GLib library - ii libgmp10:amd64 2:6.1.0+dfsg-2 amd64 Multiprecision arithmetic library - ii libgnutls-openssl27:amd64 3.4.10-4ubuntu1.1 amd64 GNU TLS library - OpenSSL wrapper - ii libgnutls30:amd64 3.4.10-4ubuntu1.1 amd64 GNU TLS library - main runtime library - ii libgomp1:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GCC OpenMP (GOMP) support library - ii libgpg-error0:amd64 1.21-2ubuntu1 amd64 library for common error values and messages in GnuPG components - ii libgssapi-krb5-2:amd64 1.13.2+dfsg-5 amd64 MIT Kerberos runtime libraries - krb5 GSS-API Mechanism - ii libgssapi3-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - GSSAPI support library - ii libhcrypto4-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - crypto library - ii libheimbase1-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - Base library - ii libheimntlm0-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - NTLM support library - ii libhogweed4:amd64 3.2-1 amd64 low level cryptographic library (public-key cryptos) - ii libhx509-5-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - X509 support library - ii libice6:amd64 2:1.0.9-1 amd64 X11 Inter-Client Exchange library - ii libicu55:amd64 55.1-7 amd64 International Components for Unicode - ii libidn11:amd64 1.32-3ubuntu1.1 amd64 GNU Libidn library, implementation of IETF IDN specifications - ii libisc-export160 1:9.10.3.dfsg.P4-8ubuntu1.1 amd64 Exported ISC Shared Library - ii libiscsi2:amd64 1.12.0-2 amd64 iSCSI client shared library - ii libisl15:amd64 0.16.1-1 amd64 manipulating sets and relations of integer points bounded by linear constraints - ii libitm1:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GNU Transactional Memory Library - ii libjpeg-turbo8:amd64 1.4.2-0ubuntu3 amd64 IJG JPEG compliant runtime library. - ii libjpeg8:amd64 8c-2ubuntu8 amd64 Independent JPEG Group's JPEG runtime library (dependency package) - ii libjson-c2:amd64 0.11-4ubuntu2 amd64 JSON manipulation library - shared library - ii libk5crypto3:amd64 1.13.2+dfsg-5 amd64 MIT Kerberos runtime libraries - Crypto Library - ii libkeyutils1:amd64 1.5.9-8ubuntu1 amd64 Linux Key Management Utilities (library) - ii libklibc 2.0.4-8ubuntu1.16.04.1 amd64 minimal libc subset for use with initramfs - ii libkmod2:amd64 22-1ubuntu4 amd64 libkmod shared library - ii libkrb5-26-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - libraries - ii libkrb5-3:amd64 1.13.2+dfsg-5 amd64 MIT Kerberos runtime libraries - ii libkrb5support0:amd64 1.13.2+dfsg-5 amd64 MIT Kerberos runtime libraries - Support library - ii liblcms2-2:amd64 2.6-3ubuntu2 amd64 Little CMS 2 color management library - ii libldap-2.4-2:amd64 2.4.42+dfsg-2ubuntu3.1 amd64 OpenLDAP libraries - ii libllvm3.8:amd64 1:3.8-2ubuntu4 amd64 Modular compiler and toolchain technologies, runtime library - ii liblocale-gettext-perl 1.07-1build1 amd64 module using libc functions for internationalization in Perl - ii liblsan0:amd64 5.4.0-6ubuntu1~16.04.2 amd64 LeakSanitizer -- a memory leak detector (runtime) - ii libltdl-dev:amd64 2.4.6-0.1 amd64 System independent dlopen wrapper for GNU libtool - ii libltdl7:amd64 2.4.6-0.1 amd64 System independent dlopen wrapper for GNU libtool - ii liblxc1 2.0.7-0ubuntu1~16.04.2 amd64 Linux Containers userspace tools (library) - ii liblz4-1:amd64 0.0~r131-2ubuntu2 amd64 Fast LZ compression algorithm library - runtime - ii liblzma5:amd64 5.1.1alpha+20120614-2ubuntu2 amd64 XZ-format compression library - ii libmagic1:amd64 1:5.25-2ubuntu1 amd64 File type determination library using "magic" numbers - ii libmnl0:amd64 1.0.3-5 amd64 minimalistic Netlink communication library - ii libmount1:amd64 2.27.1-6ubuntu3.1 amd64 device mounting library - ii libmpc3:amd64 1.0.3-1 amd64 multiple precision complex floating-point library - ii libmpdec2:amd64 2.4.2-1 amd64 library for decimal floating point arithmetic (runtime library) - ii libmpfr4:amd64 3.1.4-1 amd64 multiple precision floating-point computation - ii libmpx0:amd64 5.4.0-6ubuntu1~16.04.2 amd64 Intel memory protection extensions (runtime) - ii libncurses5:amd64 6.0+20160213-1ubuntu1 amd64 shared libraries for terminal handling - ii libncursesw5:amd64 6.0+20160213-1ubuntu1 amd64 shared libraries for terminal handling (wide character support) - ii libnetfilter-conntrack3:amd64 1.0.5-1 amd64 Netfilter netlink-conntrack library - ii libnettle6:amd64 3.2-1 amd64 low level cryptographic library (symmetric and one-way cryptos) - ii libnewt0.52:amd64 0.52.18-1ubuntu2 amd64 Not Erik's Windowing Toolkit - text mode windowing with slang - ii libnfnetlink0:amd64 1.0.1-3 amd64 Netfilter netlink library - ii libnih-dbus1:amd64 1.0.3-4.3ubuntu1 amd64 NIH D-Bus Bindings Library - ii libnih1:amd64 1.0.3-4.3ubuntu1 amd64 NIH Utility Library - ii libnl-3-200:amd64 3.2.27-1 amd64 library for dealing with netlink sockets - ii libnl-genl-3-200:amd64 3.2.27-1 amd64 library for dealing with netlink sockets - generic netlink - ii libnspr4:amd64 2:4.12-0ubuntu0.16.04.1 amd64 NetScape Portable Runtime Library - ii libnss3:amd64 2:3.23-0ubuntu0.16.04.1 amd64 Network Security Service libraries - ii libnss3-nssdb 2:3.23-0ubuntu0.16.04.1 all Network Security Security libraries - shared databases - ii libnuma1:amd64 2.0.11-1ubuntu1 amd64 Libraries for controlling NUMA policy - ii libogg0:amd64 1.3.2-1 amd64 Ogg bitstream library - ii libopus0:amd64 1.1.2-1ubuntu1 amd64 Opus codec runtime library - ii libp11-kit0:amd64 0.23.2-3 amd64 Library for loading and coordinating access to PKCS#11 modules - runtime - ii libpam-cgfs 2.0.6-0ubuntu1~16.04.1 amd64 PAM module for managing cgroups for LXC - ii libpam-modules:amd64 1.1.8-3.2ubuntu2 amd64 Pluggable Authentication Modules for PAM - ii libpam-modules-bin 1.1.8-3.2ubuntu2 amd64 Pluggable Authentication Modules for PAM - helper binaries - ii libpam-runtime 1.1.8-3.2ubuntu2 all Runtime support for the PAM library - ii libpam0g:amd64 1.1.8-3.2ubuntu2 amd64 Pluggable Authentication Modules library - ii libpcap-dev 1.7.4-2 all development library for libpcap (transitional package) - ii libpcap0.8:amd64 1.7.4-2 amd64 system interface for user-level packet capture - ii libpcap0.8-dev 1.7.4-2 amd64 development library and header files for libpcap0.8 - ii libpci3:amd64 1:3.3.1-1.1ubuntu1 amd64 Linux PCI Utilities (shared library) - ii libpciaccess0:amd64 0.13.4-1 amd64 Generic PCI access library for X - ii libpcre16-3:amd64 2:8.38-3.1 amd64 Perl 5 Compatible Regular Expression Library - 16 bit runtime files - ii libpcre3:amd64 2:8.38-3.1 amd64 Perl 5 Compatible Regular Expression Library - runtime files - ii libpcre3-dev:amd64 2:8.38-3.1 amd64 Perl 5 Compatible Regular Expression Library - development files - ii libpcre32-3:amd64 2:8.38-3.1 amd64 Perl 5 Compatible Regular Expression Library - 32 bit runtime files - ii libpcrecpp0v5:amd64 2:8.38-3.1 amd64 Perl 5 Compatible Regular Expression Library - C++ runtime files - ii libpcsclite1:amd64 1.8.14-1ubuntu1.16.04.1 amd64 Middleware to access a smart card using PC/SC (library) - ii libperl5.22:amd64 5.22.1-9 amd64 shared Perl library - ii libpixman-1-0:amd64 0.33.6-1 amd64 pixel-manipulation library for X and cairo - ii libplymouth4:amd64 0.9.2-3ubuntu13.1 amd64 graphical boot animation and logger - shared libraries - ii libpng12-0:amd64 1.2.54-1ubuntu1 amd64 PNG library - runtime - ii libpolkit-gobject-1-0:amd64 0.105-14.1 amd64 PolicyKit Authorization API - ii libpopt0:amd64 1.16-10 amd64 lib for parsing cmdline parameters - ii libprocps4:amd64 2:3.3.10-4ubuntu2 amd64 library for accessing process information from /proc - ii libpulse0:amd64 1:8.0-0ubuntu3 amd64 PulseAudio client libraries - ii libpython-all-dev:amd64 2.7.11-1 amd64 package depending on all supported Python development packages - ii libpython-dev:amd64 2.7.11-1 amd64 header files and a static library for Python (default) - ii libpython-stdlib:amd64 2.7.11-1 amd64 interactive high-level object-oriented language (default python version) - ii libpython2.7:amd64 2.7.12-1~16.04 amd64 Shared Python runtime library (version 2.7) - ii libpython2.7-dev:amd64 2.7.12-1~16.04 amd64 Header files and a static library for Python (v2.7) - ii libpython2.7-minimal:amd64 2.7.12-1~16.04 amd64 Minimal subset of the Python language (version 2.7) - ii libpython2.7-stdlib:amd64 2.7.12-1~16.04 amd64 Interactive high-level object-oriented language (standard library, version 2.7) - ii libpython3-stdlib:amd64 3.5.1-3 amd64 interactive high-level object-oriented language (default python3 version) - ii libpython3.5-minimal:amd64 3.5.2-2~16.01 amd64 Minimal subset of the Python language (version 3.5) - ii libpython3.5-stdlib:amd64 3.5.2-2~16.01 amd64 Interactive high-level object-oriented language (standard library, version 3.5) - ii libquadmath0:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GCC Quad-Precision Math Library - ii librados2 10.2.2-0ubuntu0.16.04.2 amd64 RADOS distributed object store client library - ii librbd1 10.2.2-0ubuntu0.16.04.2 amd64 RADOS block device client library - ii libreadline6:amd64 6.3-8ubuntu2 amd64 GNU readline and history libraries, run-time libraries - ii libroken18-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - roken support library - ii librtmp1:amd64 2.4+20151223.gitfa8646d-1build1 amd64 toolkit for RTMP streams (shared library) - ii libsasl2-2:amd64 2.1.26.dfsg1-14build1 amd64 Cyrus SASL - authentication abstraction library - ii libsasl2-modules:amd64 2.1.26.dfsg1-14build1 amd64 Cyrus SASL - pluggable authentication modules - ii libsasl2-modules-db:amd64 2.1.26.dfsg1-14build1 amd64 Cyrus SASL - pluggable authentication modules (DB) - ii libsdl1.2debian:amd64 1.2.15+dfsg1-3 amd64 Simple DirectMedia Layer - ii libseccomp2:amd64 2.2.3-3ubuntu3 amd64 high level interface to Linux seccomp filter - ii libselinux1:amd64 2.4-3build2 amd64 SELinux runtime shared libraries - ii libsemanage-common 2.3-1build3 all Common files for SELinux policy management libraries - ii libsemanage1:amd64 2.3-1build3 amd64 SELinux policy management library - ii libsepol1:amd64 2.4-2 amd64 SELinux library for manipulating binary security policies - ii libsigsegv2:amd64 2.10-4 amd64 Library for handling page faults in a portable way - ii libslang2:amd64 2.3.0-2ubuntu1 amd64 S-Lang programming library - runtime version - ii libsm6:amd64 2:1.2.2-1 amd64 X11 Session Management library - ii libsmartcols1:amd64 2.27.1-6ubuntu3.1 amd64 smart column output alignment library - ii libsndfile1:amd64 1.0.25-10 amd64 Library for reading/writing audio files - ii libspice-server1:amd64 0.12.6-4ubuntu0.1 amd64 Implements the server side of the SPICE protocol - ii libsqlite3-0:amd64 3.11.0-1ubuntu1 amd64 SQLite 3 shared library - ii libss2:amd64 1.42.13-1ubuntu1 amd64 command-line interface parsing library - ii libssl1.0.0:amd64 1.0.2g-1ubuntu4.5 amd64 Secure Sockets Layer toolkit - shared libraries - ii libstdc++-5-dev:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GNU Standard C++ Library v3 (development files) - ii libstdc++6:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GNU Standard C++ Library v3 - ii libsystemd0:amd64 229-4ubuntu10 amd64 systemd utility library - ii libtasn1-6:amd64 4.7-3ubuntu0.16.04.1 amd64 Manage ASN.1 structures (runtime) - ii libtcl8.6:amd64 8.6.5+dfsg-2 amd64 Tcl (the Tool Command Language) v8.6 - run-time library files - ii libtext-charwidth-perl 0.04-7build5 amd64 get display widths of characters on the terminal - ii libtext-iconv-perl 1.7-5build4 amd64 converts between character sets in Perl - ii libtext-wrapi18n-perl 0.06-7.1 all internationalized substitute of Text::Wrap - ii libtinfo5:amd64 6.0+20160213-1ubuntu1 amd64 shared low-level terminfo library for terminal handling - ii libtk8.6:amd64 8.6.5-1 amd64 Tk toolkit for Tcl and X11 v8.6 - run-time files - ii libtool 2.4.6-0.1 all Generic library support script - ii libtsan0:amd64 5.4.0-6ubuntu1~16.04.2 amd64 ThreadSanitizer -- a Valgrind-based detector of data races (runtime) - ii libtxc-dxtn-s2tc0:amd64 0~git20131104-1.1 amd64 Texture compression library for Mesa - ii libubsan0:amd64 5.4.0-6ubuntu1~16.04.2 amd64 UBSan -- undefined behaviour sanitizer (runtime) - ii libudev1:amd64 229-4ubuntu10 amd64 libudev shared library - ii libusb-0.1-4:amd64 2:0.1.12-28 amd64 userspace USB programming library - ii libusb-1.0-0:amd64 2:1.0.20-1 amd64 userspace USB programming library - ii libusbredirparser1:amd64 0.7.1-1 amd64 Parser for the usbredir protocol (runtime) - ii libustr-1.0-1:amd64 1.0.4-5 amd64 Micro string library: shared library - ii libutempter0:amd64 1.1.6-3 amd64 privileged helper for utmp/wtmp updates (runtime) - ii libuuid1:amd64 2.27.1-6ubuntu3.1 amd64 Universally Unique ID library - ii libvorbis0a:amd64 1.3.5-3 amd64 decoder library for Vorbis General Audio Compression Codec - ii libvorbisenc2:amd64 1.3.5-3 amd64 encoder library for Vorbis General Audio Compression Codec - ii libwind0-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - stringprep implementation - ii libwrap0:amd64 7.6.q-25 amd64 Wietse Venema's TCP wrappers library - ii libx11-6:amd64 2:1.6.3-1ubuntu2 amd64 X11 client-side library - ii libx11-data 2:1.6.3-1ubuntu2 all X11 client-side library - ii libx11-xcb1:amd64 2:1.6.3-1ubuntu2 amd64 Xlib/XCB interface library - ii libxau6:amd64 1:1.0.8-1 amd64 X11 authorisation library - ii libxaw7:amd64 2:1.0.13-1 amd64 X11 Athena Widget library - ii libxcb-dri2-0:amd64 1.11.1-1ubuntu1 amd64 X C Binding, dri2 extension - ii libxcb-dri3-0:amd64 1.11.1-1ubuntu1 amd64 X C Binding, dri3 extension - ii libxcb-glx0:amd64 1.11.1-1ubuntu1 amd64 X C Binding, glx extension - ii libxcb-present0:amd64 1.11.1-1ubuntu1 amd64 X C Binding, present extension - ii libxcb-shape0:amd64 1.11.1-1ubuntu1 amd64 X C Binding, shape extension - ii libxcb-sync1:amd64 1.11.1-1ubuntu1 amd64 X C Binding, sync extension - ii libxcb1:amd64 1.11.1-1ubuntu1 amd64 X C Binding - ii libxcomposite1:amd64 1:0.4.4-1 amd64 X11 Composite extension library - ii libxdamage1:amd64 1:1.1.4-2 amd64 X11 damaged region extension library - ii libxdmcp6:amd64 1:1.1.2-1.1 amd64 X11 Display Manager Control Protocol library - ii libxen-4.6:amd64 4.6.0-1ubuntu4.2 amd64 Public libs for Xen - ii libxenstore3.0:amd64 4.6.0-1ubuntu4.2 amd64 Xenstore communications library for Xen - ii libxext6:amd64 2:1.3.3-1 amd64 X11 miscellaneous extension library - ii libxfixes3:amd64 1:5.0.1-2 amd64 X11 miscellaneous 'fixes' extension library - ii libxft2:amd64 2.3.2-1 amd64 FreeType-based font drawing library for X - ii libxi6:amd64 2:1.7.6-1 amd64 X11 Input extension library - ii libxinerama1:amd64 2:1.1.3-1 amd64 X11 Xinerama extension library - ii libxml2:amd64 2.9.3+dfsg1-1ubuntu0.1 amd64 GNOME XML library - ii libxmu6:amd64 2:1.1.2-2 amd64 X11 miscellaneous utility library - ii libxmuu1:amd64 2:1.1.2-2 amd64 X11 miscellaneous micro-utility library - ii libxpm4:amd64 1:3.5.11-1 amd64 X11 pixmap library - ii libxrandr2:amd64 2:1.5.0-1 amd64 X11 RandR extension library - ii libxrender1:amd64 1:0.9.9-0ubuntu1 amd64 X Rendering Extension client library - ii libxshmfence1:amd64 1.2-1 amd64 X shared memory fences - shared library - ii libxss1:amd64 1:1.2.2-1 amd64 X11 Screen Saver extension library - ii libxt6:amd64 1:1.1.5-0ubuntu1 amd64 X11 toolkit intrinsics library - ii libxtables11:amd64 1.6.0-2ubuntu3 amd64 netfilter xtables library - ii libxtst6:amd64 2:1.2.2-1 amd64 X11 Testing -- Record extension library - ii libxv1:amd64 2:1.0.10-1 amd64 X11 Video extension library - ii libxxf86dga1:amd64 2:1.1.4-1 amd64 X11 Direct Graphics Access extension library - ii libxxf86vm1:amd64 1:1.1.4-1 amd64 X11 XFree86 video mode extension library - ii libyajl2:amd64 2.1.0-2 amd64 Yet Another JSON Library - ii linux-base 4.0ubuntu1 all Linux image base package - ii linux-firmware 1.157.2 all Firmware for Linux kernel drivers - ii linux-generic 4.4.0.72.78 amd64 Complete Generic Linux kernel and headers - ii linux-headers-4.4.0-72 4.4.0-72.93 all Header files related to Linux kernel version 4.4.0 - ii linux-headers-4.4.0-72-generic 4.4.0-72.93 amd64 Linux kernel headers for version 4.4.0 on 64 bit x86 SMP - ii linux-headers-generic 4.4.0.72.78 amd64 Generic Linux kernel headers - ii linux-image-4.4.0-72-generic 4.4.0-72.93 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP - ii linux-image-extra-4.4.0-72-generic 4.4.0-72.93 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP - ii linux-image-generic 4.4.0.72.78 amd64 Generic Linux kernel image - ii linux-libc-dev:amd64 4.4.0-72.93 amd64 Linux Kernel Headers for development - ii locales 2.23-0ubuntu3 all GNU C Library: National Language (locale) data [support] - ii login 1:4.2-3.1ubuntu5 amd64 system login tools - ii logrotate 3.8.7-2ubuntu2 amd64 Log rotation utility - ii lsb-base 9.20160110ubuntu0.2 all Linux Standard Base init script functionality - ii lsb-release 9.20160110ubuntu0.2 all Linux Standard Base version reporting utility - ii lxc 2.0.7-0ubuntu1~16.04.2 all Transitional package for lxc1 - ii lxc-common 2.0.7-0ubuntu1~16.04.2 amd64 Linux Containers userspace tools (common tools) - ii lxc-templates 2.0.7-0ubuntu1~16.04.2 amd64 Linux Containers userspace tools (templates) - ii lxc1 2.0.7-0ubuntu1~16.04.2 amd64 Linux Containers userspace tools - ii lxcfs 2.0.6-0ubuntu1~16.04.1 amd64 FUSE based filesystem for LXC - ii m4 1.4.17-5 amd64 macro processing language - ii make 4.1-6 amd64 utility for directing compilation - ii makedev 2.3.1-93ubuntu1 all creates device files in /dev - ii manpages 4.04-2 all Manual pages about using a GNU/Linux system - ii manpages-dev 4.04-2 all Manual pages about using GNU/Linux for development - ii mawk 1.3.3-17ubuntu2 amd64 a pattern scanning and text processing language - ii mime-support 3.59ubuntu1 all MIME files 'mime.types' & 'mailcap', and support programs - ii mount 2.27.1-6ubuntu3.1 amd64 tools for mounting and manipulating filesystems - ii mountall 2.54ubuntu1 amd64 filesystem mounting tool - ii msr-tools 1.3-2 amd64 Utilities for modifying MSRs from userspace - ii multiarch-support 2.23-0ubuntu3 amd64 Transitional package to ensure multiarch compatibility - ii ncurses-base 6.0+20160213-1ubuntu1 all basic terminal type definitions - ii ncurses-bin 6.0+20160213-1ubuntu1 amd64 terminal-related programs and man pages - ii ncurses-term 6.0+20160213-1ubuntu1 all additional terminal type definitions - ii net-tools 1.60-26ubuntu1 amd64 NET-3 networking toolkit - ii netbase 5.3 all Basic TCP/IP networking system - ii netcat-openbsd 1.105-7ubuntu1 amd64 TCP/IP swiss army knife - ii openjdk-8-jre-headless:amd64 8u131-b11-0ubuntu1.16.04.2 amd64 OpenJDK Java runtime, using Hotspot JIT (headless) - ii openssh-client 1:7.2p2-4ubuntu2.1 amd64 secure shell (SSH) client, for secure access to remote machines - ii openssh-server 1:7.2p2-4ubuntu2.1 amd64 secure shell (SSH) server, for secure access from remote machines - ii openssh-sftp-server 1:7.2p2-4ubuntu2.1 amd64 secure shell (SSH) sftp server module, for SFTP access from remote machines - ii openssl 1.0.2g-1ubuntu4.5 amd64 Secure Sockets Layer toolkit - cryptographic utility - ii os-prober 1.70ubuntu3 amd64 utility to detect other OSes on a set of drives - ii passwd 1:4.2-3.1ubuntu5 amd64 change and administer password and group data - ii patch 2.7.5-1 amd64 Apply a diff file to an original - ii pciutils 1:3.3.1-1.1ubuntu1 amd64 Linux PCI Utilities - ii perl 5.22.1-9 amd64 Larry Wall's Practical Extraction and Report Language - ii perl-base 5.22.1-9 amd64 minimal Perl system - ii perl-modules-5.22 5.22.1-9 all Core Perl modules - ii pkg-config 0.29.1-0ubuntu1 amd64 manage compile and link flags for libraries - ii plymouth 0.9.2-3ubuntu13.1 amd64 boot animation, logger and I/O multiplexer - ii plymouth-theme-ubuntu-text 0.9.2-3ubuntu13.1 amd64 boot animation, logger and I/O multiplexer - ubuntu text theme - ii procps 2:3.3.10-4ubuntu2 amd64 /proc file system utilities - ii python 2.7.11-1 amd64 interactive high-level object-oriented language (default version) - ii python-all 2.7.11-1 amd64 package depending on all supported Python runtime versions - ii python-all-dev 2.7.11-1 amd64 package depending on all supported Python development packages - ii python-apt 1.1.0~beta1build1 amd64 Python interface to libapt-pkg - ii python-apt-common 1.1.0~beta1build1 all Python interface to libapt-pkg (locales) - ii python-dev 2.7.11-1 amd64 header files and a static library for Python (default) - ii python-iniparse 0.4-2.2 all access and modify configuration data in INI files (Python 2) - ii python-minimal 2.7.11-1 amd64 minimal subset of the Python language (default version) - ii python-pip 8.1.1-2ubuntu0.2 all alternative Python package installer - ii python-pip-whl 8.1.1-2ubuntu0.2 all alternative Python package installer - ii python-pkg-resources 20.7.0-1 all Package Discovery and Resource Access using pkg_resources - ii python-setuptools 20.7.0-1 all Python Distutils Enhancements - ii python-six 1.10.0-3 all Python 2 and 3 compatibility library (Python 2 interface) - ii python-virtualenv 15.0.1+ds-3 all Python virtual environment creator - ii python-wheel 0.29.0-1 all built-package format for Python - ii python2.7 2.7.12-1~16.04 amd64 Interactive high-level object-oriented language (version 2.7) - ii python2.7-dev 2.7.12-1~16.04 amd64 Header files and a static library for Python (v2.7) - ii python2.7-minimal 2.7.12-1~16.04 amd64 Minimal subset of the Python language (version 2.7) - ii python3 3.5.1-3 amd64 interactive high-level object-oriented language (default python3 version) - ii python3-apt 1.1.0~beta1build1 amd64 Python 3 interface to libapt-pkg - ii python3-chardet 2.3.0-2 all universal character encoding detector for Python3 - ii python3-dbus 1.2.0-3 amd64 simple interprocess messaging system (Python 3 interface) - ii python3-gi 3.20.0-0ubuntu1 amd64 Python 3 bindings for gobject-introspection libraries - ii python3-lxc 2.0.7-0ubuntu1~16.04.2 amd64 Linux Containers userspace tools (Python 3.x bindings) - ii python3-minimal 3.5.1-3 amd64 minimal subset of the Python language (default python3 version) - ii python3-pkg-resources 20.7.0-1 all Package Discovery and Resource Access using pkg_resources - ii python3-requests 2.9.1-3 all elegant and simple HTTP library for Python3, built for human beings - ii python3-six 1.10.0-3 all Python 2 and 3 compatibility library (Python 3 interface) - ii python3-urllib3 1.13.1-2ubuntu0.16.04.1 all HTTP library with thread-safe connection pooling for Python3 - ii python3-virtualenv 15.0.1+ds-3 all Python virtual environment creator - ii python3.5 3.5.2-2~16.01 amd64 Interactive high-level object-oriented language (version 3.5) - ii python3.5-minimal 3.5.2-2~16.01 amd64 Minimal subset of the Python language (version 3.5) - ii qemu-block-extra:amd64 1:2.5+dfsg-5ubuntu10.5 amd64 extra block backend modules for qemu-system and qemu-utils - ii qemu-system-common 1:2.5+dfsg-5ubuntu10.5 amd64 QEMU full system emulation binaries (common files) - ii qemu-system-x86 1:2.5+dfsg-5ubuntu10.5 amd64 QEMU full system emulation binaries (x86) - ii qemu-utils 1:2.5+dfsg-5ubuntu10.5 amd64 QEMU utilities - ii readline-common 6.3-8ubuntu2 all GNU readline and history libraries, common files - ii rename 0.20-4 all Perl extension for renaming multiple files - ii resolvconf 1.78ubuntu2 all name server information handler - ii rsync 3.1.1-3ubuntu1 amd64 fast, versatile, remote (and local) file-copying tool - ii rsyslog 8.16.0-1ubuntu3 amd64 reliable system and kernel logging daemon - ii screen 4.3.1-2build1 amd64 terminal multiplexer with VT100/ANSI terminal emulation - ii seabios 1.8.2-1ubuntu1 all Legacy BIOS implementation - ii sed 4.2.2-7 amd64 The GNU sed stream editor - ii sensible-utils 0.0.9 all Utilities for sensible alternative selection - ii sgml-base 1.26+nmu4ubuntu1 all SGML infrastructure and SGML catalog file support - ii shared-mime-info 1.5-2ubuntu0.1 amd64 FreeDesktop.org shared MIME database and spec - ii sharutils 1:4.15.2-1 amd64 shar, unshar, uuencode, uudecode - ii socat 1.7.3.1-1 amd64 multipurpose relay for bidirectional data transfer - ii ssh-import-id 5.5-0ubuntu1 all securely retrieve an SSH public key and install it locally - ii sudo 1.8.16-0ubuntu1.1 amd64 Provide limited super user privileges to specific users - ii systemd 229-4ubuntu10 amd64 system and service manager - ii systemd-sysv 229-4ubuntu10 amd64 system and service manager - SysV links - ii sysv-rc 2.88dsf-59.3ubuntu2 all System-V-like runlevel change mechanism - ii sysvinit-utils 2.88dsf-59.3ubuntu2 amd64 System-V-like utilities - ii tar 1.28-2.1 amd64 GNU version of the tar archiving utility - ii tasksel 3.34ubuntu3 all tool for selecting tasks for installation on Debian systems - ii tasksel-data 3.34ubuntu3 all official tasks used for installation of Debian systems - ii tcl-expect:amd64 5.45-7 amd64 Automates interactive applications (Tcl package) - ii tcl8.6 8.6.5+dfsg-2 amd64 Tcl (the Tool Command Language) v8.6 - shell - ii tcpd 7.6.q-25 amd64 Wietse Venema's TCP wrapper utilities - ii tk8.6 8.6.5-1 amd64 Tk toolkit for Tcl and X11 v8.6 - windowing shell - ii tzdata 2016g-0ubuntu0.16.04 all time zone and daylight-saving time data - ii ubuntu-keyring 2012.05.19 all GnuPG keys of the Ubuntu archive - ii ubuntu-minimal 1.361 amd64 Minimal core of Ubuntu - ii ucf 3.0036 all Update Configuration File(s): preserve user changes to config files - ii udev 229-4ubuntu10 amd64 /dev/ and hotplug management daemon - ii uidmap 1:4.2-3.1ubuntu5.3 amd64 programs to help use subuids - ii ureadahead 0.100.0-19 amd64 Read required files in advance - ii usbutils 1:007-4 amd64 Linux USB utilities - ii util-linux 2.27.1-6ubuntu3.1 amd64 miscellaneous system utilities - ii uuid-runtime 2.27.1-6ubuntu3.2 amd64 runtime components for the Universally Unique ID library - ii vim-common 2:7.4.1689-3ubuntu1.1 amd64 Vi IMproved - Common files - ii vim-tiny 2:7.4.1689-3ubuntu1.1 amd64 Vi IMproved - enhanced vi editor - compact version - ii virtualenv 15.0.1+ds-3 all Python virtual environment creator - ii wamerican 7.1-1 all American English dictionary words for /usr/share/dict - ii wget 1.17.1-1ubuntu1.1 amd64 retrieves files from the web - ii whiptail 0.52.18-1ubuntu2 amd64 Displays user-friendly dialog boxes from shell scripts - ii wireless-regdb 2015.07.20-1ubuntu1 all wireless regulatory database - ii x11-common 1:7.7+13ubuntu3 all X Window System (X.Org) infrastructure - ii x11-utils 7.7+3 amd64 X11 utilities - ii xauth 1:1.0.9-1ubuntu2 amd64 X authentication utility - ii xbitmaps 1.1.1-2 all Base X bitmaps - ii xdg-user-dirs 0.15-2ubuntu6 amd64 tool to manage well known user directories - ii xkb-data 2.16-1ubuntu1 all X Keyboard Extension (XKB) configuration data - ii xml-core 0.13+nmu2 all XML infrastructure and XML catalog file support - ii xterm 322-1ubuntu1 amd64 X terminal emulator - ii xz-utils 5.1.1alpha+20120614-2ubuntu2 amd64 XZ-format compression utilities - ii zlib1g:amd64 1:1.2.8.dfsg-2ubuntu4 amd64 compression library - runtime - ii zlib1g-dev:amd64 1:1.2.8.dfsg-2ubuntu4 amd64 compression library - development + $ dpkg -l | grep '^ii' | awk '{print $2 ": " $3}' + accountsservice: 0.6.40-2ubuntu11.1 + acl: 2.2.52-3 + adduser: 3.113+nmu3ubuntu4 + apparmor: 2.10.95-0ubuntu2.6 + apt: 1.2.12~ubuntu16.04.1 + apt-utils: 1.2.12~ubuntu16.04.1 + autoconf: 2.69-9 + automake: 1:1.15-4ubuntu1 + autotools-dev: 20150820.1 + base-files: 9.4ubuntu4.2 + base-passwd: 3.5.39 + bash: 4.3-14ubuntu1.1 + binutils: 2.26.1-1ubuntu1~16.04.3 + bridge-utils: 1.5-9ubuntu1 + bsdutils: 1:2.27.1-6ubuntu3.1 + build-essential: 12.1ubuntu2 + busybox-initramfs: 1:1.22.0-15ubuntu1 + busybox-static: 1:1.22.0-15ubuntu1 + bzip2: 1.0.6-8 + ca-certificates: 20160104ubuntu1 + ca-certificates-java: 20160321 + cgroup-bin: 0.41-7ubuntu1 + cgroup-lite: 1.11 + cgroup-tools: 0.41-7ubuntu1 + cloud-image-utils: 0.27-0ubuntu24 + console-setup: 1.108ubuntu15.2 + console-setup-linux: 1.108ubuntu15.2 + coreutils: 8.25-2ubuntu2 + cpio: 2.11+dfsg-5ubuntu1 + cpp: 4:5.3.1-1ubuntu1 + cpp-5: 5.4.0-6ubuntu1~16.04.2 + cpu-checker: 0.7-0ubuntu7 + cpufrequtils: 008-1 + crda: 3.13-1 + cron: 3.0pl1-128ubuntu2 + crudini: 0.7-1 + dash: 0.5.8-2.1ubuntu2 + dbus: 1.10.6-1ubuntu3 + debconf: 1.5.58ubuntu1 + debconf-i18n: 1.5.58ubuntu1 + debianutils: 4.7 + debootstrap: 1.0.78+nmu1ubuntu1.3 + dh-python: 2.20151103ubuntu1.1 + diffutils: 1:3.3-3 + distro-info: 0.14build1 + distro-info-data: 0.28ubuntu0.1 + dkms: 2.2.0.3-2ubuntu11.2 + dmidecode: 3.0-2ubuntu0.1 + dns-root-data: 2015052300+h+1 + dnsmasq-base: 2.75-1ubuntu0.16.04.2 + dpkg: 1.18.4ubuntu1.1 + dpkg-dev: 1.18.4ubuntu1.1 + e2fslibs:amd64: 1.42.13-1ubuntu1 + e2fsprogs: 1.42.13-1ubuntu1 + eject: 2.1.5+deb1+cvs20081104-13.1 + expect: 5.45-7 + fakeroot: 1.20.2-1ubuntu1 + file: 1:5.25-2ubuntu1 + findutils: 4.6.0+git+20160126-2 + fontconfig-config: 2.11.94-0ubuntu1.1 + fonts-dejavu-core: 2.35-1 + g++: 4:5.3.1-1ubuntu1 + g++-5: 5.4.0-6ubuntu1~16.04.2 + gcc: 4:5.3.1-1ubuntu1 + gcc-5: 5.4.0-6ubuntu1~16.04.2 + gcc-5-base:amd64: 5.4.0-6ubuntu1~16.04.2 + gcc-6-base:amd64: 6.0.1-0ubuntu1 + genisoimage: 9:1.1.11-3ubuntu1 + gettext-base: 0.19.7-2ubuntu3 + gir1.2-glib-2.0:amd64: 1.46.0-3ubuntu1 + git: 1:2.7.4-0ubuntu1 + git-man: 1:2.7.4-0ubuntu1 + gnupg: 1.4.20-1ubuntu3.1 + gpgv: 1.4.20-1ubuntu3.1 + grep: 2.25-1~16.04.1 + grub-common: 2.02~beta2-36ubuntu3.1 + grub-gfxpayload-lists: 0.7 + grub-pc: 2.02~beta2-36ubuntu3.1 + grub-pc-bin: 2.02~beta2-36ubuntu3.1 + grub2-common: 2.02~beta2-36ubuntu3.1 + gzip: 1.6-4ubuntu1 + hostname: 3.16ubuntu2 + ifupdown: 0.8.10ubuntu1 + init: 1.29ubuntu2 + init-system-helpers: 1.29ubuntu2 + initramfs-tools: 0.122ubuntu8.1 + initramfs-tools-bin: 0.122ubuntu8.1 + initramfs-tools-core: 0.122ubuntu8.1 + initscripts: 2.88dsf-59.3ubuntu2 + insserv: 1.14.0-5ubuntu3 + installation-report: 2.60ubuntu1 + iproute2: 4.3.0-1ubuntu3 + iptables: 1.6.0-2ubuntu3 + iputils-ping: 3:20121221-5ubuntu2 + ipxe-qemu: 1.0.0+git-20150424.a25a16d-1ubuntu1 + isc-dhcp-client: 4.3.3-5ubuntu12.1 + isc-dhcp-common: 4.3.3-5ubuntu12.1 + iso-codes: 3.65-1 + iw: 3.17-1 + java-common: 0.56ubuntu2 + kbd: 1.15.5-1ubuntu4 + keyboard-configuration: 1.108ubuntu15.2 + klibc-utils: 2.0.4-8ubuntu1.16.04.1 + kmod: 22-1ubuntu4 + krb5-locales: 1.13.2+dfsg-5 + language-selector-common: 0.165.3 + laptop-detect: 0.13.7ubuntu2 + less: 481-2.1 + libaccountsservice0:amd64: 0.6.40-2ubuntu11.1 + libacl1:amd64: 2.2.52-3 + libaio1:amd64: 0.3.110-2 + libalgorithm-diff-perl: 1.19.03-1 + libalgorithm-diff-xs-perl: 0.04-4build1 + libalgorithm-merge-perl: 0.08-3 + libapparmor-perl: 2.10.95-0ubuntu2.6 + libapparmor1:amd64: 2.10.95-0ubuntu2 + libapr1:amd64: 1.5.2-3 + libapt-inst2.0:amd64: 1.2.12~ubuntu16.04.1 + libapt-pkg5.0:amd64: 1.2.12~ubuntu16.04.1 + libasan2:amd64: 5.4.0-6ubuntu1~16.04.2 + libasn1-8-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libasound2:amd64: 1.1.0-0ubuntu1 + libasound2-data: 1.1.0-0ubuntu1 + libasprintf0v5:amd64: 0.19.7-2ubuntu3 + libasyncns0:amd64: 0.8-5build1 + libatm1:amd64: 1:2.5.1-1.5 + libatomic1:amd64: 5.4.0-6ubuntu1~16.04.2 + libattr1:amd64: 1:2.4.47-2 + libaudit-common: 1:2.4.5-1ubuntu2 + libaudit1:amd64: 1:2.4.5-1ubuntu2 + libavahi-client3:amd64: 0.6.32~rc+dfsg-1ubuntu2 + libavahi-common-data:amd64: 0.6.32~rc+dfsg-1ubuntu2 + libavahi-common3:amd64: 0.6.32~rc+dfsg-1ubuntu2 + libblkid1:amd64: 2.27.1-6ubuntu3.1 + libbluetooth3:amd64: 5.37-0ubuntu5 + libboost-iostreams1.58.0:amd64: 1.58.0+dfsg-5ubuntu3.1 + libboost-random1.58.0:amd64: 1.58.0+dfsg-5ubuntu3.1 + libboost-system1.58.0:amd64: 1.58.0+dfsg-5ubuntu3.1 + libboost-thread1.58.0:amd64: 1.58.0+dfsg-5ubuntu3.1 + libbrlapi0.6:amd64: 5.3.1-2ubuntu2.1 + libbsd0:amd64: 0.8.2-1 + libbz2-1.0:amd64: 1.0.6-8 + libc-bin: 2.23-0ubuntu3 + libc-dev-bin: 2.23-0ubuntu3 + libc6:amd64: 2.23-0ubuntu3 + libc6-dev:amd64: 2.23-0ubuntu3 + libcaca0:amd64: 0.99.beta19-2build2~gcc5.2 + libcacard0:amd64: 1:2.5.0-2 + libcap-ng0:amd64: 0.7.7-1 + libcap2:amd64: 1:2.24-12 + libcap2-bin: 1:2.24-12 + libcc1-0:amd64: 5.4.0-6ubuntu1~16.04.2 + libcgroup1:amd64: 0.41-7ubuntu1 + libcilkrts5:amd64: 5.4.0-6ubuntu1~16.04.2 + libcomerr2:amd64: 1.42.13-1ubuntu1 + libcpufreq0: 008-1 + libcryptsetup4:amd64: 2:1.6.6-5ubuntu2 + libcups2:amd64: 2.1.3-4 + libcurl3-gnutls:amd64: 7.47.0-1ubuntu2.1 + libdb5.3:amd64: 5.3.28-11 + libdbus-1-3:amd64: 1.10.6-1ubuntu3 + libdbus-glib-1-2:amd64: 0.106-1 + libdebconfclient0:amd64: 0.198ubuntu1 + libdevmapper1.02.1:amd64: 2:1.02.110-1ubuntu10 + libdns-export162: 1:9.10.3.dfsg.P4-8ubuntu1.1 + libdpkg-perl: 1.18.4ubuntu1.1 + libdrm-amdgpu1:amd64: 2.4.67-1ubuntu0.16.04.2 + libdrm-intel1:amd64: 2.4.67-1ubuntu0.16.04.2 + libdrm-nouveau2:amd64: 2.4.67-1ubuntu0.16.04.2 + libdrm-radeon1:amd64: 2.4.67-1ubuntu0.16.04.2 + libdrm2:amd64: 2.4.67-1ubuntu0.16.04.2 + libedit2:amd64: 3.1-20150325-1ubuntu2 + libelf1:amd64: 0.165-3ubuntu1 + liberror-perl: 0.17-1.2 + libestr0: 0.1.10-1 + libexpat1:amd64: 2.1.0-7ubuntu0.16.04.2 + libexpat1-dev:amd64: 2.1.0-7ubuntu0.16.04.2 + libfakeroot:amd64: 1.20.2-1ubuntu1 + libfdisk1:amd64: 2.27.1-6ubuntu3.1 + libfdt1:amd64: 1.4.0+dfsg-2 + libffi6:amd64: 3.2.1-4 + libfile-fcntllock-perl: 0.22-3 + libflac8:amd64: 1.3.1-4 + libfontconfig1:amd64: 2.11.94-0ubuntu1.1 + libfontenc1:amd64: 1:1.1.3-1 + libfreetype6:amd64: 2.6.1-0.1ubuntu2 + libfribidi0:amd64: 0.19.7-1 + libfuse2:amd64: 2.9.4-1ubuntu3 + libgcc-5-dev:amd64: 5.4.0-6ubuntu1~16.04.2 + libgcc1:amd64: 1:6.0.1-0ubuntu1 + libgcrypt20:amd64: 1.6.5-2ubuntu0.2 + libgdbm3:amd64: 1.8.3-13.1 + libgirepository-1.0-1:amd64: 1.46.0-3ubuntu1 + libgl1-mesa-dri:amd64: 11.2.0-1ubuntu2.2 + libgl1-mesa-glx:amd64: 11.2.0-1ubuntu2.2 + libglapi-mesa:amd64: 11.2.0-1ubuntu2.2 + libglib2.0-0:amd64: 2.48.1-1~ubuntu16.04.1 + libglib2.0-bin: 2.48.1-1~ubuntu16.04.1 + libglib2.0-data: 2.48.1-1~ubuntu16.04.1 + libglib2.0-dev: 2.48.1-1~ubuntu16.04.1 + libgmp10:amd64: 2:6.1.0+dfsg-2 + libgnutls-openssl27:amd64: 3.4.10-4ubuntu1.1 + libgnutls30:amd64: 3.4.10-4ubuntu1.1 + libgomp1:amd64: 5.4.0-6ubuntu1~16.04.2 + libgpg-error0:amd64: 1.21-2ubuntu1 + libgssapi-krb5-2:amd64: 1.13.2+dfsg-5 + libgssapi3-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libhcrypto4-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libheimbase1-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libheimntlm0-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libhogweed4:amd64: 3.2-1 + libhx509-5-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libice6:amd64: 2:1.0.9-1 + libicu55:amd64: 55.1-7 + libidn11:amd64: 1.32-3ubuntu1.1 + libisc-export160: 1:9.10.3.dfsg.P4-8ubuntu1.1 + libiscsi2:amd64: 1.12.0-2 + libisl15:amd64: 0.16.1-1 + libitm1:amd64: 5.4.0-6ubuntu1~16.04.2 + libjpeg-turbo8:amd64: 1.4.2-0ubuntu3 + libjpeg8:amd64: 8c-2ubuntu8 + libjson-c2:amd64: 0.11-4ubuntu2 + libk5crypto3:amd64: 1.13.2+dfsg-5 + libkeyutils1:amd64: 1.5.9-8ubuntu1 + libklibc: 2.0.4-8ubuntu1.16.04.1 + libkmod2:amd64: 22-1ubuntu4 + libkrb5-26-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libkrb5-3:amd64: 1.13.2+dfsg-5 + libkrb5support0:amd64: 1.13.2+dfsg-5 + liblcms2-2:amd64: 2.6-3ubuntu2 + libldap-2.4-2:amd64: 2.4.42+dfsg-2ubuntu3.1 + libllvm3.8:amd64: 1:3.8-2ubuntu4 + liblocale-gettext-perl: 1.07-1build1 + liblsan0:amd64: 5.4.0-6ubuntu1~16.04.2 + libltdl-dev:amd64: 2.4.6-0.1 + libltdl7:amd64: 2.4.6-0.1 + liblxc1: 2.0.7-0ubuntu1~16.04.2 + liblz4-1:amd64: 0.0~r131-2ubuntu2 + liblzma5:amd64: 5.1.1alpha+20120614-2ubuntu2 + libmagic1:amd64: 1:5.25-2ubuntu1 + libmnl0:amd64: 1.0.3-5 + libmount1:amd64: 2.27.1-6ubuntu3.1 + libmpc3:amd64: 1.0.3-1 + libmpdec2:amd64: 2.4.2-1 + libmpfr4:amd64: 3.1.4-1 + libmpx0:amd64: 5.4.0-6ubuntu1~16.04.2 + libncurses5:amd64: 6.0+20160213-1ubuntu1 + libncursesw5:amd64: 6.0+20160213-1ubuntu1 + libnetfilter-conntrack3:amd64: 1.0.5-1 + libnettle6:amd64: 3.2-1 + libnewt0.52:amd64: 0.52.18-1ubuntu2 + libnfnetlink0:amd64: 1.0.1-3 + libnih-dbus1:amd64: 1.0.3-4.3ubuntu1 + libnih1:amd64: 1.0.3-4.3ubuntu1 + libnl-3-200:amd64: 3.2.27-1 + libnl-genl-3-200:amd64: 3.2.27-1 + libnspr4:amd64: 2:4.12-0ubuntu0.16.04.1 + libnss3:amd64: 2:3.23-0ubuntu0.16.04.1 + libnss3-nssdb: 2:3.23-0ubuntu0.16.04.1 + libnuma1:amd64: 2.0.11-1ubuntu1 + libogg0:amd64: 1.3.2-1 + libopus0:amd64: 1.1.2-1ubuntu1 + libp11-kit0:amd64: 0.23.2-3 + libpam-cgfs: 2.0.6-0ubuntu1~16.04.1 + libpam-modules:amd64: 1.1.8-3.2ubuntu2 + libpam-modules-bin: 1.1.8-3.2ubuntu2 + libpam-runtime: 1.1.8-3.2ubuntu2 + libpam0g:amd64: 1.1.8-3.2ubuntu2 + libpcap-dev: 1.7.4-2 + libpcap0.8:amd64: 1.7.4-2 + libpcap0.8-dev: 1.7.4-2 + libpci3:amd64: 1:3.3.1-1.1ubuntu1 + libpciaccess0:amd64: 0.13.4-1 + libpcre16-3:amd64: 2:8.38-3.1 + libpcre3:amd64: 2:8.38-3.1 + libpcre3-dev:amd64: 2:8.38-3.1 + libpcre32-3:amd64: 2:8.38-3.1 + libpcrecpp0v5:amd64: 2:8.38-3.1 + libpcsclite1:amd64: 1.8.14-1ubuntu1.16.04.1 + libperl5.22:amd64: 5.22.1-9 + libpixman-1-0:amd64: 0.33.6-1 + libplymouth4:amd64: 0.9.2-3ubuntu13.1 + libpng12-0:amd64: 1.2.54-1ubuntu1 + libpolkit-gobject-1-0:amd64: 0.105-14.1 + libpopt0:amd64: 1.16-10 + libprocps4:amd64: 2:3.3.10-4ubuntu2 + libpulse0:amd64: 1:8.0-0ubuntu3 + libpython-all-dev:amd64: 2.7.11-1 + libpython-dev:amd64: 2.7.11-1 + libpython-stdlib:amd64: 2.7.11-1 + libpython2.7:amd64: 2.7.12-1~16.04 + libpython2.7-dev:amd64: 2.7.12-1~16.04 + libpython2.7-minimal:amd64: 2.7.12-1~16.04 + libpython2.7-stdlib:amd64: 2.7.12-1~16.04 + libpython3-stdlib:amd64: 3.5.1-3 + libpython3.5-minimal:amd64: 3.5.2-2~16.01 + libpython3.5-stdlib:amd64: 3.5.2-2~16.01 + libquadmath0:amd64: 5.4.0-6ubuntu1~16.04.2 + librados2: 10.2.2-0ubuntu0.16.04.2 + librbd1: 10.2.2-0ubuntu0.16.04.2 + libreadline6:amd64: 6.3-8ubuntu2 + libroken18-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + librtmp1:amd64: 2.4+20151223.gitfa8646d-1build1 + libsasl2-2:amd64: 2.1.26.dfsg1-14build1 + libsasl2-modules:amd64: 2.1.26.dfsg1-14build1 + libsasl2-modules-db:amd64: 2.1.26.dfsg1-14build1 + libsdl1.2debian:amd64: 1.2.15+dfsg1-3 + libseccomp2:amd64: 2.2.3-3ubuntu3 + libselinux1:amd64: 2.4-3build2 + libsemanage-common: 2.3-1build3 + libsemanage1:amd64: 2.3-1build3 + libsepol1:amd64: 2.4-2 + libsigsegv2:amd64: 2.10-4 + libslang2:amd64: 2.3.0-2ubuntu1 + libsm6:amd64: 2:1.2.2-1 + libsmartcols1:amd64: 2.27.1-6ubuntu3.1 + libsndfile1:amd64: 1.0.25-10 + libspice-server1:amd64: 0.12.6-4ubuntu0.1 + libsqlite3-0:amd64: 3.11.0-1ubuntu1 + libss2:amd64: 1.42.13-1ubuntu1 + libssl1.0.0:amd64: 1.0.2g-1ubuntu4.5 + libstdc++-5-dev:amd64: 5.4.0-6ubuntu1~16.04.2 + libstdc++6:amd64: 5.4.0-6ubuntu1~16.04.2 + libsystemd0:amd64: 229-4ubuntu10 + libtasn1-6:amd64: 4.7-3ubuntu0.16.04.1 + libtcl8.6:amd64: 8.6.5+dfsg-2 + libtext-charwidth-perl: 0.04-7build5 + libtext-iconv-perl: 1.7-5build4 + libtext-wrapi18n-perl: 0.06-7.1 + libtinfo5:amd64: 6.0+20160213-1ubuntu1 + libtk8.6:amd64: 8.6.5-1 + libtool: 2.4.6-0.1 + libtsan0:amd64: 5.4.0-6ubuntu1~16.04.2 + libtxc-dxtn-s2tc0:amd64: 0~git20131104-1.1 + libubsan0:amd64: 5.4.0-6ubuntu1~16.04.2 + libudev1:amd64: 229-4ubuntu10 + libusb-0.1-4:amd64: 2:0.1.12-28 + libusb-1.0-0:amd64: 2:1.0.20-1 + libusbredirparser1:amd64: 0.7.1-1 + libustr-1.0-1:amd64: 1.0.4-5 + libutempter0:amd64: 1.1.6-3 + libuuid1:amd64: 2.27.1-6ubuntu3.1 + libvorbis0a:amd64: 1.3.5-3 + libvorbisenc2:amd64: 1.3.5-3 + libwind0-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libwrap0:amd64: 7.6.q-25 + libx11-6:amd64: 2:1.6.3-1ubuntu2 + libx11-data: 2:1.6.3-1ubuntu2 + libx11-xcb1:amd64: 2:1.6.3-1ubuntu2 + libxau6:amd64: 1:1.0.8-1 + libxaw7:amd64: 2:1.0.13-1 + libxcb-dri2-0:amd64: 1.11.1-1ubuntu1 + libxcb-dri3-0:amd64: 1.11.1-1ubuntu1 + libxcb-glx0:amd64: 1.11.1-1ubuntu1 + libxcb-present0:amd64: 1.11.1-1ubuntu1 + libxcb-shape0:amd64: 1.11.1-1ubuntu1 + libxcb-sync1:amd64: 1.11.1-1ubuntu1 + libxcb1:amd64: 1.11.1-1ubuntu1 + libxcomposite1:amd64: 1:0.4.4-1 + libxdamage1:amd64: 1:1.1.4-2 + libxdmcp6:amd64: 1:1.1.2-1.1 + libxen-4.6:amd64: 4.6.0-1ubuntu4.2 + libxenstore3.0:amd64: 4.6.0-1ubuntu4.2 + libxext6:amd64: 2:1.3.3-1 + libxfixes3:amd64: 1:5.0.1-2 + libxft2:amd64: 2.3.2-1 + libxi6:amd64: 2:1.7.6-1 + libxinerama1:amd64: 2:1.1.3-1 + libxml2:amd64: 2.9.3+dfsg1-1ubuntu0.1 + libxmu6:amd64: 2:1.1.2-2 + libxmuu1:amd64: 2:1.1.2-2 + libxpm4:amd64: 1:3.5.11-1 + libxrandr2:amd64: 2:1.5.0-1 + libxrender1:amd64: 1:0.9.9-0ubuntu1 + libxshmfence1:amd64: 1.2-1 + libxss1:amd64: 1:1.2.2-1 + libxt6:amd64: 1:1.1.5-0ubuntu1 + libxtables11:amd64: 1.6.0-2ubuntu3 + libxtst6:amd64: 2:1.2.2-1 + libxv1:amd64: 2:1.0.10-1 + libxxf86dga1:amd64: 2:1.1.4-1 + libxxf86vm1:amd64: 1:1.1.4-1 + libyajl2:amd64: 2.1.0-2 + linux-base: 4.0ubuntu1 + linux-firmware: 1.157.2 + linux-generic: 4.4.0.72.78 + linux-headers-4.4.0-72: 4.4.0-72.93 + linux-headers-4.4.0-72-generic: 4.4.0-72.93 + linux-headers-generic: 4.4.0.72.78 + linux-image-4.4.0-72-generic: 4.4.0-72.93 + linux-image-extra-4.4.0-72-generic: 4.4.0-72.93 + linux-image-generic: 4.4.0.72.78 + linux-libc-dev:amd64: 4.4.0-72.93 + locales: 2.23-0ubuntu3 + login: 1:4.2-3.1ubuntu5 + logrotate: 3.8.7-2ubuntu2 + lsb-base: 9.20160110ubuntu0.2 + lsb-release: 9.20160110ubuntu0.2 + lxc: 2.0.7-0ubuntu1~16.04.2 + lxc-common: 2.0.7-0ubuntu1~16.04.2 + lxc-templates: 2.0.7-0ubuntu1~16.04.2 + lxc1: 2.0.7-0ubuntu1~16.04.2 + lxcfs: 2.0.6-0ubuntu1~16.04.1 + m4: 1.4.17-5 + make: 4.1-6 + makedev: 2.3.1-93ubuntu1 + manpages: 4.04-2 + manpages-dev: 4.04-2 + mawk: 1.3.3-17ubuntu2 + mime-support: 3.59ubuntu1 + mount: 2.27.1-6ubuntu3.1 + mountall: 2.54ubuntu1 + msr-tools: 1.3-2 + multiarch-support: 2.23-0ubuntu3 + ncurses-base: 6.0+20160213-1ubuntu1 + ncurses-bin: 6.0+20160213-1ubuntu1 + ncurses-term: 6.0+20160213-1ubuntu1 + net-tools: 1.60-26ubuntu1 + netbase: 5.3 + netcat-openbsd: 1.105-7ubuntu1 + openjdk-8-jre-headless:amd64: 8u131-b11-0ubuntu1.16.04.2 + openssh-client: 1:7.2p2-4ubuntu2.1 + openssh-server: 1:7.2p2-4ubuntu2.1 + openssh-sftp-server: 1:7.2p2-4ubuntu2.1 + openssl: 1.0.2g-1ubuntu4.5 + os-prober: 1.70ubuntu3 + passwd: 1:4.2-3.1ubuntu5 + patch: 2.7.5-1 + pciutils: 1:3.3.1-1.1ubuntu1 + perl: 5.22.1-9 + perl-base: 5.22.1-9 + perl-modules-5.22: 5.22.1-9 + pkg-config: 0.29.1-0ubuntu1 + plymouth: 0.9.2-3ubuntu13.1 + plymouth-theme-ubuntu-text: 0.9.2-3ubuntu13.1 + procps: 2:3.3.10-4ubuntu2 + python: 2.7.11-1 + python-all: 2.7.11-1 + python-all-dev: 2.7.11-1 + python-apt: 1.1.0~beta1build1 + python-apt-common: 1.1.0~beta1build1 + python-dev: 2.7.11-1 + python-iniparse: 0.4-2.2 + python-minimal: 2.7.11-1 + python-pip: 8.1.1-2ubuntu0.2 + python-pip-whl: 8.1.1-2ubuntu0.2 + python-pkg-resources: 20.7.0-1 + python-setuptools: 20.7.0-1 + python-six: 1.10.0-3 + python-virtualenv: 15.0.1+ds-3 + python-wheel: 0.29.0-1 + python2.7: 2.7.12-1~16.04 + python2.7-dev: 2.7.12-1~16.04 + python2.7-minimal: 2.7.12-1~16.04 + python3: 3.5.1-3 + python3-apt: 1.1.0~beta1build1 + python3-chardet: 2.3.0-2 + python3-dbus: 1.2.0-3 + python3-gi: 3.20.0-0ubuntu1 + python3-lxc: 2.0.7-0ubuntu1~16.04.2 + python3-minimal: 3.5.1-3 + python3-pkg-resources: 20.7.0-1 + python3-requests: 2.9.1-3 + python3-six: 1.10.0-3 + python3-urllib3: 1.13.1-2ubuntu0.16.04.1 + python3-virtualenv: 15.0.1+ds-3 + python3.5: 3.5.2-2~16.01 + python3.5-minimal: 3.5.2-2~16.01 + qemu-block-extra:amd64: 1:2.5+dfsg-5ubuntu10.5 + qemu-system-common: 1:2.5+dfsg-5ubuntu10.5 + qemu-system-x86: 1:2.5+dfsg-5ubuntu10.5 + qemu-utils: 1:2.5+dfsg-5ubuntu10.5 + readline-common: 6.3-8ubuntu2 + rename: 0.20-4 + resolvconf: 1.78ubuntu2 + rsync: 3.1.1-3ubuntu1 + rsyslog: 8.16.0-1ubuntu3 + screen: 4.3.1-2build1 + seabios: 1.8.2-1ubuntu1 + sed: 4.2.2-7 + sensible-utils: 0.0.9 + sgml-base: 1.26+nmu4ubuntu1 + shared-mime-info: 1.5-2ubuntu0.1 + sharutils: 1:4.15.2-1 + socat: 1.7.3.1-1 + ssh-import-id: 5.5-0ubuntu1 + sudo: 1.8.16-0ubuntu1.1 + systemd: 229-4ubuntu10 + systemd-sysv: 229-4ubuntu10 + sysv-rc: 2.88dsf-59.3ubuntu2 + sysvinit-utils: 2.88dsf-59.3ubuntu2 + tar: 1.28-2.1 + tasksel: 3.34ubuntu3 + tasksel-data: 3.34ubuntu3 + tcl-expect:amd64: 5.45-7 + tcl8.6: 8.6.5+dfsg-2 + tcpd: 7.6.q-25 + tk8.6: 8.6.5-1 + tzdata: 2016g-0ubuntu0.16.04 + ubuntu-keyring: 2012.05.19 + ubuntu-minimal: 1.361 + ucf: 3.0036 + udev: 229-4ubuntu10 + uidmap: 1:4.2-3.1ubuntu5.3 + ureadahead: 0.100.0-19 + usbutils: 1:007-4 + util-linux: 2.27.1-6ubuntu3.1 + uuid-runtime: 2.27.1-6ubuntu3.2 + vim-common: 2:7.4.1689-3ubuntu1.1 + vim-tiny: 2:7.4.1689-3ubuntu1.1 + virtualenv: 15.0.1+ds-3 + vpp: 17.10-rc0~89-g7c35f19~b2621 + vpp-dbg: 17.10-rc0~89-g7c35f19~b2621 + vpp-dev: 17.10-rc0~89-g7c35f19~b2621 + vpp-dpdk-dkms: 17.05-vpp6 + vpp-lib: 17.10-rc0~89-g7c35f19~b2621 + vpp-plugins: 17.10-rc0~89-g7c35f19~b2621 + wamerican: 7.1-1 + wget: 1.17.1-1ubuntu1.1 + whiptail: 0.52.18-1ubuntu2 + wireless-regdb: 2015.07.20-1ubuntu1 + x11-common: 1:7.7+13ubuntu3 + x11-utils: 7.7+3 + xauth: 1:1.0.9-1ubuntu2 + xbitmaps: 1.1.1-2 + xdg-user-dirs: 0.15-2ubuntu6 + xkb-data: 2.16-1ubuntu1 + xml-core: 0.13+nmu2 + xterm: 322-1ubuntu1 + xz-utils: 5.1.1alpha+20120614-2ubuntu2 + zlib1g:amd64: 1:1.2.8.dfsg-2ubuntu4 + zlib1g-dev:amd64: 1:1.2.8.dfsg-2ubuntu4 **Kernel module listing** diff --git a/docs/report/introduction/csit_design.png b/docs/report/introduction/csit_design.png deleted file mode 100644 index 175c2f597a4917abb95345f344f82f4c9f2b896b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106902 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/report/vpp_performance_tests/packet_latency_graphs/ip4.rst b/docs/report/vpp_performance_tests/packet_latency_graphs/ip4.rst index 84255092b4..48bdf5e17e 100644 --- a/docs/report/vpp_performance_tests/packet_latency_graphs/ip4.rst +++ b/docs/report/vpp_performance_tests/packet_latency_graphs/ip4.rst @@ -13,13 +13,31 @@ VPP packet latency in 1t1c setup (1thread, 1core) is presented in the graph belo +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-ethip4-ip4-ndrdisc-lat50} + \label{fig:64B-1t1c-ethip4-ip4-ndrdisc-lat50} + \end{figure} + *Figure 1. VPP 1thread 1core - packet latency for Phy-to-Phy IPv4 Routed-Forwarding.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4 && grep -P '64B-1t1c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-ndrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4 && grep -P '64B-1t1c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-ndrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip4 + $ grep -P '64B-1t1c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-ndrdisc' * VPP packet latency in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -27,10 +45,28 @@ VPP packet latency in 2t2c setup (2thread, 2core) is presented in the graph belo +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-ethip4-ip4-ndrdisc-lat50} + \label{fig:64B-2t2c-ethip4-ip4-ndrdisc-lat50} + \end{figure} + *Figure 2. VPP 2threads 2cores - packet latency for Phy-to-Phy IPv4 Routed-Forwarding.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4 && grep -P '64B-2t2c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-ndrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4 && grep -P '64B-2t2c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-ndrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip4 + $ grep -P '64B-2t2c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-ndrdisc' * diff --git a/docs/report/vpp_performance_tests/packet_latency_graphs/ip4_tunnels.rst b/docs/report/vpp_performance_tests/packet_latency_graphs/ip4_tunnels.rst index f9b0b5c7cb..68489922b1 100644 --- a/docs/report/vpp_performance_tests/packet_latency_graphs/ip4_tunnels.rst +++ b/docs/report/vpp_performance_tests/packet_latency_graphs/ip4_tunnels.rst @@ -13,13 +13,31 @@ VPP packet latency in 1t1c setup (1thread, 1core) is presented in the graph belo +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-ethip4-ndrdisc-lat50} + \label{fig:64B-1t1c-ethip4-ndrdisc-lat50} + \end{figure} + *Figure 1. VPP 1thread 1core - packet latency for Phy-to-Phy IPv4 Overlay Tunnels.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4_tunnels && grep -E "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4_tunnels && grep -E "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip4_tunnels + $ grep -E "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" * VPP packet latency in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -27,10 +45,28 @@ VPP packet latency in 2t2c setup (2thread, 2core) is presented in the graph belo +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-ethip4-ndrdisc-lat50} + \label{fig:64B-2t2c-ethip4-ndrdisc-lat50} + \end{figure} + *Figure 2. VPP 2threads 2cores - packet latency for Phy-to-Phy IPv4 Overlay Tunnels.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4_tunnels && grep -E "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4_tunnels && grep -E "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip4_tunnels + $ grep -E "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" * diff --git a/docs/report/vpp_performance_tests/packet_latency_graphs/ip6.rst b/docs/report/vpp_performance_tests/packet_latency_graphs/ip6.rst index cd4dcad121..1a82aac084 100644 --- a/docs/report/vpp_performance_tests/packet_latency_graphs/ip6.rst +++ b/docs/report/vpp_performance_tests/packet_latency_graphs/ip6.rst @@ -13,13 +13,31 @@ VPP packet latency in 1t1c setup (1thread, 1core) is presented in the graph belo +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{78B-1t1c-ethip6-ip6-ndrdisc-lat50} + \label{fig:78B-1t1c-ethip6-ip6-ndrdisc-lat50} + \end{figure} + *Figure 1. VPP 1thread 1core - packet latency for Phy-to-Phy IPv6 Routed-Forwarding.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6 && grep -E "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6 && grep -E "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip6 + $ grep -E "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" * VPP packet latency in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -27,10 +45,28 @@ VPP packet latency in 2t2c setup (2thread, 2core) is presented in the graph belo +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{78B-2t2c-ethip6-ip6-ndrdisc-lat50} + \label{fig:78B-2t2c-ethip6-ip6-ndrdisc-lat50} + \end{figure} + *Figure 2. VPP 2threads 2cores - packet latency for Phy-to-Phy IPv6 Routed-Forwarding.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6 && grep -E "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6 && grep -E "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip6 + $ grep -E "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" * diff --git a/docs/report/vpp_performance_tests/packet_latency_graphs/ip6_tunnels.rst b/docs/report/vpp_performance_tests/packet_latency_graphs/ip6_tunnels.rst index aaa942a8ff..a2fdef9bcb 100644 --- a/docs/report/vpp_performance_tests/packet_latency_graphs/ip6_tunnels.rst +++ b/docs/report/vpp_performance_tests/packet_latency_graphs/ip6_tunnels.rst @@ -13,13 +13,31 @@ VPP packet latency in 1t1c setup (1thread, 1core) is presented in the graph belo +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{78B-1t1c-ethip6-ndrdisc-lat50} + \label{fig:78B-1t1c-ethip6-ndrdisc-lat50} + \end{figure} + *Figure 1. VPP 1thread 1core - packet latency for Phy-to-Phy IPv6 Overlay Tunnels.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6_tunnels && grep -E "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6_tunnels && grep -E "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip6_tunnels + $ grep -E "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" * VPP packet latency in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -27,10 +45,29 @@ VPP packet latency in 2t2c setup (2thread, 2core) is presented in the graph belo +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{78B-2t2c-ethip6-ndrdisc-lat50} + \label{fig:78B-2t2c-ethip6-ndrdisc-lat50} + \end{figure} + *Figure 2. VPP 2threads 2cores - packet latency for Phy-to-Phy IPv6 Overlay Tunnels.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6_tunnels && grep -E "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6_tunnels && grep -E "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip6_tunnels + $ grep -E "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" * + diff --git a/docs/report/vpp_performance_tests/packet_latency_graphs/ipsec.rst b/docs/report/vpp_performance_tests/packet_latency_graphs/ipsec.rst index e11dce2088..d25d56134b 100644 --- a/docs/report/vpp_performance_tests/packet_latency_graphs/ipsec.rst +++ b/docs/report/vpp_performance_tests/packet_latency_graphs/ipsec.rst @@ -17,13 +17,31 @@ below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-ipsechw-ndrdisc-lat50} + \label{fig:64B-1t1c-ipsechw-ndrdisc-lat50} + \end{figure} + *Figure 1. VPP 1thread 1core - packet latency for Phy-to-Phy IPSec HW with IPv4 Routed-Forwarding.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/crypto && grep -E "64B-1t1c-.*ipsec.*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/crypto && grep -E "64B-1t1c-.*ipsec.*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/crypto + $ grep -E "64B-1t1c-.*ipsec.*-ndrdisc" * VPP packet latency in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -31,11 +49,28 @@ VPP packet latency in 2t2c setup (2thread, 2core) is presented in the graph belo +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-ipsechw-ndrdisc-lat50} + \label{fig:64B-2t2c-ipsechw-ndrdisc-lat50} + \end{figure} + *Figure 2. VPP 2threads 2cores - packet latency for Phy-to-Phy IPSec HW with IPv4 Routed-Forwarding.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/crypto && grep -E "64B-2t2c-.*ipsec.*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/crypto && grep -E "64B-2t2c-.*ipsec.*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + $ cd tests/vpp/perf/crypto + $ grep -E "64B-2t2c-.*ipsec.*-ndrdisc" * diff --git a/docs/report/vpp_performance_tests/packet_latency_graphs/l2.rst b/docs/report/vpp_performance_tests/packet_latency_graphs/l2.rst index 508d33c43a..8c340eb969 100644 --- a/docs/report/vpp_performance_tests/packet_latency_graphs/l2.rst +++ b/docs/report/vpp_performance_tests/packet_latency_graphs/l2.rst @@ -13,6 +13,15 @@ VPP packet latency in 1t1c setup (1thread, 1core) is presented in the graph belo +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-l2-sel1-ndrdisc-lat50} + \label{fig:64B-1t1c-l2-sel1-ndrdisc-lat50} + \end{figure} + *Figure 1a. VPP 1thread 1core - packet latency for Phy-to-Phy L2 Ethernet Switching (base).* @@ -20,14 +29,32 @@ Switching (base).* +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-l2-sel2-ndrdisc-lat50} + \label{fig:64B-1t1c-l2-sel2-ndrdisc-lat50.html} + \end{figure} + *Figure 1b. VPP 1thread 1core - packet latency for Phy-to-Phy L2 Ethernet Switching (feature).* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/l2 && grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/l2 && grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/l2 + $ grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*ndrdisc" * VPP packet latency in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -35,6 +62,15 @@ VPP packet latency in 2t2c setup (2thread, 2core) is presented in the graph belo +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-l2-sel1-ndrdisc-lat50} + \label{fig:64B-2t2c-l2-sel1-ndrdisc-lat50} + \end{figure} + *Figure 2a. VPP 2threads 2cores - packet latency for Phy-to-Phy L2 Ethernet Switching (base).* @@ -42,12 +78,29 @@ Switching (base).* +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-l2-sel2-ndrdisc-lat50} + \label{fig:64B-2t2c-l2-sel2-ndrdisc-lat50} + \end{figure} + *Figure 2b. VPP 2threads 2cores - packet latency for Phy-to-Phy L2 Ethernet Switching (feature).* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/l2 && grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/l2 && grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + $ cd tests/vpp/perf/l2 + $ grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*ndrdisc" * diff --git a/docs/report/vpp_performance_tests/packet_latency_graphs/vm_vhost.rst b/docs/report/vpp_performance_tests/packet_latency_graphs/vm_vhost.rst index 3987e8c86e..82eb37b3a9 100644 --- a/docs/report/vpp_performance_tests/packet_latency_graphs/vm_vhost.rst +++ b/docs/report/vpp_performance_tests/packet_latency_graphs/vm_vhost.rst @@ -14,6 +14,15 @@ VPP packet latency in 1t1c setup (1thread, 1core) is presented in the graph belo +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-vhost-sel1-ndrdisc-lat50} + \label{fig:64B-1t1c-vhost-sel1-ndrdisc-lat50} + \end{figure} + *Figure 1a. VPP 1thread 1core - packet latency for Phy-to-VM-to-Phy VM vhost-user selected TCs (ipv4).* @@ -21,14 +30,32 @@ vhost-user selected TCs (ipv4).* +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-vhost-sel2-ndrdisc-lat50} + \label{fig:64B-1t1c-vhost-sel2-ndrdisc-lat50} + \end{figure} + *Figure 1b. VPP 1thread 1core - packet latency for Phy-to-VM-to-Phy VM vhost-user selected TCs (l2).* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/vm_vhost && grep -E "64B-1t1c-.*vhost.*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/vm_vhost && grep -E "64B-1t1c-.*vhost.*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/vm_vhost + $ grep -E "64B-1t1c-.*vhost.*-ndrdisc" * VPP packet latency in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -36,6 +63,15 @@ VPP packet latency in 2t2c setup (2thread, 2core) is presented in the graph belo +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-vhost-sel1-ndrdisc-lat50} + \label{fig:64B-2t2c-vhost-sel1-ndrdisc-lat50} + \end{figure} + *Figure 2a. VPP 2threads 2cores - packet latency for Phy-to-VM-to-Phy VM vhost-user selected TCs (ipv4).* @@ -43,11 +79,29 @@ vhost-user selected TCs (ipv4).* +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-vhost-sel2-ndrdisc-lat50} + \label{fig:64B-2t2c-vhost-sel2-ndrdisc-lat50} + \end{figure} + *Figure 2b. VPP 2threads 2cores - packet latency for Phy-to-VM-to-Phy VM vhost-user selected TCs (l2).* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/vm_vhost && grep -E "64B-2t2c-.*vhost.*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/vm_vhost && grep -E "64B-2t2c-.*vhost.*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/vm_vhost + $ grep -E "64B-2t2c-.*vhost.*-ndrdisc" * diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4.rst index 5f35db1248..6596f69e71 100644 --- a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4.rst +++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4.rst @@ -17,13 +17,31 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-ethip4-ip4-ndrdisc} + \label{fig:64B-1t1c-ethip4-ip4-ndrdisc} + \end{figure} + *Figure 1. VPP 1thread 1core - NDR Throughput for Phy-to-Phy IPv4 Routed-Forwarding.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4 && grep -P '64B-1t1c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-ndrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4 && grep -P '64B-1t1c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-ndrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip4 + $ grep -P '64B-1t1c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-ndrdisc' * VPP NDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -32,14 +50,32 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-ethip4-ip4-ndrdisc} + \label{fig:64B-2t2c-ethip4-ip4-ndrdisc} + \end{figure} + *Figure 2. VPP 2threads 2cores - NDR Throughput for Phy-to-Phy IPv4 Routed-Forwarding.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4 && grep -P '64B-2t2c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-ndrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4 && grep -P '64B-2t2c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-ndrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip4 + $ grep -P '64B-2t2c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-ndrdisc' * PDR Throughput ~~~~~~~~~~~~~~ @@ -51,14 +87,32 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-ethip4-ip4-pdrdisc} + \label{fig:64B-1t1c-ethip4-ip4-pdrdisc} + \end{figure} + *Figure 3. VPP 1thread 1core - PDR Throughput for Phy-to-Phy IPv4 Routed-Forwarding.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4 && grep -P '64B-1t1c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-pdrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4 && grep -P '64B-1t1c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-pdrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip4 + $ grep -P '64B-1t1c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-pdrdisc' * VPP PDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. PDR measured for 0.5% packet loss ratio. @@ -67,12 +121,29 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-ethip4-ip4-pdrdisc} + \label{fig:64B-2t2c-ethip4-ip4-pdrdisc} + \end{figure} + *Figure 4. VPP 2thread 2core - PDR Throughput for Phy-to-Phy IPv4 Routed-Forwarding.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4 && grep -P '64B-2t2c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-pdrdisc' * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4 && grep -P '64B-2t2c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-pdrdisc' * + :shell: + +.. only:: latex + + .. code-block:: bash + $ cd tests/vpp/perf/ip4 + $ grep -P '64B-2t2c-ethip4(udp)*-ip4(base|scale[a-z0-9]*)(-iacl50-state(ful|less)-flows10k.*|-oacl50-state(ful|less)-flows10k.*|-snat.*|-udp.*|-cop.*|-iacldst.*|-ipolice.*)*-pdrdisc' * diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4_tunnels.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4_tunnels.rst index 43fef1a20c..71dc06e9b3 100644 --- a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4_tunnels.rst +++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip4_tunnels.rst @@ -17,14 +17,32 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-ethip4-ndrdisc} + \label{fig:64B-1t1c-ethip4-ndrdisc} + \end{figure} + *Figure 1. VPP 1thread 1core - NDR Throughput for Phy-to-Phy IPv4 Overlay Tunnels.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4_tunnels && grep -E "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4_tunnels && grep -E "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip4_tunnels + $ grep -E "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" * VPP NDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -33,13 +51,31 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-ethip4-ndrdisc} + \label{fig:64B-2t2c-ethip4-ndrdisc} + \end{figure} + *Figure 2. VPP 2threads 2cores - NDR Throughput for Phy-to-Phy IPv4 Overlay Tunnels.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4_tunnels && grep -E "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4_tunnels && grep -E "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip4_tunnels + $ grep -E "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" * PDR Throughput ~~~~~~~~~~~~~~ @@ -51,14 +87,32 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-ethip4-pdrdisc} + \label{fig:64B-1t1c-ethip4-pdrdisc} + \end{figure} + *Figure 3. VPP 1thread 1core - PDR Throughput for Phy-to-Phy IPv4 Overlay Tunnels.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4_tunnels && grep -E "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4_tunnels && grep -E "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip4_tunnels + $ grep -E "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" * VPP PDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. PDR measured for 0.5% packet loss ratio. @@ -67,11 +121,28 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-ethip4-pdrdisc} + \label{fig:64B-2t2c-ethip4-pdrdisc} + \end{figure} + *Figure 4. VPP 2thread 2core - PDR Throughput for Phy-to-Phy IPv4 Overlay Tunnels.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4_tunnels && grep -E "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip4_tunnels && grep -E "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + $ cd tests/vpp/perf/ip4_tunnels + $ grep -E "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" * diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6.rst index 9a756f6d42..959559c407 100644 --- a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6.rst +++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6.rst @@ -17,14 +17,32 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{78B-1t1c-ethip6-ip6-ndrdisc} + \label{fig:78B-1t1c-ethip6-ip6-ndrdisc} + \end{figure} + *Figure 1. VPP 1thread 1core - NDR Throughput for Phy-to-Phy IPv6 Routed-Forwarding.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6 && grep -E "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6 && grep -E "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip6 + $ grep -E "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" * VPP NDR 78B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -33,14 +51,32 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{78B-2t2c-ethip6-ip6-ndrdisc} + \label{fig:78B-2t2c-ethip6-ip6-ndrdisc} + \end{figure} + *Figure 2. VPP 2threads 2cores - NDR Throughput for Phy-to-Phy IPv6 Routed-Forwarding.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6 && grep -E "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6 && grep -E "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip6 + $ grep -E "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" * PDR Throughput ~~~~~~~~~~~~~~ @@ -52,14 +88,32 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{78B-1t1c-ethip6-ip6-pdrdisc} + \label{fig:78B-1t1c-ethip6-ip6-pdrdisc} + \end{figure} + *Figure 3. VPP 1thread 1core - PDR Throughput for Phy-to-Phy IPv6 Routed-Forwarding.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6 && grep -E "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6 && grep -E "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip6 + $ grep -E "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" * VPP PDR 78B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. PDR measured for 0.5% packet loss ratio. @@ -68,11 +122,29 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{78B-2t2c-ethip6-ip6-pdrdisc} + \label{fig:78B-2t2c-ethip6-ip6-pdrdisc} + \end{figure} + *Figure 4. VPP 2thread 2core - PDR Throughput for Phy-to-Phy IPv6 Routed-Forwarding.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6 && grep -E "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6 && grep -E "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip6 + $ grep -E "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" * diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6_tunnels.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6_tunnels.rst index ca38658430..fa37b85155 100644 --- a/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6_tunnels.rst +++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/ip6_tunnels.rst @@ -17,14 +17,32 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{78B-1t1c-ethip6-ndrdisc} + \label{fig:78B-1t1c-ethip6-ndrdisc} + \end{figure} + *Figure 1. VPP 1thread 1core - NDR Throughput for Phy-to-Phy IPv6 Overlay Tunnels.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6_tunnels && grep -E "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6_tunnels && grep -E "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip6_tunnels + $ grep -E "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" * VPP NDR 78B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -33,14 +51,32 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{78B-2t2c-ethip6-ndrdisc} + \label{fig:78B-2t2c-ethip6-ndrdisc} + \end{figure} + *Figure 2. VPP 2threads 2cores - NDR Throughput for Phy-to-Phy IPv6 Overlay Tunnels.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6_tunnels && grep -E "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6_tunnels && grep -E "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip6_tunnels + $ grep -E "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" * PDR Throughput ~~~~~~~~~~~~~~ @@ -52,14 +88,32 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{78B-1t1c-ethip6-pdrdisc} + \label{fig:78B-1t1c-ethip6-pdrdisc} + \end{figure} + *Figure 3. VPP 1thread 1core - PDR Throughput for Phy-to-Phy IPv6 Overlay Tunnels.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6_tunnels && grep -E "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6_tunnels && grep -E "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip6_tunnels + $ grep -E "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" * VPP PDR 78B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. PDR measured for 0.5% packet loss ratio. @@ -68,11 +122,29 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{78B-2t2c-ethip6-pdrdisc} + \label{fig:78B-2t2c-ethip6-pdrdisc} + \end{figure} + *Figure 4. VPP 2thread 2core - PDR Throughput for Phy-to-Phy IPv6 Overlay Tunnels.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6_tunnels && grep -E "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/ip6_tunnels && grep -E "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/ip6_tunnels + $ grep -E "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" * diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/ipsec.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/ipsec.rst index eba3a40e87..b59a521227 100644 --- a/docs/report/vpp_performance_tests/packet_throughput_graphs/ipsec.rst +++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/ipsec.rst @@ -20,13 +20,31 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-ipsechw-ndrdisc} + \label{fig:64B-1t1c-ipsechw-ndrdisc} + \end{figure} + *Figure 1. VPP 1thread 1core - NDR Throughput for Phy-to-Phy IPSEC HW.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/crypto && grep -E "64B-1t1c-.*ipsec.*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/crypto && grep -E "64B-1t1c-.*ipsec.*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/crypto + $ grep -E "64B-1t1c-.*ipsec.*-ndrdisc" * VPP NDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -35,13 +53,31 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-ipsechw-ndrdisc} + \label{fig:64B-2t2c-ipsechw-ndrdisc} + \end{figure} + *Figure 2. VPP 2threads 2cores - NDR Throughput for Phy-to-Phy IPSEC HW.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/crypto && grep -E "64B-2t2c-.*ipsec.*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/crypto && grep -E "64B-2t2c-.*ipsec.*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/crypto + $ grep -E "64B-2t2c-.*ipsec.*-ndrdisc" * PDR Throughput ~~~~~~~~~~~~~~ @@ -53,13 +89,31 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-ipsechw-pdrdisc} + \label{fig:64B-1t1c-ipsechw-pdrdisc} + \end{figure} + *Figure 3. VPP 1thread 1core - PDR Throughput for Phy-to-Phy IPSEC HW.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/crypto && grep -E "64B-1t1c-.*ipsec.*-pdrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/crypto && grep -E "64B-1t1c-.*ipsec.*-pdrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/crypto + $ grep -E "64B-1t1c-.*ipsec.*-pdrdisc" * VPP PDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. PDR measured for 0.5% packet loss ratio. @@ -68,10 +122,28 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-ipsechw-pdrdisc} + \label{fig:64B-2t2c-ipsechw-pdrdisc} + \end{figure} + *Figure 4. VPP 2thread 2core - PDR Throughput for Phy-to-Phy IPSEC HW.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/crypto && grep -E "64B-2t2c-.*ipsec.*-pdrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/crypto && grep -E "64B-2t2c-.*ipsec.*-pdrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/crypto + $ grep -E "64B-2t2c-.*ipsec.*-pdrdisc" * diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/l2.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/l2.rst index 47e3400840..46c9500a11 100644 --- a/docs/report/vpp_performance_tests/packet_throughput_graphs/l2.rst +++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/l2.rst @@ -17,6 +17,15 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-l2-sel1-ndrdisc} + \label{fig:64B-1t1c-l2-sel1-ndrdisc} + \end{figure} + *Figure 1a. VPP 1thread 1core - NDR Throughput for Phy-to-Phy L2 Ethernet Switching (base).* @@ -24,14 +33,32 @@ Switching (base).* +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-l2-sel2-ndrdisc} + \label{fig:64B-1t1c-l2-sel2-ndrdisc} + \end{figure} + *Figure 1b. VPP 1thread 1core - NDR Throughput for Phy-to-Phy L2 Ethernet Switching (feature).* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/l2 && grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/l2 && grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/l2 + $ grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*ndrdisc" * VPP NDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -40,6 +67,15 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-l2-sel1-ndrdisc} + \label{fig:64B-2t2c-l2-sel1-ndrdisc} + \end{figure} + *Figure 2a. VPP 2threads 2cores - NDR Throughput for Phy-to-Phy L2 Ethernet Switching (base).* @@ -47,14 +83,33 @@ Switching (base).* +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-l2-sel2-ndrdisc} + \label{fig:64B-2t2c-l2-sel2-ndrdisc} + \end{figure} + *Figure 2b. VPP 2threads 2cores - NDR Throughput for Phy-to-Phy L2 Ethernet Switching (feature).* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/l2 && grep -E "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/l2 && grep -E "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/l2 + $ grep -E "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*ndrdisc" * + PDR Throughput ~~~~~~~~~~~~~~ @@ -66,6 +121,15 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-l2-sel1-pdrdisc} + \label{fig:64B-1t1c-l2-sel1-pdrdisc} + \end{figure} + *Figure 3a. VPP 1thread 1core - PDR Throughput for Phy-to-Phy L2 Ethernet Switching (base).* @@ -73,14 +137,32 @@ Switching (base).* +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-l2-sel2-pdrdisc} + \label{fig:64B-1t1c-l2-sel2-pdrdisc} + \end{figure} + *Figure 3b. VPP 1thread 1core - PDR Throughput for Phy-to-Phy L2 Ethernet Switching (feature).* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/l2 && grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*pdrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/l2 && grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*pdrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/l2 + $ grep -E "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-(iacl50-state(ful|less)-flows10k.*|oacl50-state(ful|less)-flows10k.*|eth.*)*pdrdisc" * VPP PDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. PDR measured for 0.5% packet loss ratio. @@ -89,6 +171,15 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-l2-sel1-pdrdisc} + \label{fig:64B-2t2c-l2-sel1-pdrdisc} + \end{figure} + *Figure 4a. VPP 2thread 2core - PDR Throughput for Phy-to-Phy L2 Ethernet Switching (base).* @@ -96,5 +187,14 @@ Switching (base).* +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-l2-sel2-pdrdisc} + \label{fig:64B-2t2c-l2-sel2-pdrdisc} + \end{figure} + *Figure 4b. VPP 2thread 2core - PDR Throughput for Phy-to-Phy L2 Ethernet Switching (feature).* diff --git a/docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost.rst b/docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost.rst index bd1ef791a3..952e37cb69 100644 --- a/docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost.rst +++ b/docs/report/vpp_performance_tests/packet_throughput_graphs/vm_vhost.rst @@ -18,6 +18,15 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-vhost-sel1-ndrdisc} + \label{fig:64B-1t1c-vhost-sel1-ndrdisc} + \end{figure} + *Figure 1a. VPP 1thread 1core - NDR Throughput for Phy-to-VM-to-Phy VM vhost-user selected TCs.* @@ -25,14 +34,32 @@ selected TCs.* +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-vhost-sel2-ndrdisc} + \label{fig:64B-1t1c-vhost-sel2-ndrdisc} + \end{figure} + *Figure 1b. VPP 1thread 1core - NDR Throughput for Phy-to-VM-to-Phy VM vhost-user selected TCs.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/vm_vhost && grep -E "64B-1t1c-.*vhost.*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/vm_vhost && grep -E "64B-1t1c-.*vhost.*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/vm_vhost + $ grep -E "64B-1t1c-.*vhost.*-ndrdisc" * VPP NDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. @@ -41,6 +68,15 @@ in the graph below. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-vhost-sel1-ndrdisc} + \label{fig:64B-2t2c-vhost-sel1-ndrdisc} + \end{figure} + *Figure 2a. VPP 2threads 2cores - NDR Throughput for Phy-to-VM-to-Phy VM vhost-user selected TCs.* @@ -48,14 +84,32 @@ vhost-user selected TCs.* +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-vhost-sel2-ndrdisc} + \label{fig:64B-2t2c-vhost-sel2-ndrdisc} + \end{figure} + *Figure 2b. VPP 2threads 2cores - NDR Throughput for Phy-to-VM-to-Phy VM vhost-user selected TCs.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/vm_vhost && grep -E "64B-2t2c-.*vhost.*-ndrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/vm_vhost && grep -E "64B-2t2c-.*vhost.*-ndrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/vm_vhost + $ grep -E "64B-2t2c-.*vhost.*-ndrdisc" * PDR Throughput ~~~~~~~~~~~~~~ @@ -67,6 +121,15 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-vhost-sel1-pdrdisc} + \label{fig:64B-1t1c-vhost-sel1-pdrdisc} + \end{figure} + *Figure 3a. VPP 1thread 1core - PDR Throughput for Phy-to-VM-to-Phy VM vhost-user selected TCs.* @@ -74,14 +137,32 @@ vhost-user selected TCs.* +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-1t1c-vhost-sel2-pdrdisc} + \label{fig:64B-1t1c-vhost-sel2-pdrdisc} + \end{figure} + *Figure 3b. VPP 1thread 1core - PDR Throughput for Phy-to-VM-to-Phy VM vhost-user selected TCs.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/vm_vhost && grep -E "64B-1t1c-.*vhost.*-pdrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/vm_vhost && grep -E "64B-1t1c-.*vhost.*-pdrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/vm_vhost + $ grep -E "64B-1t1c-.*vhost.*-pdrdisc" * VPP PDR 64B packet throughput in 2t2c setup (2thread, 2core) is presented in the graph below. PDR measured for 0.5% packet loss ratio. @@ -90,6 +171,15 @@ in the graph below. PDR measured for 0.5% packet loss ratio. +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-vhost-sel1-pdrdisc} + \label{fig:64B-2t2c-vhost-sel1-pdrdisc} + \end{figure} + *Figure 4a. VPP 2thread 2core - PDR Throughput for Phy-to-VM-to-Phy VM vhost-user selected TCs.* @@ -97,11 +187,29 @@ vhost-user selected TCs.* +.. raw:: latex + + \begin{figure}[H] + \centering + \graphicspath{{../_build/_static/vpp/}} + \includegraphics[clip, trim=0cm 8cm 5cm 0cm, width=0.70\textwidth]{64B-2t2c-vhost-sel2-pdrdisc} + \label{fig:64B-2t2c-vhost-sel2-pdrdisc} + \end{figure} + *Figure 4b. VPP 2thread 2core - PDR Throughput for Phy-to-VM-to-Phy VM vhost-user selected TCs.* CSIT source code for the test cases used for above plots can be found in CSIT git repository: -.. program-output:: cd ../../ && set -x && cd tests/vpp/perf/vm_vhost && grep -E "64B-2t2c-.*vhost.*-pdrdisc" * - :shell: +.. only:: html + + .. program-output:: cd ../../ && set -x && cd tests/vpp/perf/vm_vhost && grep -E "64B-2t2c-.*vhost.*-pdrdisc" * + :shell: + +.. only:: latex + + .. code-block:: bash + + $ cd tests/vpp/perf/vm_vhost + $ grep -E "64B-2t2c-.*vhost.*-pdrdisc" * diff --git a/docs/report/vpp_performance_tests/test_environment.rst b/docs/report/vpp_performance_tests/test_environment.rst index 20ea77f31a..ffc47fc558 100644 --- a/docs/report/vpp_performance_tests/test_environment.rst +++ b/docs/report/vpp_performance_tests/test_environment.rst @@ -320,538 +320,539 @@ Below a subset of the running configuration: :: - $ dpkg -l - Desired=Unknown/Install/Remove/Purge/Hold - | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend - |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) - ||/ Name Version Architecture Description - +++-=================================================================-=====================================-=====================================-======================================================================================================================================== - ii accountsservice 0.6.40-2ubuntu11.1 amd64 query and manipulate user account information - ii acl 2.2.52-3 amd64 Access control list utilities - ii adduser 3.113+nmu3ubuntu4 all add and remove users and groups - ii apparmor 2.10.95-0ubuntu2.6 amd64 user-space parser utility for AppArmor - ii apt 1.2.12~ubuntu16.04.1 amd64 commandline package manager - ii apt-utils 1.2.12~ubuntu16.04.1 amd64 package management related utility programs - ii autoconf 2.69-9 all automatic configure script builder - ii automake 1:1.15-4ubuntu1 all Tool for generating GNU Standards-compliant Makefiles - ii autotools-dev 20150820.1 all Update infrastructure for config.{guess,sub} files - ii base-files 9.4ubuntu4.2 amd64 Debian base system miscellaneous files - ii base-passwd 3.5.39 amd64 Debian base system master password and group files - ii bash 4.3-14ubuntu1.1 amd64 GNU Bourne Again SHell - ii binutils 2.26.1-1ubuntu1~16.04.3 amd64 GNU assembler, linker and binary utilities - ii bridge-utils 1.5-9ubuntu1 amd64 Utilities for configuring the Linux Ethernet bridge - ii bsdutils 1:2.27.1-6ubuntu3.1 amd64 basic utilities from 4.4BSD-Lite - ii build-essential 12.1ubuntu2 amd64 Informational list of build-essential packages - ii busybox-initramfs 1:1.22.0-15ubuntu1 amd64 Standalone shell setup for initramfs - ii busybox-static 1:1.22.0-15ubuntu1 amd64 Standalone rescue shell with tons of builtin utilities - ii bzip2 1.0.6-8 amd64 high-quality block-sorting file compressor - utilities - ii ca-certificates 20160104ubuntu1 all Common CA certificates - ii ca-certificates-java 20160321 all Common CA certificates (JKS keystore) - ii cgroup-bin 0.41-7ubuntu1 all control and monitor control groups (transitional package) - ii cgroup-lite 1.11 all Light-weight package to set up cgroups at system boot - ii cgroup-tools 0.41-7ubuntu1 amd64 control and monitor control groups (tools) - ii cloud-image-utils 0.27-0ubuntu24 all cloud image management utilities - ii console-setup 1.108ubuntu15.2 all console font and keymap setup program - ii console-setup-linux 1.108ubuntu15.2 all Linux specific part of console-setup - ii coreutils 8.25-2ubuntu2 amd64 GNU core utilities - ii cpio 2.11+dfsg-5ubuntu1 amd64 GNU cpio -- a program to manage archives of files - ii cpp 4:5.3.1-1ubuntu1 amd64 GNU C preprocessor (cpp) - ii cpp-5 5.4.0-6ubuntu1~16.04.2 amd64 GNU C preprocessor - ii cpu-checker 0.7-0ubuntu7 amd64 tools to help evaluate certain CPU (or BIOS) features - ii cpufrequtils 008-1 amd64 utilities to deal with the cpufreq Linux kernel feature - ii crda 3.13-1 amd64 wireless Central Regulatory Domain Agent - ii cron 3.0pl1-128ubuntu2 amd64 process scheduling daemon - ii crudini 0.7-1 amd64 utility for manipulating ini files - ii dash 0.5.8-2.1ubuntu2 amd64 POSIX-compliant shell - ii dbus 1.10.6-1ubuntu3 amd64 simple interprocess messaging system (daemon and utilities) - ii debconf 1.5.58ubuntu1 all Debian configuration management system - ii debconf-i18n 1.5.58ubuntu1 all full internationalization support for debconf - ii debianutils 4.7 amd64 Miscellaneous utilities specific to Debian - ii debootstrap 1.0.78+nmu1ubuntu1.3 all Bootstrap a basic Debian system - ii dh-python 2.20151103ubuntu1.1 all Debian helper tools for packaging Python libraries and applications - ii diffutils 1:3.3-3 amd64 File comparison utilities - ii distro-info 0.14build1 amd64 provides information about the distributions' releases - ii distro-info-data 0.28ubuntu0.1 all information about the distributions' releases (data files) - ii dkms 2.2.0.3-2ubuntu11.2 all Dynamic Kernel Module Support Framework - ii dmidecode 3.0-2ubuntu0.1 amd64 SMBIOS/DMI table decoder - ii dns-root-data 2015052300+h+1 all DNS root data including root zone and DNSSEC key - ii dnsmasq-base 2.75-1ubuntu0.16.04.2 amd64 Small caching DNS proxy and DHCP/TFTP server - ii dpkg 1.18.4ubuntu1.1 amd64 Debian package management system - ii dpkg-dev 1.18.4ubuntu1.1 all Debian package development tools - ii e2fslibs:amd64 1.42.13-1ubuntu1 amd64 ext2/ext3/ext4 file system libraries - ii e2fsprogs 1.42.13-1ubuntu1 amd64 ext2/ext3/ext4 file system utilities - ii eject 2.1.5+deb1+cvs20081104-13.1 amd64 ejects CDs and operates CD-Changers under Linux - ii expect 5.45-7 amd64 Automates interactive applications - ii fakeroot 1.20.2-1ubuntu1 amd64 tool for simulating superuser privileges - ii file 1:5.25-2ubuntu1 amd64 Determines file type using "magic" numbers - ii findutils 4.6.0+git+20160126-2 amd64 utilities for finding files--find, xargs - ii fontconfig-config 2.11.94-0ubuntu1.1 all generic font configuration library - configuration - ii fonts-dejavu-core 2.35-1 all Vera font family derivate with additional characters - ii g++ 4:5.3.1-1ubuntu1 amd64 GNU C++ compiler - ii g++-5 5.4.0-6ubuntu1~16.04.2 amd64 GNU C++ compiler - ii gcc 4:5.3.1-1ubuntu1 amd64 GNU C compiler - ii gcc-5 5.4.0-6ubuntu1~16.04.2 amd64 GNU C compiler - ii gcc-5-base:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GCC, the GNU Compiler Collection (base package) - ii gcc-6-base:amd64 6.0.1-0ubuntu1 amd64 GCC, the GNU Compiler Collection (base package) - ii genisoimage 9:1.1.11-3ubuntu1 amd64 Creates ISO-9660 CD-ROM filesystem images - ii gettext-base 0.19.7-2ubuntu3 amd64 GNU Internationalization utilities for the base system - ii gir1.2-glib-2.0:amd64 1.46.0-3ubuntu1 amd64 Introspection data for GLib, GObject, Gio and GModule - ii git 1:2.7.4-0ubuntu1 amd64 fast, scalable, distributed revision control system - ii git-man 1:2.7.4-0ubuntu1 all fast, scalable, distributed revision control system (manual pages) - ii gnupg 1.4.20-1ubuntu3.1 amd64 GNU privacy guard - a free PGP replacement - ii gpgv 1.4.20-1ubuntu3.1 amd64 GNU privacy guard - signature verification tool - ii grep 2.25-1~16.04.1 amd64 GNU grep, egrep and fgrep - ii grub-common 2.02~beta2-36ubuntu3.1 amd64 GRand Unified Bootloader (common files) - ii grub-gfxpayload-lists 0.7 amd64 GRUB gfxpayload blacklist - ii grub-pc 2.02~beta2-36ubuntu3.1 amd64 GRand Unified Bootloader, version 2 (PC/BIOS version) - ii grub-pc-bin 2.02~beta2-36ubuntu3.1 amd64 GRand Unified Bootloader, version 2 (PC/BIOS binaries) - ii grub2-common 2.02~beta2-36ubuntu3.1 amd64 GRand Unified Bootloader (common files for version 2) - ii gzip 1.6-4ubuntu1 amd64 GNU compression utilities - ii hostname 3.16ubuntu2 amd64 utility to set/show the host name or domain name - ii ifupdown 0.8.10ubuntu1 amd64 high level tools to configure network interfaces - ii init 1.29ubuntu2 amd64 System-V-like init utilities - metapackage - ii init-system-helpers 1.29ubuntu2 all helper tools for all init systems - ii initramfs-tools 0.122ubuntu8.1 all generic modular initramfs generator (automation) - ii initramfs-tools-bin 0.122ubuntu8.1 amd64 binaries used by initramfs-tools - ii initramfs-tools-core 0.122ubuntu8.1 all generic modular initramfs generator (core tools) - ii initscripts 2.88dsf-59.3ubuntu2 amd64 scripts for initializing and shutting down the system - ii insserv 1.14.0-5ubuntu3 amd64 boot sequence organizer using LSB init.d script dependency information - ii installation-report 2.60ubuntu1 all system installation report - ii iproute2 4.3.0-1ubuntu3 amd64 networking and traffic control tools - ii iptables 1.6.0-2ubuntu3 amd64 administration tools for packet filtering and NAT - ii iputils-ping 3:20121221-5ubuntu2 amd64 Tools to test the reachability of network hosts - ii ipxe-qemu 1.0.0+git-20150424.a25a16d-1ubuntu1 all PXE boot firmware - ROM images for qemu - ii isc-dhcp-client 4.3.3-5ubuntu12.1 amd64 DHCP client for automatically obtaining an IP address - ii isc-dhcp-common 4.3.3-5ubuntu12.1 amd64 common files used by all of the isc-dhcp packages - ii iso-codes 3.65-1 all ISO language, territory, currency, script codes and their translations - ii iw 3.17-1 amd64 tool for configuring Linux wireless devices - ii java-common 0.56ubuntu2 all Base package for Java runtimes - ii kbd 1.15.5-1ubuntu4 amd64 Linux console font and keytable utilities - ii keyboard-configuration 1.108ubuntu15.2 all system-wide keyboard preferences - ii klibc-utils 2.0.4-8ubuntu1.16.04.1 amd64 small utilities built with klibc for early boot - ii kmod 22-1ubuntu4 amd64 tools for managing Linux kernel modules - ii krb5-locales 1.13.2+dfsg-5 all Internationalization support for MIT Kerberos - ii language-selector-common 0.165.3 all Language selector for Ubuntu - ii laptop-detect 0.13.7ubuntu2 amd64 attempt to detect a laptop - ii less 481-2.1 amd64 pager program similar to more - ii libaccountsservice0:amd64 0.6.40-2ubuntu11.1 amd64 query and manipulate user account information - shared libraries - ii libacl1:amd64 2.2.52-3 amd64 Access control list shared library - ii libaio1:amd64 0.3.110-2 amd64 Linux kernel AIO access library - shared library - ii libalgorithm-diff-perl 1.19.03-1 all module to find differences between files - ii libalgorithm-diff-xs-perl 0.04-4build1 amd64 module to find differences between files (XS accelerated) - ii libalgorithm-merge-perl 0.08-3 all Perl module for three-way merge of textual data - ii libapparmor-perl 2.10.95-0ubuntu2.6 amd64 AppArmor library Perl bindings - ii libapparmor1:amd64 2.10.95-0ubuntu2 amd64 changehat AppArmor library - ii libapr1:amd64 1.5.2-3 amd64 Apache Portable Runtime Library - ii libapt-inst2.0:amd64 1.2.12~ubuntu16.04.1 amd64 deb package format runtime library - ii libapt-pkg5.0:amd64 1.2.12~ubuntu16.04.1 amd64 package management runtime library - ii libasan2:amd64 5.4.0-6ubuntu1~16.04.2 amd64 AddressSanitizer -- a fast memory error detector - ii libasn1-8-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - ASN.1 library - ii libasound2:amd64 1.1.0-0ubuntu1 amd64 shared library for ALSA applications - ii libasound2-data 1.1.0-0ubuntu1 all Configuration files and profiles for ALSA drivers - ii libasprintf0v5:amd64 0.19.7-2ubuntu3 amd64 GNU library to use fprintf and friends in C++ - ii libasyncns0:amd64 0.8-5build1 amd64 Asynchronous name service query library - ii libatm1:amd64 1:2.5.1-1.5 amd64 shared library for ATM (Asynchronous Transfer Mode) - ii libatomic1:amd64 5.4.0-6ubuntu1~16.04.2 amd64 support library providing __atomic built-in functions - ii libattr1:amd64 1:2.4.47-2 amd64 Extended attribute shared library - ii libaudit-common 1:2.4.5-1ubuntu2 all Dynamic library for security auditing - common files - ii libaudit1:amd64 1:2.4.5-1ubuntu2 amd64 Dynamic library for security auditing - ii libavahi-client3:amd64 0.6.32~rc+dfsg-1ubuntu2 amd64 Avahi client library - ii libavahi-common-data:amd64 0.6.32~rc+dfsg-1ubuntu2 amd64 Avahi common data files - ii libavahi-common3:amd64 0.6.32~rc+dfsg-1ubuntu2 amd64 Avahi common library - ii libblkid1:amd64 2.27.1-6ubuntu3.1 amd64 block device ID library - ii libbluetooth3:amd64 5.37-0ubuntu5 amd64 Library to use the BlueZ Linux Bluetooth stack - ii libboost-iostreams1.58.0:amd64 1.58.0+dfsg-5ubuntu3.1 amd64 Boost.Iostreams Library - ii libboost-random1.58.0:amd64 1.58.0+dfsg-5ubuntu3.1 amd64 Boost Random Number Library - ii libboost-system1.58.0:amd64 1.58.0+dfsg-5ubuntu3.1 amd64 Operating system (e.g. diagnostics support) library - ii libboost-thread1.58.0:amd64 1.58.0+dfsg-5ubuntu3.1 amd64 portable C++ multi-threading - ii libbrlapi0.6:amd64 5.3.1-2ubuntu2.1 amd64 braille display access via BRLTTY - shared library - ii libbsd0:amd64 0.8.2-1 amd64 utility functions from BSD systems - shared library - ii libbz2-1.0:amd64 1.0.6-8 amd64 high-quality block-sorting file compressor library - runtime - ii libc-bin 2.23-0ubuntu3 amd64 GNU C Library: Binaries - ii libc-dev-bin 2.23-0ubuntu3 amd64 GNU C Library: Development binaries - ii libc6:amd64 2.23-0ubuntu3 amd64 GNU C Library: Shared libraries - ii libc6-dev:amd64 2.23-0ubuntu3 amd64 GNU C Library: Development Libraries and Header Files - ii libcaca0:amd64 0.99.beta19-2build2~gcc5.2 amd64 colour ASCII art library - ii libcacard0:amd64 1:2.5.0-2 amd64 Virtual Common Access Card (CAC) Emulator (runtime library) - ii libcap-ng0:amd64 0.7.7-1 amd64 An alternate POSIX capabilities library - ii libcap2:amd64 1:2.24-12 amd64 POSIX 1003.1e capabilities (library) - ii libcap2-bin 1:2.24-12 amd64 POSIX 1003.1e capabilities (utilities) - ii libcc1-0:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GCC cc1 plugin for GDB - ii libcgroup1:amd64 0.41-7ubuntu1 amd64 control and monitor control groups (library) - ii libcilkrts5:amd64 5.4.0-6ubuntu1~16.04.2 amd64 Intel Cilk Plus language extensions (runtime) - ii libcomerr2:amd64 1.42.13-1ubuntu1 amd64 common error description library - ii libcpufreq0 008-1 amd64 shared library to deal with the cpufreq Linux kernel feature - ii libcryptsetup4:amd64 2:1.6.6-5ubuntu2 amd64 disk encryption support - shared library - ii libcups2:amd64 2.1.3-4 amd64 Common UNIX Printing System(tm) - Core library - ii libcurl3-gnutls:amd64 7.47.0-1ubuntu2.1 amd64 easy-to-use client-side URL transfer library (GnuTLS flavour) - ii libdb5.3:amd64 5.3.28-11 amd64 Berkeley v5.3 Database Libraries [runtime] - ii libdbus-1-3:amd64 1.10.6-1ubuntu3 amd64 simple interprocess messaging system (library) - ii libdbus-glib-1-2:amd64 0.106-1 amd64 simple interprocess messaging system (GLib-based shared library) - ii libdebconfclient0:amd64 0.198ubuntu1 amd64 Debian Configuration Management System (C-implementation library) - ii libdevmapper1.02.1:amd64 2:1.02.110-1ubuntu10 amd64 Linux Kernel Device Mapper userspace library - ii libdns-export162 1:9.10.3.dfsg.P4-8ubuntu1.1 amd64 Exported DNS Shared Library - ii libdpkg-perl 1.18.4ubuntu1.1 all Dpkg perl modules - ii libdrm-amdgpu1:amd64 2.4.67-1ubuntu0.16.04.2 amd64 Userspace interface to amdgpu-specific kernel DRM services -- runtime - ii libdrm-intel1:amd64 2.4.67-1ubuntu0.16.04.2 amd64 Userspace interface to intel-specific kernel DRM services -- runtime - ii libdrm-nouveau2:amd64 2.4.67-1ubuntu0.16.04.2 amd64 Userspace interface to nouveau-specific kernel DRM services -- runtime - ii libdrm-radeon1:amd64 2.4.67-1ubuntu0.16.04.2 amd64 Userspace interface to radeon-specific kernel DRM services -- runtime - ii libdrm2:amd64 2.4.67-1ubuntu0.16.04.2 amd64 Userspace interface to kernel DRM services -- runtime - ii libedit2:amd64 3.1-20150325-1ubuntu2 amd64 BSD editline and history libraries - ii libelf1:amd64 0.165-3ubuntu1 amd64 library to read and write ELF files - ii liberror-perl 0.17-1.2 all Perl module for error/exception handling in an OO-ish way - ii libestr0 0.1.10-1 amd64 Helper functions for handling strings (lib) - ii libexpat1:amd64 2.1.0-7ubuntu0.16.04.2 amd64 XML parsing C library - runtime library - ii libexpat1-dev:amd64 2.1.0-7ubuntu0.16.04.2 amd64 XML parsing C library - development kit - ii libfakeroot:amd64 1.20.2-1ubuntu1 amd64 tool for simulating superuser privileges - shared libraries - ii libfdisk1:amd64 2.27.1-6ubuntu3.1 amd64 fdisk partitioning library - ii libfdt1:amd64 1.4.0+dfsg-2 amd64 Flat Device Trees manipulation library - ii libffi6:amd64 3.2.1-4 amd64 Foreign Function Interface library runtime - ii libfile-fcntllock-perl 0.22-3 amd64 Perl module for file locking with fcntl(2) - ii libflac8:amd64 1.3.1-4 amd64 Free Lossless Audio Codec - runtime C library - ii libfontconfig1:amd64 2.11.94-0ubuntu1.1 amd64 generic font configuration library - runtime - ii libfontenc1:amd64 1:1.1.3-1 amd64 X11 font encoding library - ii libfreetype6:amd64 2.6.1-0.1ubuntu2 amd64 FreeType 2 font engine, shared library files - ii libfribidi0:amd64 0.19.7-1 amd64 Free Implementation of the Unicode BiDi algorithm - ii libfuse2:amd64 2.9.4-1ubuntu3 amd64 Filesystem in Userspace (library) - ii libgcc-5-dev:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GCC support library (development files) - ii libgcc1:amd64 1:6.0.1-0ubuntu1 amd64 GCC support library - ii libgcrypt20:amd64 1.6.5-2ubuntu0.2 amd64 LGPL Crypto library - runtime library - ii libgdbm3:amd64 1.8.3-13.1 amd64 GNU dbm database routines (runtime version) - ii libgirepository-1.0-1:amd64 1.46.0-3ubuntu1 amd64 Library for handling GObject introspection data (runtime library) - ii libgl1-mesa-dri:amd64 11.2.0-1ubuntu2.2 amd64 free implementation of the OpenGL API -- DRI modules - ii libgl1-mesa-glx:amd64 11.2.0-1ubuntu2.2 amd64 free implementation of the OpenGL API -- GLX runtime - ii libglapi-mesa:amd64 11.2.0-1ubuntu2.2 amd64 free implementation of the GL API -- shared library - ii libglib2.0-0:amd64 2.48.1-1~ubuntu16.04.1 amd64 GLib library of C routines - ii libglib2.0-bin 2.48.1-1~ubuntu16.04.1 amd64 Programs for the GLib library - ii libglib2.0-data 2.48.1-1~ubuntu16.04.1 all Common files for GLib library - ii libglib2.0-dev 2.48.1-1~ubuntu16.04.1 amd64 Development files for the GLib library - ii libgmp10:amd64 2:6.1.0+dfsg-2 amd64 Multiprecision arithmetic library - ii libgnutls-openssl27:amd64 3.4.10-4ubuntu1.1 amd64 GNU TLS library - OpenSSL wrapper - ii libgnutls30:amd64 3.4.10-4ubuntu1.1 amd64 GNU TLS library - main runtime library - ii libgomp1:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GCC OpenMP (GOMP) support library - ii libgpg-error0:amd64 1.21-2ubuntu1 amd64 library for common error values and messages in GnuPG components - ii libgssapi-krb5-2:amd64 1.13.2+dfsg-5 amd64 MIT Kerberos runtime libraries - krb5 GSS-API Mechanism - ii libgssapi3-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - GSSAPI support library - ii libhcrypto4-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - crypto library - ii libheimbase1-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - Base library - ii libheimntlm0-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - NTLM support library - ii libhogweed4:amd64 3.2-1 amd64 low level cryptographic library (public-key cryptos) - ii libhx509-5-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - X509 support library - ii libice6:amd64 2:1.0.9-1 amd64 X11 Inter-Client Exchange library - ii libicu55:amd64 55.1-7 amd64 International Components for Unicode - ii libidn11:amd64 1.32-3ubuntu1.1 amd64 GNU Libidn library, implementation of IETF IDN specifications - ii libisc-export160 1:9.10.3.dfsg.P4-8ubuntu1.1 amd64 Exported ISC Shared Library - ii libiscsi2:amd64 1.12.0-2 amd64 iSCSI client shared library - ii libisl15:amd64 0.16.1-1 amd64 manipulating sets and relations of integer points bounded by linear constraints - ii libitm1:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GNU Transactional Memory Library - ii libjpeg-turbo8:amd64 1.4.2-0ubuntu3 amd64 IJG JPEG compliant runtime library. - ii libjpeg8:amd64 8c-2ubuntu8 amd64 Independent JPEG Group's JPEG runtime library (dependency package) - ii libjson-c2:amd64 0.11-4ubuntu2 amd64 JSON manipulation library - shared library - ii libk5crypto3:amd64 1.13.2+dfsg-5 amd64 MIT Kerberos runtime libraries - Crypto Library - ii libkeyutils1:amd64 1.5.9-8ubuntu1 amd64 Linux Key Management Utilities (library) - ii libklibc 2.0.4-8ubuntu1.16.04.1 amd64 minimal libc subset for use with initramfs - ii libkmod2:amd64 22-1ubuntu4 amd64 libkmod shared library - ii libkrb5-26-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - libraries - ii libkrb5-3:amd64 1.13.2+dfsg-5 amd64 MIT Kerberos runtime libraries - ii libkrb5support0:amd64 1.13.2+dfsg-5 amd64 MIT Kerberos runtime libraries - Support library - ii liblcms2-2:amd64 2.6-3ubuntu2 amd64 Little CMS 2 color management library - ii libldap-2.4-2:amd64 2.4.42+dfsg-2ubuntu3.1 amd64 OpenLDAP libraries - ii libllvm3.8:amd64 1:3.8-2ubuntu4 amd64 Modular compiler and toolchain technologies, runtime library - ii liblocale-gettext-perl 1.07-1build1 amd64 module using libc functions for internationalization in Perl - ii liblsan0:amd64 5.4.0-6ubuntu1~16.04.2 amd64 LeakSanitizer -- a memory leak detector (runtime) - ii libltdl-dev:amd64 2.4.6-0.1 amd64 System independent dlopen wrapper for GNU libtool - ii libltdl7:amd64 2.4.6-0.1 amd64 System independent dlopen wrapper for GNU libtool - ii liblxc1 2.0.7-0ubuntu1~16.04.2 amd64 Linux Containers userspace tools (library) - ii liblz4-1:amd64 0.0~r131-2ubuntu2 amd64 Fast LZ compression algorithm library - runtime - ii liblzma5:amd64 5.1.1alpha+20120614-2ubuntu2 amd64 XZ-format compression library - ii libmagic1:amd64 1:5.25-2ubuntu1 amd64 File type determination library using "magic" numbers - ii libmnl0:amd64 1.0.3-5 amd64 minimalistic Netlink communication library - ii libmount1:amd64 2.27.1-6ubuntu3.1 amd64 device mounting library - ii libmpc3:amd64 1.0.3-1 amd64 multiple precision complex floating-point library - ii libmpdec2:amd64 2.4.2-1 amd64 library for decimal floating point arithmetic (runtime library) - ii libmpfr4:amd64 3.1.4-1 amd64 multiple precision floating-point computation - ii libmpx0:amd64 5.4.0-6ubuntu1~16.04.2 amd64 Intel memory protection extensions (runtime) - ii libncurses5:amd64 6.0+20160213-1ubuntu1 amd64 shared libraries for terminal handling - ii libncursesw5:amd64 6.0+20160213-1ubuntu1 amd64 shared libraries for terminal handling (wide character support) - ii libnetfilter-conntrack3:amd64 1.0.5-1 amd64 Netfilter netlink-conntrack library - ii libnettle6:amd64 3.2-1 amd64 low level cryptographic library (symmetric and one-way cryptos) - ii libnewt0.52:amd64 0.52.18-1ubuntu2 amd64 Not Erik's Windowing Toolkit - text mode windowing with slang - ii libnfnetlink0:amd64 1.0.1-3 amd64 Netfilter netlink library - ii libnih-dbus1:amd64 1.0.3-4.3ubuntu1 amd64 NIH D-Bus Bindings Library - ii libnih1:amd64 1.0.3-4.3ubuntu1 amd64 NIH Utility Library - ii libnl-3-200:amd64 3.2.27-1 amd64 library for dealing with netlink sockets - ii libnl-genl-3-200:amd64 3.2.27-1 amd64 library for dealing with netlink sockets - generic netlink - ii libnspr4:amd64 2:4.12-0ubuntu0.16.04.1 amd64 NetScape Portable Runtime Library - ii libnss3:amd64 2:3.23-0ubuntu0.16.04.1 amd64 Network Security Service libraries - ii libnss3-nssdb 2:3.23-0ubuntu0.16.04.1 all Network Security Security libraries - shared databases - ii libnuma1:amd64 2.0.11-1ubuntu1 amd64 Libraries for controlling NUMA policy - ii libogg0:amd64 1.3.2-1 amd64 Ogg bitstream library - ii libopus0:amd64 1.1.2-1ubuntu1 amd64 Opus codec runtime library - ii libp11-kit0:amd64 0.23.2-3 amd64 Library for loading and coordinating access to PKCS#11 modules - runtime - ii libpam-cgfs 2.0.6-0ubuntu1~16.04.1 amd64 PAM module for managing cgroups for LXC - ii libpam-modules:amd64 1.1.8-3.2ubuntu2 amd64 Pluggable Authentication Modules for PAM - ii libpam-modules-bin 1.1.8-3.2ubuntu2 amd64 Pluggable Authentication Modules for PAM - helper binaries - ii libpam-runtime 1.1.8-3.2ubuntu2 all Runtime support for the PAM library - ii libpam0g:amd64 1.1.8-3.2ubuntu2 amd64 Pluggable Authentication Modules library - ii libpcap-dev 1.7.4-2 all development library for libpcap (transitional package) - ii libpcap0.8:amd64 1.7.4-2 amd64 system interface for user-level packet capture - ii libpcap0.8-dev 1.7.4-2 amd64 development library and header files for libpcap0.8 - ii libpci3:amd64 1:3.3.1-1.1ubuntu1 amd64 Linux PCI Utilities (shared library) - ii libpciaccess0:amd64 0.13.4-1 amd64 Generic PCI access library for X - ii libpcre16-3:amd64 2:8.38-3.1 amd64 Perl 5 Compatible Regular Expression Library - 16 bit runtime files - ii libpcre3:amd64 2:8.38-3.1 amd64 Perl 5 Compatible Regular Expression Library - runtime files - ii libpcre3-dev:amd64 2:8.38-3.1 amd64 Perl 5 Compatible Regular Expression Library - development files - ii libpcre32-3:amd64 2:8.38-3.1 amd64 Perl 5 Compatible Regular Expression Library - 32 bit runtime files - ii libpcrecpp0v5:amd64 2:8.38-3.1 amd64 Perl 5 Compatible Regular Expression Library - C++ runtime files - ii libpcsclite1:amd64 1.8.14-1ubuntu1.16.04.1 amd64 Middleware to access a smart card using PC/SC (library) - ii libperl5.22:amd64 5.22.1-9 amd64 shared Perl library - ii libpixman-1-0:amd64 0.33.6-1 amd64 pixel-manipulation library for X and cairo - ii libplymouth4:amd64 0.9.2-3ubuntu13.1 amd64 graphical boot animation and logger - shared libraries - ii libpng12-0:amd64 1.2.54-1ubuntu1 amd64 PNG library - runtime - ii libpolkit-gobject-1-0:amd64 0.105-14.1 amd64 PolicyKit Authorization API - ii libpopt0:amd64 1.16-10 amd64 lib for parsing cmdline parameters - ii libprocps4:amd64 2:3.3.10-4ubuntu2 amd64 library for accessing process information from /proc - ii libpulse0:amd64 1:8.0-0ubuntu3 amd64 PulseAudio client libraries - ii libpython-all-dev:amd64 2.7.11-1 amd64 package depending on all supported Python development packages - ii libpython-dev:amd64 2.7.11-1 amd64 header files and a static library for Python (default) - ii libpython-stdlib:amd64 2.7.11-1 amd64 interactive high-level object-oriented language (default python version) - ii libpython2.7:amd64 2.7.12-1~16.04 amd64 Shared Python runtime library (version 2.7) - ii libpython2.7-dev:amd64 2.7.12-1~16.04 amd64 Header files and a static library for Python (v2.7) - ii libpython2.7-minimal:amd64 2.7.12-1~16.04 amd64 Minimal subset of the Python language (version 2.7) - ii libpython2.7-stdlib:amd64 2.7.12-1~16.04 amd64 Interactive high-level object-oriented language (standard library, version 2.7) - ii libpython3-stdlib:amd64 3.5.1-3 amd64 interactive high-level object-oriented language (default python3 version) - ii libpython3.5-minimal:amd64 3.5.2-2~16.01 amd64 Minimal subset of the Python language (version 3.5) - ii libpython3.5-stdlib:amd64 3.5.2-2~16.01 amd64 Interactive high-level object-oriented language (standard library, version 3.5) - ii libquadmath0:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GCC Quad-Precision Math Library - ii librados2 10.2.2-0ubuntu0.16.04.2 amd64 RADOS distributed object store client library - ii librbd1 10.2.2-0ubuntu0.16.04.2 amd64 RADOS block device client library - ii libreadline6:amd64 6.3-8ubuntu2 amd64 GNU readline and history libraries, run-time libraries - ii libroken18-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - roken support library - ii librtmp1:amd64 2.4+20151223.gitfa8646d-1build1 amd64 toolkit for RTMP streams (shared library) - ii libsasl2-2:amd64 2.1.26.dfsg1-14build1 amd64 Cyrus SASL - authentication abstraction library - ii libsasl2-modules:amd64 2.1.26.dfsg1-14build1 amd64 Cyrus SASL - pluggable authentication modules - ii libsasl2-modules-db:amd64 2.1.26.dfsg1-14build1 amd64 Cyrus SASL - pluggable authentication modules (DB) - ii libsdl1.2debian:amd64 1.2.15+dfsg1-3 amd64 Simple DirectMedia Layer - ii libseccomp2:amd64 2.2.3-3ubuntu3 amd64 high level interface to Linux seccomp filter - ii libselinux1:amd64 2.4-3build2 amd64 SELinux runtime shared libraries - ii libsemanage-common 2.3-1build3 all Common files for SELinux policy management libraries - ii libsemanage1:amd64 2.3-1build3 amd64 SELinux policy management library - ii libsepol1:amd64 2.4-2 amd64 SELinux library for manipulating binary security policies - ii libsigsegv2:amd64 2.10-4 amd64 Library for handling page faults in a portable way - ii libslang2:amd64 2.3.0-2ubuntu1 amd64 S-Lang programming library - runtime version - ii libsm6:amd64 2:1.2.2-1 amd64 X11 Session Management library - ii libsmartcols1:amd64 2.27.1-6ubuntu3.1 amd64 smart column output alignment library - ii libsndfile1:amd64 1.0.25-10 amd64 Library for reading/writing audio files - ii libspice-server1:amd64 0.12.6-4ubuntu0.1 amd64 Implements the server side of the SPICE protocol - ii libsqlite3-0:amd64 3.11.0-1ubuntu1 amd64 SQLite 3 shared library - ii libss2:amd64 1.42.13-1ubuntu1 amd64 command-line interface parsing library - ii libssl1.0.0:amd64 1.0.2g-1ubuntu4.5 amd64 Secure Sockets Layer toolkit - shared libraries - ii libstdc++-5-dev:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GNU Standard C++ Library v3 (development files) - ii libstdc++6:amd64 5.4.0-6ubuntu1~16.04.2 amd64 GNU Standard C++ Library v3 - ii libsystemd0:amd64 229-4ubuntu10 amd64 systemd utility library - ii libtasn1-6:amd64 4.7-3ubuntu0.16.04.1 amd64 Manage ASN.1 structures (runtime) - ii libtcl8.6:amd64 8.6.5+dfsg-2 amd64 Tcl (the Tool Command Language) v8.6 - run-time library files - ii libtext-charwidth-perl 0.04-7build5 amd64 get display widths of characters on the terminal - ii libtext-iconv-perl 1.7-5build4 amd64 converts between character sets in Perl - ii libtext-wrapi18n-perl 0.06-7.1 all internationalized substitute of Text::Wrap - ii libtinfo5:amd64 6.0+20160213-1ubuntu1 amd64 shared low-level terminfo library for terminal handling - ii libtk8.6:amd64 8.6.5-1 amd64 Tk toolkit for Tcl and X11 v8.6 - run-time files - ii libtool 2.4.6-0.1 all Generic library support script - ii libtsan0:amd64 5.4.0-6ubuntu1~16.04.2 amd64 ThreadSanitizer -- a Valgrind-based detector of data races (runtime) - ii libtxc-dxtn-s2tc0:amd64 0~git20131104-1.1 amd64 Texture compression library for Mesa - ii libubsan0:amd64 5.4.0-6ubuntu1~16.04.2 amd64 UBSan -- undefined behaviour sanitizer (runtime) - ii libudev1:amd64 229-4ubuntu10 amd64 libudev shared library - ii libusb-0.1-4:amd64 2:0.1.12-28 amd64 userspace USB programming library - ii libusb-1.0-0:amd64 2:1.0.20-1 amd64 userspace USB programming library - ii libusbredirparser1:amd64 0.7.1-1 amd64 Parser for the usbredir protocol (runtime) - ii libustr-1.0-1:amd64 1.0.4-5 amd64 Micro string library: shared library - ii libutempter0:amd64 1.1.6-3 amd64 privileged helper for utmp/wtmp updates (runtime) - ii libuuid1:amd64 2.27.1-6ubuntu3.1 amd64 Universally Unique ID library - ii libvorbis0a:amd64 1.3.5-3 amd64 decoder library for Vorbis General Audio Compression Codec - ii libvorbisenc2:amd64 1.3.5-3 amd64 encoder library for Vorbis General Audio Compression Codec - ii libwind0-heimdal:amd64 1.7~git20150920+dfsg-4ubuntu1 amd64 Heimdal Kerberos - stringprep implementation - ii libwrap0:amd64 7.6.q-25 amd64 Wietse Venema's TCP wrappers library - ii libx11-6:amd64 2:1.6.3-1ubuntu2 amd64 X11 client-side library - ii libx11-data 2:1.6.3-1ubuntu2 all X11 client-side library - ii libx11-xcb1:amd64 2:1.6.3-1ubuntu2 amd64 Xlib/XCB interface library - ii libxau6:amd64 1:1.0.8-1 amd64 X11 authorisation library - ii libxaw7:amd64 2:1.0.13-1 amd64 X11 Athena Widget library - ii libxcb-dri2-0:amd64 1.11.1-1ubuntu1 amd64 X C Binding, dri2 extension - ii libxcb-dri3-0:amd64 1.11.1-1ubuntu1 amd64 X C Binding, dri3 extension - ii libxcb-glx0:amd64 1.11.1-1ubuntu1 amd64 X C Binding, glx extension - ii libxcb-present0:amd64 1.11.1-1ubuntu1 amd64 X C Binding, present extension - ii libxcb-shape0:amd64 1.11.1-1ubuntu1 amd64 X C Binding, shape extension - ii libxcb-sync1:amd64 1.11.1-1ubuntu1 amd64 X C Binding, sync extension - ii libxcb1:amd64 1.11.1-1ubuntu1 amd64 X C Binding - ii libxcomposite1:amd64 1:0.4.4-1 amd64 X11 Composite extension library - ii libxdamage1:amd64 1:1.1.4-2 amd64 X11 damaged region extension library - ii libxdmcp6:amd64 1:1.1.2-1.1 amd64 X11 Display Manager Control Protocol library - ii libxen-4.6:amd64 4.6.0-1ubuntu4.2 amd64 Public libs for Xen - ii libxenstore3.0:amd64 4.6.0-1ubuntu4.2 amd64 Xenstore communications library for Xen - ii libxext6:amd64 2:1.3.3-1 amd64 X11 miscellaneous extension library - ii libxfixes3:amd64 1:5.0.1-2 amd64 X11 miscellaneous 'fixes' extension library - ii libxft2:amd64 2.3.2-1 amd64 FreeType-based font drawing library for X - ii libxi6:amd64 2:1.7.6-1 amd64 X11 Input extension library - ii libxinerama1:amd64 2:1.1.3-1 amd64 X11 Xinerama extension library - ii libxml2:amd64 2.9.3+dfsg1-1ubuntu0.1 amd64 GNOME XML library - ii libxmu6:amd64 2:1.1.2-2 amd64 X11 miscellaneous utility library - ii libxmuu1:amd64 2:1.1.2-2 amd64 X11 miscellaneous micro-utility library - ii libxpm4:amd64 1:3.5.11-1 amd64 X11 pixmap library - ii libxrandr2:amd64 2:1.5.0-1 amd64 X11 RandR extension library - ii libxrender1:amd64 1:0.9.9-0ubuntu1 amd64 X Rendering Extension client library - ii libxshmfence1:amd64 1.2-1 amd64 X shared memory fences - shared library - ii libxss1:amd64 1:1.2.2-1 amd64 X11 Screen Saver extension library - ii libxt6:amd64 1:1.1.5-0ubuntu1 amd64 X11 toolkit intrinsics library - ii libxtables11:amd64 1.6.0-2ubuntu3 amd64 netfilter xtables library - ii libxtst6:amd64 2:1.2.2-1 amd64 X11 Testing -- Record extension library - ii libxv1:amd64 2:1.0.10-1 amd64 X11 Video extension library - ii libxxf86dga1:amd64 2:1.1.4-1 amd64 X11 Direct Graphics Access extension library - ii libxxf86vm1:amd64 1:1.1.4-1 amd64 X11 XFree86 video mode extension library - ii libyajl2:amd64 2.1.0-2 amd64 Yet Another JSON Library - ii linux-base 4.0ubuntu1 all Linux image base package - ii linux-firmware 1.157.2 all Firmware for Linux kernel drivers - ii linux-generic 4.4.0.72.78 amd64 Complete Generic Linux kernel and headers - ii linux-headers-4.4.0-72 4.4.0-72.93 all Header files related to Linux kernel version 4.4.0 - ii linux-headers-4.4.0-72-generic 4.4.0-72.93 amd64 Linux kernel headers for version 4.4.0 on 64 bit x86 SMP - ii linux-headers-generic 4.4.0.72.78 amd64 Generic Linux kernel headers - ii linux-image-4.4.0-72-generic 4.4.0-72.93 amd64 Linux kernel image for version 4.4.0 on 64 bit x86 SMP - ii linux-image-extra-4.4.0-72-generic 4.4.0-72.93 amd64 Linux kernel extra modules for version 4.4.0 on 64 bit x86 SMP - ii linux-image-generic 4.4.0.72.78 amd64 Generic Linux kernel image - ii linux-libc-dev:amd64 4.4.0-72.93 amd64 Linux Kernel Headers for development - ii locales 2.23-0ubuntu3 all GNU C Library: National Language (locale) data [support] - ii login 1:4.2-3.1ubuntu5 amd64 system login tools - ii logrotate 3.8.7-2ubuntu2 amd64 Log rotation utility - ii lsb-base 9.20160110ubuntu0.2 all Linux Standard Base init script functionality - ii lsb-release 9.20160110ubuntu0.2 all Linux Standard Base version reporting utility - ii lxc 2.0.7-0ubuntu1~16.04.2 all Transitional package for lxc1 - ii lxc-common 2.0.7-0ubuntu1~16.04.2 amd64 Linux Containers userspace tools (common tools) - ii lxc-templates 2.0.7-0ubuntu1~16.04.2 amd64 Linux Containers userspace tools (templates) - ii lxc1 2.0.7-0ubuntu1~16.04.2 amd64 Linux Containers userspace tools - ii lxcfs 2.0.6-0ubuntu1~16.04.1 amd64 FUSE based filesystem for LXC - ii m4 1.4.17-5 amd64 macro processing language - ii make 4.1-6 amd64 utility for directing compilation - ii makedev 2.3.1-93ubuntu1 all creates device files in /dev - ii manpages 4.04-2 all Manual pages about using a GNU/Linux system - ii manpages-dev 4.04-2 all Manual pages about using GNU/Linux for development - ii mawk 1.3.3-17ubuntu2 amd64 a pattern scanning and text processing language - ii mime-support 3.59ubuntu1 all MIME files 'mime.types' & 'mailcap', and support programs - ii mount 2.27.1-6ubuntu3.1 amd64 tools for mounting and manipulating filesystems - ii mountall 2.54ubuntu1 amd64 filesystem mounting tool - ii msr-tools 1.3-2 amd64 Utilities for modifying MSRs from userspace - ii multiarch-support 2.23-0ubuntu3 amd64 Transitional package to ensure multiarch compatibility - ii ncurses-base 6.0+20160213-1ubuntu1 all basic terminal type definitions - ii ncurses-bin 6.0+20160213-1ubuntu1 amd64 terminal-related programs and man pages - ii ncurses-term 6.0+20160213-1ubuntu1 all additional terminal type definitions - ii net-tools 1.60-26ubuntu1 amd64 NET-3 networking toolkit - ii netbase 5.3 all Basic TCP/IP networking system - ii netcat-openbsd 1.105-7ubuntu1 amd64 TCP/IP swiss army knife - ii openjdk-8-jre-headless:amd64 8u131-b11-0ubuntu1.16.04.2 amd64 OpenJDK Java runtime, using Hotspot JIT (headless) - ii openssh-client 1:7.2p2-4ubuntu2.1 amd64 secure shell (SSH) client, for secure access to remote machines - ii openssh-server 1:7.2p2-4ubuntu2.1 amd64 secure shell (SSH) server, for secure access from remote machines - ii openssh-sftp-server 1:7.2p2-4ubuntu2.1 amd64 secure shell (SSH) sftp server module, for SFTP access from remote machines - ii openssl 1.0.2g-1ubuntu4.5 amd64 Secure Sockets Layer toolkit - cryptographic utility - ii os-prober 1.70ubuntu3 amd64 utility to detect other OSes on a set of drives - ii passwd 1:4.2-3.1ubuntu5 amd64 change and administer password and group data - ii patch 2.7.5-1 amd64 Apply a diff file to an original - ii pciutils 1:3.3.1-1.1ubuntu1 amd64 Linux PCI Utilities - ii perl 5.22.1-9 amd64 Larry Wall's Practical Extraction and Report Language - ii perl-base 5.22.1-9 amd64 minimal Perl system - ii perl-modules-5.22 5.22.1-9 all Core Perl modules - ii pkg-config 0.29.1-0ubuntu1 amd64 manage compile and link flags for libraries - ii plymouth 0.9.2-3ubuntu13.1 amd64 boot animation, logger and I/O multiplexer - ii plymouth-theme-ubuntu-text 0.9.2-3ubuntu13.1 amd64 boot animation, logger and I/O multiplexer - ubuntu text theme - ii procps 2:3.3.10-4ubuntu2 amd64 /proc file system utilities - ii python 2.7.11-1 amd64 interactive high-level object-oriented language (default version) - ii python-all 2.7.11-1 amd64 package depending on all supported Python runtime versions - ii python-all-dev 2.7.11-1 amd64 package depending on all supported Python development packages - ii python-apt 1.1.0~beta1build1 amd64 Python interface to libapt-pkg - ii python-apt-common 1.1.0~beta1build1 all Python interface to libapt-pkg (locales) - ii python-dev 2.7.11-1 amd64 header files and a static library for Python (default) - ii python-iniparse 0.4-2.2 all access and modify configuration data in INI files (Python 2) - ii python-minimal 2.7.11-1 amd64 minimal subset of the Python language (default version) - ii python-pip 8.1.1-2ubuntu0.2 all alternative Python package installer - ii python-pip-whl 8.1.1-2ubuntu0.2 all alternative Python package installer - ii python-pkg-resources 20.7.0-1 all Package Discovery and Resource Access using pkg_resources - ii python-setuptools 20.7.0-1 all Python Distutils Enhancements - ii python-six 1.10.0-3 all Python 2 and 3 compatibility library (Python 2 interface) - ii python-virtualenv 15.0.1+ds-3 all Python virtual environment creator - ii python-wheel 0.29.0-1 all built-package format for Python - ii python2.7 2.7.12-1~16.04 amd64 Interactive high-level object-oriented language (version 2.7) - ii python2.7-dev 2.7.12-1~16.04 amd64 Header files and a static library for Python (v2.7) - ii python2.7-minimal 2.7.12-1~16.04 amd64 Minimal subset of the Python language (version 2.7) - ii python3 3.5.1-3 amd64 interactive high-level object-oriented language (default python3 version) - ii python3-apt 1.1.0~beta1build1 amd64 Python 3 interface to libapt-pkg - ii python3-chardet 2.3.0-2 all universal character encoding detector for Python3 - ii python3-dbus 1.2.0-3 amd64 simple interprocess messaging system (Python 3 interface) - ii python3-gi 3.20.0-0ubuntu1 amd64 Python 3 bindings for gobject-introspection libraries - ii python3-lxc 2.0.7-0ubuntu1~16.04.2 amd64 Linux Containers userspace tools (Python 3.x bindings) - ii python3-minimal 3.5.1-3 amd64 minimal subset of the Python language (default python3 version) - ii python3-pkg-resources 20.7.0-1 all Package Discovery and Resource Access using pkg_resources - ii python3-requests 2.9.1-3 all elegant and simple HTTP library for Python3, built for human beings - ii python3-six 1.10.0-3 all Python 2 and 3 compatibility library (Python 3 interface) - ii python3-urllib3 1.13.1-2ubuntu0.16.04.1 all HTTP library with thread-safe connection pooling for Python3 - ii python3-virtualenv 15.0.1+ds-3 all Python virtual environment creator - ii python3.5 3.5.2-2~16.01 amd64 Interactive high-level object-oriented language (version 3.5) - ii python3.5-minimal 3.5.2-2~16.01 amd64 Minimal subset of the Python language (version 3.5) - ii qemu-block-extra:amd64 1:2.5+dfsg-5ubuntu10.5 amd64 extra block backend modules for qemu-system and qemu-utils - ii qemu-system-common 1:2.5+dfsg-5ubuntu10.5 amd64 QEMU full system emulation binaries (common files) - ii qemu-system-x86 1:2.5+dfsg-5ubuntu10.5 amd64 QEMU full system emulation binaries (x86) - ii qemu-utils 1:2.5+dfsg-5ubuntu10.5 amd64 QEMU utilities - ii readline-common 6.3-8ubuntu2 all GNU readline and history libraries, common files - ii rename 0.20-4 all Perl extension for renaming multiple files - ii resolvconf 1.78ubuntu2 all name server information handler - ii rsync 3.1.1-3ubuntu1 amd64 fast, versatile, remote (and local) file-copying tool - ii rsyslog 8.16.0-1ubuntu3 amd64 reliable system and kernel logging daemon - ii screen 4.3.1-2build1 amd64 terminal multiplexer with VT100/ANSI terminal emulation - ii seabios 1.8.2-1ubuntu1 all Legacy BIOS implementation - ii sed 4.2.2-7 amd64 The GNU sed stream editor - ii sensible-utils 0.0.9 all Utilities for sensible alternative selection - ii sgml-base 1.26+nmu4ubuntu1 all SGML infrastructure and SGML catalog file support - ii shared-mime-info 1.5-2ubuntu0.1 amd64 FreeDesktop.org shared MIME database and spec - ii sharutils 1:4.15.2-1 amd64 shar, unshar, uuencode, uudecode - ii socat 1.7.3.1-1 amd64 multipurpose relay for bidirectional data transfer - ii ssh-import-id 5.5-0ubuntu1 all securely retrieve an SSH public key and install it locally - ii sudo 1.8.16-0ubuntu1.1 amd64 Provide limited super user privileges to specific users - ii systemd 229-4ubuntu10 amd64 system and service manager - ii systemd-sysv 229-4ubuntu10 amd64 system and service manager - SysV links - ii sysv-rc 2.88dsf-59.3ubuntu2 all System-V-like runlevel change mechanism - ii sysvinit-utils 2.88dsf-59.3ubuntu2 amd64 System-V-like utilities - ii tar 1.28-2.1 amd64 GNU version of the tar archiving utility - ii tasksel 3.34ubuntu3 all tool for selecting tasks for installation on Debian systems - ii tasksel-data 3.34ubuntu3 all official tasks used for installation of Debian systems - ii tcl-expect:amd64 5.45-7 amd64 Automates interactive applications (Tcl package) - ii tcl8.6 8.6.5+dfsg-2 amd64 Tcl (the Tool Command Language) v8.6 - shell - ii tcpd 7.6.q-25 amd64 Wietse Venema's TCP wrapper utilities - ii tk8.6 8.6.5-1 amd64 Tk toolkit for Tcl and X11 v8.6 - windowing shell - ii tzdata 2016g-0ubuntu0.16.04 all time zone and daylight-saving time data - ii ubuntu-keyring 2012.05.19 all GnuPG keys of the Ubuntu archive - ii ubuntu-minimal 1.361 amd64 Minimal core of Ubuntu - ii ucf 3.0036 all Update Configuration File(s): preserve user changes to config files - ii udev 229-4ubuntu10 amd64 /dev/ and hotplug management daemon - ii uidmap 1:4.2-3.1ubuntu5.3 amd64 programs to help use subuids - ii ureadahead 0.100.0-19 amd64 Read required files in advance - ii usbutils 1:007-4 amd64 Linux USB utilities - ii util-linux 2.27.1-6ubuntu3.1 amd64 miscellaneous system utilities - ii uuid-runtime 2.27.1-6ubuntu3.2 amd64 runtime components for the Universally Unique ID library - ii vim-common 2:7.4.1689-3ubuntu1.1 amd64 Vi IMproved - Common files - ii vim-tiny 2:7.4.1689-3ubuntu1.1 amd64 Vi IMproved - enhanced vi editor - compact version - ii virtualenv 15.0.1+ds-3 all Python virtual environment creator - ii wamerican 7.1-1 all American English dictionary words for /usr/share/dict - ii wget 1.17.1-1ubuntu1.1 amd64 retrieves files from the web - ii whiptail 0.52.18-1ubuntu2 amd64 Displays user-friendly dialog boxes from shell scripts - ii wireless-regdb 2015.07.20-1ubuntu1 all wireless regulatory database - ii x11-common 1:7.7+13ubuntu3 all X Window System (X.Org) infrastructure - ii x11-utils 7.7+3 amd64 X11 utilities - ii xauth 1:1.0.9-1ubuntu2 amd64 X authentication utility - ii xbitmaps 1.1.1-2 all Base X bitmaps - ii xdg-user-dirs 0.15-2ubuntu6 amd64 tool to manage well known user directories - ii xkb-data 2.16-1ubuntu1 all X Keyboard Extension (XKB) configuration data - ii xml-core 0.13+nmu2 all XML infrastructure and XML catalog file support - ii xterm 322-1ubuntu1 amd64 X terminal emulator - ii xz-utils 5.1.1alpha+20120614-2ubuntu2 amd64 XZ-format compression utilities - ii zlib1g:amd64 1:1.2.8.dfsg-2ubuntu4 amd64 compression library - runtime - ii zlib1g-dev:amd64 1:1.2.8.dfsg-2ubuntu4 amd64 compression library - development + $ dpkg -l | grep '^ii' | awk '{print $2 ": " $3}' + accountsservice: 0.6.40-2ubuntu11.1 + acl: 2.2.52-3 + adduser: 3.113+nmu3ubuntu4 + apparmor: 2.10.95-0ubuntu2.6 + apt: 1.2.12~ubuntu16.04.1 + apt-utils: 1.2.12~ubuntu16.04.1 + autoconf: 2.69-9 + automake: 1:1.15-4ubuntu1 + autotools-dev: 20150820.1 + base-files: 9.4ubuntu4.2 + base-passwd: 3.5.39 + bash: 4.3-14ubuntu1.1 + binutils: 2.26.1-1ubuntu1~16.04.3 + bridge-utils: 1.5-9ubuntu1 + bsdutils: 1:2.27.1-6ubuntu3.1 + build-essential: 12.1ubuntu2 + busybox-initramfs: 1:1.22.0-15ubuntu1 + busybox-static: 1:1.22.0-15ubuntu1 + bzip2: 1.0.6-8 + ca-certificates: 20160104ubuntu1 + ca-certificates-java: 20160321 + cgroup-bin: 0.41-7ubuntu1 + cgroup-lite: 1.11 + cgroup-tools: 0.41-7ubuntu1 + cloud-image-utils: 0.27-0ubuntu24 + console-setup: 1.108ubuntu15.2 + console-setup-linux: 1.108ubuntu15.2 + coreutils: 8.25-2ubuntu2 + cpio: 2.11+dfsg-5ubuntu1 + cpp: 4:5.3.1-1ubuntu1 + cpp-5: 5.4.0-6ubuntu1~16.04.2 + cpu-checker: 0.7-0ubuntu7 + cpufrequtils: 008-1 + crda: 3.13-1 + cron: 3.0pl1-128ubuntu2 + crudini: 0.7-1 + dash: 0.5.8-2.1ubuntu2 + dbus: 1.10.6-1ubuntu3 + debconf: 1.5.58ubuntu1 + debconf-i18n: 1.5.58ubuntu1 + debianutils: 4.7 + debootstrap: 1.0.78+nmu1ubuntu1.3 + dh-python: 2.20151103ubuntu1.1 + diffutils: 1:3.3-3 + distro-info: 0.14build1 + distro-info-data: 0.28ubuntu0.1 + dkms: 2.2.0.3-2ubuntu11.2 + dmidecode: 3.0-2ubuntu0.1 + dns-root-data: 2015052300+h+1 + dnsmasq-base: 2.75-1ubuntu0.16.04.2 + dpkg: 1.18.4ubuntu1.1 + dpkg-dev: 1.18.4ubuntu1.1 + e2fslibs:amd64: 1.42.13-1ubuntu1 + e2fsprogs: 1.42.13-1ubuntu1 + eject: 2.1.5+deb1+cvs20081104-13.1 + expect: 5.45-7 + fakeroot: 1.20.2-1ubuntu1 + file: 1:5.25-2ubuntu1 + findutils: 4.6.0+git+20160126-2 + fontconfig-config: 2.11.94-0ubuntu1.1 + fonts-dejavu-core: 2.35-1 + g++: 4:5.3.1-1ubuntu1 + g++-5: 5.4.0-6ubuntu1~16.04.2 + gcc: 4:5.3.1-1ubuntu1 + gcc-5: 5.4.0-6ubuntu1~16.04.2 + gcc-5-base:amd64: 5.4.0-6ubuntu1~16.04.2 + gcc-6-base:amd64: 6.0.1-0ubuntu1 + genisoimage: 9:1.1.11-3ubuntu1 + gettext-base: 0.19.7-2ubuntu3 + gir1.2-glib-2.0:amd64: 1.46.0-3ubuntu1 + git: 1:2.7.4-0ubuntu1 + git-man: 1:2.7.4-0ubuntu1 + gnupg: 1.4.20-1ubuntu3.1 + gpgv: 1.4.20-1ubuntu3.1 + grep: 2.25-1~16.04.1 + grub-common: 2.02~beta2-36ubuntu3.1 + grub-gfxpayload-lists: 0.7 + grub-pc: 2.02~beta2-36ubuntu3.1 + grub-pc-bin: 2.02~beta2-36ubuntu3.1 + grub2-common: 2.02~beta2-36ubuntu3.1 + gzip: 1.6-4ubuntu1 + hostname: 3.16ubuntu2 + ifupdown: 0.8.10ubuntu1 + init: 1.29ubuntu2 + init-system-helpers: 1.29ubuntu2 + initramfs-tools: 0.122ubuntu8.1 + initramfs-tools-bin: 0.122ubuntu8.1 + initramfs-tools-core: 0.122ubuntu8.1 + initscripts: 2.88dsf-59.3ubuntu2 + insserv: 1.14.0-5ubuntu3 + installation-report: 2.60ubuntu1 + iproute2: 4.3.0-1ubuntu3 + iptables: 1.6.0-2ubuntu3 + iputils-ping: 3:20121221-5ubuntu2 + ipxe-qemu: 1.0.0+git-20150424.a25a16d-1ubuntu1 + isc-dhcp-client: 4.3.3-5ubuntu12.1 + isc-dhcp-common: 4.3.3-5ubuntu12.1 + iso-codes: 3.65-1 + iw: 3.17-1 + java-common: 0.56ubuntu2 + kbd: 1.15.5-1ubuntu4 + keyboard-configuration: 1.108ubuntu15.2 + klibc-utils: 2.0.4-8ubuntu1.16.04.1 + kmod: 22-1ubuntu4 + krb5-locales: 1.13.2+dfsg-5 + language-selector-common: 0.165.3 + laptop-detect: 0.13.7ubuntu2 + less: 481-2.1 + libaccountsservice0:amd64: 0.6.40-2ubuntu11.1 + libacl1:amd64: 2.2.52-3 + libaio1:amd64: 0.3.110-2 + libalgorithm-diff-perl: 1.19.03-1 + libalgorithm-diff-xs-perl: 0.04-4build1 + libalgorithm-merge-perl: 0.08-3 + libapparmor-perl: 2.10.95-0ubuntu2.6 + libapparmor1:amd64: 2.10.95-0ubuntu2 + libapr1:amd64: 1.5.2-3 + libapt-inst2.0:amd64: 1.2.12~ubuntu16.04.1 + libapt-pkg5.0:amd64: 1.2.12~ubuntu16.04.1 + libasan2:amd64: 5.4.0-6ubuntu1~16.04.2 + libasn1-8-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libasound2:amd64: 1.1.0-0ubuntu1 + libasound2-data: 1.1.0-0ubuntu1 + libasprintf0v5:amd64: 0.19.7-2ubuntu3 + libasyncns0:amd64: 0.8-5build1 + libatm1:amd64: 1:2.5.1-1.5 + libatomic1:amd64: 5.4.0-6ubuntu1~16.04.2 + libattr1:amd64: 1:2.4.47-2 + libaudit-common: 1:2.4.5-1ubuntu2 + libaudit1:amd64: 1:2.4.5-1ubuntu2 + libavahi-client3:amd64: 0.6.32~rc+dfsg-1ubuntu2 + libavahi-common-data:amd64: 0.6.32~rc+dfsg-1ubuntu2 + libavahi-common3:amd64: 0.6.32~rc+dfsg-1ubuntu2 + libblkid1:amd64: 2.27.1-6ubuntu3.1 + libbluetooth3:amd64: 5.37-0ubuntu5 + libboost-iostreams1.58.0:amd64: 1.58.0+dfsg-5ubuntu3.1 + libboost-random1.58.0:amd64: 1.58.0+dfsg-5ubuntu3.1 + libboost-system1.58.0:amd64: 1.58.0+dfsg-5ubuntu3.1 + libboost-thread1.58.0:amd64: 1.58.0+dfsg-5ubuntu3.1 + libbrlapi0.6:amd64: 5.3.1-2ubuntu2.1 + libbsd0:amd64: 0.8.2-1 + libbz2-1.0:amd64: 1.0.6-8 + libc-bin: 2.23-0ubuntu3 + libc-dev-bin: 2.23-0ubuntu3 + libc6:amd64: 2.23-0ubuntu3 + libc6-dev:amd64: 2.23-0ubuntu3 + libcaca0:amd64: 0.99.beta19-2build2~gcc5.2 + libcacard0:amd64: 1:2.5.0-2 + libcap-ng0:amd64: 0.7.7-1 + libcap2:amd64: 1:2.24-12 + libcap2-bin: 1:2.24-12 + libcc1-0:amd64: 5.4.0-6ubuntu1~16.04.2 + libcgroup1:amd64: 0.41-7ubuntu1 + libcilkrts5:amd64: 5.4.0-6ubuntu1~16.04.2 + libcomerr2:amd64: 1.42.13-1ubuntu1 + libcpufreq0: 008-1 + libcryptsetup4:amd64: 2:1.6.6-5ubuntu2 + libcups2:amd64: 2.1.3-4 + libcurl3-gnutls:amd64: 7.47.0-1ubuntu2.1 + libdb5.3:amd64: 5.3.28-11 + libdbus-1-3:amd64: 1.10.6-1ubuntu3 + libdbus-glib-1-2:amd64: 0.106-1 + libdebconfclient0:amd64: 0.198ubuntu1 + libdevmapper1.02.1:amd64: 2:1.02.110-1ubuntu10 + libdns-export162: 1:9.10.3.dfsg.P4-8ubuntu1.1 + libdpkg-perl: 1.18.4ubuntu1.1 + libdrm-amdgpu1:amd64: 2.4.67-1ubuntu0.16.04.2 + libdrm-intel1:amd64: 2.4.67-1ubuntu0.16.04.2 + libdrm-nouveau2:amd64: 2.4.67-1ubuntu0.16.04.2 + libdrm-radeon1:amd64: 2.4.67-1ubuntu0.16.04.2 + libdrm2:amd64: 2.4.67-1ubuntu0.16.04.2 + libedit2:amd64: 3.1-20150325-1ubuntu2 + libelf1:amd64: 0.165-3ubuntu1 + liberror-perl: 0.17-1.2 + libestr0: 0.1.10-1 + libexpat1:amd64: 2.1.0-7ubuntu0.16.04.2 + libexpat1-dev:amd64: 2.1.0-7ubuntu0.16.04.2 + libfakeroot:amd64: 1.20.2-1ubuntu1 + libfdisk1:amd64: 2.27.1-6ubuntu3.1 + libfdt1:amd64: 1.4.0+dfsg-2 + libffi6:amd64: 3.2.1-4 + libfile-fcntllock-perl: 0.22-3 + libflac8:amd64: 1.3.1-4 + libfontconfig1:amd64: 2.11.94-0ubuntu1.1 + libfontenc1:amd64: 1:1.1.3-1 + libfreetype6:amd64: 2.6.1-0.1ubuntu2 + libfribidi0:amd64: 0.19.7-1 + libfuse2:amd64: 2.9.4-1ubuntu3 + libgcc-5-dev:amd64: 5.4.0-6ubuntu1~16.04.2 + libgcc1:amd64: 1:6.0.1-0ubuntu1 + libgcrypt20:amd64: 1.6.5-2ubuntu0.2 + libgdbm3:amd64: 1.8.3-13.1 + libgirepository-1.0-1:amd64: 1.46.0-3ubuntu1 + libgl1-mesa-dri:amd64: 11.2.0-1ubuntu2.2 + libgl1-mesa-glx:amd64: 11.2.0-1ubuntu2.2 + libglapi-mesa:amd64: 11.2.0-1ubuntu2.2 + libglib2.0-0:amd64: 2.48.1-1~ubuntu16.04.1 + libglib2.0-bin: 2.48.1-1~ubuntu16.04.1 + libglib2.0-data: 2.48.1-1~ubuntu16.04.1 + libglib2.0-dev: 2.48.1-1~ubuntu16.04.1 + libgmp10:amd64: 2:6.1.0+dfsg-2 + libgnutls-openssl27:amd64: 3.4.10-4ubuntu1.1 + libgnutls30:amd64: 3.4.10-4ubuntu1.1 + libgomp1:amd64: 5.4.0-6ubuntu1~16.04.2 + libgpg-error0:amd64: 1.21-2ubuntu1 + libgssapi-krb5-2:amd64: 1.13.2+dfsg-5 + libgssapi3-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libhcrypto4-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libheimbase1-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libheimntlm0-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libhogweed4:amd64: 3.2-1 + libhx509-5-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libice6:amd64: 2:1.0.9-1 + libicu55:amd64: 55.1-7 + libidn11:amd64: 1.32-3ubuntu1.1 + libisc-export160: 1:9.10.3.dfsg.P4-8ubuntu1.1 + libiscsi2:amd64: 1.12.0-2 + libisl15:amd64: 0.16.1-1 + libitm1:amd64: 5.4.0-6ubuntu1~16.04.2 + libjpeg-turbo8:amd64: 1.4.2-0ubuntu3 + libjpeg8:amd64: 8c-2ubuntu8 + libjson-c2:amd64: 0.11-4ubuntu2 + libk5crypto3:amd64: 1.13.2+dfsg-5 + libkeyutils1:amd64: 1.5.9-8ubuntu1 + libklibc: 2.0.4-8ubuntu1.16.04.1 + libkmod2:amd64: 22-1ubuntu4 + libkrb5-26-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libkrb5-3:amd64: 1.13.2+dfsg-5 + libkrb5support0:amd64: 1.13.2+dfsg-5 + liblcms2-2:amd64: 2.6-3ubuntu2 + libldap-2.4-2:amd64: 2.4.42+dfsg-2ubuntu3.1 + libllvm3.8:amd64: 1:3.8-2ubuntu4 + liblocale-gettext-perl: 1.07-1build1 + liblsan0:amd64: 5.4.0-6ubuntu1~16.04.2 + libltdl-dev:amd64: 2.4.6-0.1 + libltdl7:amd64: 2.4.6-0.1 + liblxc1: 2.0.7-0ubuntu1~16.04.2 + liblz4-1:amd64: 0.0~r131-2ubuntu2 + liblzma5:amd64: 5.1.1alpha+20120614-2ubuntu2 + libmagic1:amd64: 1:5.25-2ubuntu1 + libmnl0:amd64: 1.0.3-5 + libmount1:amd64: 2.27.1-6ubuntu3.1 + libmpc3:amd64: 1.0.3-1 + libmpdec2:amd64: 2.4.2-1 + libmpfr4:amd64: 3.1.4-1 + libmpx0:amd64: 5.4.0-6ubuntu1~16.04.2 + libncurses5:amd64: 6.0+20160213-1ubuntu1 + libncursesw5:amd64: 6.0+20160213-1ubuntu1 + libnetfilter-conntrack3:amd64: 1.0.5-1 + libnettle6:amd64: 3.2-1 + libnewt0.52:amd64: 0.52.18-1ubuntu2 + libnfnetlink0:amd64: 1.0.1-3 + libnih-dbus1:amd64: 1.0.3-4.3ubuntu1 + libnih1:amd64: 1.0.3-4.3ubuntu1 + libnl-3-200:amd64: 3.2.27-1 + libnl-genl-3-200:amd64: 3.2.27-1 + libnspr4:amd64: 2:4.12-0ubuntu0.16.04.1 + libnss3:amd64: 2:3.23-0ubuntu0.16.04.1 + libnss3-nssdb: 2:3.23-0ubuntu0.16.04.1 + libnuma1:amd64: 2.0.11-1ubuntu1 + libogg0:amd64: 1.3.2-1 + libopus0:amd64: 1.1.2-1ubuntu1 + libp11-kit0:amd64: 0.23.2-3 + libpam-cgfs: 2.0.6-0ubuntu1~16.04.1 + libpam-modules:amd64: 1.1.8-3.2ubuntu2 + libpam-modules-bin: 1.1.8-3.2ubuntu2 + libpam-runtime: 1.1.8-3.2ubuntu2 + libpam0g:amd64: 1.1.8-3.2ubuntu2 + libpcap-dev: 1.7.4-2 + libpcap0.8:amd64: 1.7.4-2 + libpcap0.8-dev: 1.7.4-2 + libpci3:amd64: 1:3.3.1-1.1ubuntu1 + libpciaccess0:amd64: 0.13.4-1 + libpcre16-3:amd64: 2:8.38-3.1 + libpcre3:amd64: 2:8.38-3.1 + libpcre3-dev:amd64: 2:8.38-3.1 + libpcre32-3:amd64: 2:8.38-3.1 + libpcrecpp0v5:amd64: 2:8.38-3.1 + libpcsclite1:amd64: 1.8.14-1ubuntu1.16.04.1 + libperl5.22:amd64: 5.22.1-9 + libpixman-1-0:amd64: 0.33.6-1 + libplymouth4:amd64: 0.9.2-3ubuntu13.1 + libpng12-0:amd64: 1.2.54-1ubuntu1 + libpolkit-gobject-1-0:amd64: 0.105-14.1 + libpopt0:amd64: 1.16-10 + libprocps4:amd64: 2:3.3.10-4ubuntu2 + libpulse0:amd64: 1:8.0-0ubuntu3 + libpython-all-dev:amd64: 2.7.11-1 + libpython-dev:amd64: 2.7.11-1 + libpython-stdlib:amd64: 2.7.11-1 + libpython2.7:amd64: 2.7.12-1~16.04 + libpython2.7-dev:amd64: 2.7.12-1~16.04 + libpython2.7-minimal:amd64: 2.7.12-1~16.04 + libpython2.7-stdlib:amd64: 2.7.12-1~16.04 + libpython3-stdlib:amd64: 3.5.1-3 + libpython3.5-minimal:amd64: 3.5.2-2~16.01 + libpython3.5-stdlib:amd64: 3.5.2-2~16.01 + libquadmath0:amd64: 5.4.0-6ubuntu1~16.04.2 + librados2: 10.2.2-0ubuntu0.16.04.2 + librbd1: 10.2.2-0ubuntu0.16.04.2 + libreadline6:amd64: 6.3-8ubuntu2 + libroken18-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + librtmp1:amd64: 2.4+20151223.gitfa8646d-1build1 + libsasl2-2:amd64: 2.1.26.dfsg1-14build1 + libsasl2-modules:amd64: 2.1.26.dfsg1-14build1 + libsasl2-modules-db:amd64: 2.1.26.dfsg1-14build1 + libsdl1.2debian:amd64: 1.2.15+dfsg1-3 + libseccomp2:amd64: 2.2.3-3ubuntu3 + libselinux1:amd64: 2.4-3build2 + libsemanage-common: 2.3-1build3 + libsemanage1:amd64: 2.3-1build3 + libsepol1:amd64: 2.4-2 + libsigsegv2:amd64: 2.10-4 + libslang2:amd64: 2.3.0-2ubuntu1 + libsm6:amd64: 2:1.2.2-1 + libsmartcols1:amd64: 2.27.1-6ubuntu3.1 + libsndfile1:amd64: 1.0.25-10 + libspice-server1:amd64: 0.12.6-4ubuntu0.1 + libsqlite3-0:amd64: 3.11.0-1ubuntu1 + libss2:amd64: 1.42.13-1ubuntu1 + libssl1.0.0:amd64: 1.0.2g-1ubuntu4.5 + libstdc++-5-dev:amd64: 5.4.0-6ubuntu1~16.04.2 + libstdc++6:amd64: 5.4.0-6ubuntu1~16.04.2 + libsystemd0:amd64: 229-4ubuntu10 + libtasn1-6:amd64: 4.7-3ubuntu0.16.04.1 + libtcl8.6:amd64: 8.6.5+dfsg-2 + libtext-charwidth-perl: 0.04-7build5 + libtext-iconv-perl: 1.7-5build4 + libtext-wrapi18n-perl: 0.06-7.1 + libtinfo5:amd64: 6.0+20160213-1ubuntu1 + libtk8.6:amd64: 8.6.5-1 + libtool: 2.4.6-0.1 + libtsan0:amd64: 5.4.0-6ubuntu1~16.04.2 + libtxc-dxtn-s2tc0:amd64: 0~git20131104-1.1 + libubsan0:amd64: 5.4.0-6ubuntu1~16.04.2 + libudev1:amd64: 229-4ubuntu10 + libusb-0.1-4:amd64: 2:0.1.12-28 + libusb-1.0-0:amd64: 2:1.0.20-1 + libusbredirparser1:amd64: 0.7.1-1 + libustr-1.0-1:amd64: 1.0.4-5 + libutempter0:amd64: 1.1.6-3 + libuuid1:amd64: 2.27.1-6ubuntu3.1 + libvorbis0a:amd64: 1.3.5-3 + libvorbisenc2:amd64: 1.3.5-3 + libwind0-heimdal:amd64: 1.7~git20150920+dfsg-4ubuntu1 + libwrap0:amd64: 7.6.q-25 + libx11-6:amd64: 2:1.6.3-1ubuntu2 + libx11-data: 2:1.6.3-1ubuntu2 + libx11-xcb1:amd64: 2:1.6.3-1ubuntu2 + libxau6:amd64: 1:1.0.8-1 + libxaw7:amd64: 2:1.0.13-1 + libxcb-dri2-0:amd64: 1.11.1-1ubuntu1 + libxcb-dri3-0:amd64: 1.11.1-1ubuntu1 + libxcb-glx0:amd64: 1.11.1-1ubuntu1 + libxcb-present0:amd64: 1.11.1-1ubuntu1 + libxcb-shape0:amd64: 1.11.1-1ubuntu1 + libxcb-sync1:amd64: 1.11.1-1ubuntu1 + libxcb1:amd64: 1.11.1-1ubuntu1 + libxcomposite1:amd64: 1:0.4.4-1 + libxdamage1:amd64: 1:1.1.4-2 + libxdmcp6:amd64: 1:1.1.2-1.1 + libxen-4.6:amd64: 4.6.0-1ubuntu4.2 + libxenstore3.0:amd64: 4.6.0-1ubuntu4.2 + libxext6:amd64: 2:1.3.3-1 + libxfixes3:amd64: 1:5.0.1-2 + libxft2:amd64: 2.3.2-1 + libxi6:amd64: 2:1.7.6-1 + libxinerama1:amd64: 2:1.1.3-1 + libxml2:amd64: 2.9.3+dfsg1-1ubuntu0.1 + libxmu6:amd64: 2:1.1.2-2 + libxmuu1:amd64: 2:1.1.2-2 + libxpm4:amd64: 1:3.5.11-1 + libxrandr2:amd64: 2:1.5.0-1 + libxrender1:amd64: 1:0.9.9-0ubuntu1 + libxshmfence1:amd64: 1.2-1 + libxss1:amd64: 1:1.2.2-1 + libxt6:amd64: 1:1.1.5-0ubuntu1 + libxtables11:amd64: 1.6.0-2ubuntu3 + libxtst6:amd64: 2:1.2.2-1 + libxv1:amd64: 2:1.0.10-1 + libxxf86dga1:amd64: 2:1.1.4-1 + libxxf86vm1:amd64: 1:1.1.4-1 + libyajl2:amd64: 2.1.0-2 + linux-base: 4.0ubuntu1 + linux-firmware: 1.157.2 + linux-generic: 4.4.0.72.78 + linux-headers-4.4.0-72: 4.4.0-72.93 + linux-headers-4.4.0-72-generic: 4.4.0-72.93 + linux-headers-generic: 4.4.0.72.78 + linux-image-4.4.0-72-generic: 4.4.0-72.93 + linux-image-extra-4.4.0-72-generic: 4.4.0-72.93 + linux-image-generic: 4.4.0.72.78 + linux-libc-dev:amd64: 4.4.0-72.93 + locales: 2.23-0ubuntu3 + login: 1:4.2-3.1ubuntu5 + logrotate: 3.8.7-2ubuntu2 + lsb-base: 9.20160110ubuntu0.2 + lsb-release: 9.20160110ubuntu0.2 + lxc: 2.0.7-0ubuntu1~16.04.2 + lxc-common: 2.0.7-0ubuntu1~16.04.2 + lxc-templates: 2.0.7-0ubuntu1~16.04.2 + lxc1: 2.0.7-0ubuntu1~16.04.2 + lxcfs: 2.0.6-0ubuntu1~16.04.1 + m4: 1.4.17-5 + make: 4.1-6 + makedev: 2.3.1-93ubuntu1 + manpages: 4.04-2 + manpages-dev: 4.04-2 + mawk: 1.3.3-17ubuntu2 + mime-support: 3.59ubuntu1 + mount: 2.27.1-6ubuntu3.1 + mountall: 2.54ubuntu1 + msr-tools: 1.3-2 + multiarch-support: 2.23-0ubuntu3 + ncurses-base: 6.0+20160213-1ubuntu1 + ncurses-bin: 6.0+20160213-1ubuntu1 + ncurses-term: 6.0+20160213-1ubuntu1 + net-tools: 1.60-26ubuntu1 + netbase: 5.3 + netcat-openbsd: 1.105-7ubuntu1 + openjdk-8-jre-headless:amd64: 8u131-b11-0ubuntu1.16.04.2 + openssh-client: 1:7.2p2-4ubuntu2.1 + openssh-server: 1:7.2p2-4ubuntu2.1 + openssh-sftp-server: 1:7.2p2-4ubuntu2.1 + openssl: 1.0.2g-1ubuntu4.5 + os-prober: 1.70ubuntu3 + passwd: 1:4.2-3.1ubuntu5 + patch: 2.7.5-1 + pciutils: 1:3.3.1-1.1ubuntu1 + perl: 5.22.1-9 + perl-base: 5.22.1-9 + perl-modules-5.22: 5.22.1-9 + pkg-config: 0.29.1-0ubuntu1 + plymouth: 0.9.2-3ubuntu13.1 + plymouth-theme-ubuntu-text: 0.9.2-3ubuntu13.1 + procps: 2:3.3.10-4ubuntu2 + python: 2.7.11-1 + python-all: 2.7.11-1 + python-all-dev: 2.7.11-1 + python-apt: 1.1.0~beta1build1 + python-apt-common: 1.1.0~beta1build1 + python-dev: 2.7.11-1 + python-iniparse: 0.4-2.2 + python-minimal: 2.7.11-1 + python-pip: 8.1.1-2ubuntu0.2 + python-pip-whl: 8.1.1-2ubuntu0.2 + python-pkg-resources: 20.7.0-1 + python-setuptools: 20.7.0-1 + python-six: 1.10.0-3 + python-virtualenv: 15.0.1+ds-3 + python-wheel: 0.29.0-1 + python2.7: 2.7.12-1~16.04 + python2.7-dev: 2.7.12-1~16.04 + python2.7-minimal: 2.7.12-1~16.04 + python3: 3.5.1-3 + python3-apt: 1.1.0~beta1build1 + python3-chardet: 2.3.0-2 + python3-dbus: 1.2.0-3 + python3-gi: 3.20.0-0ubuntu1 + python3-lxc: 2.0.7-0ubuntu1~16.04.2 + python3-minimal: 3.5.1-3 + python3-pkg-resources: 20.7.0-1 + python3-requests: 2.9.1-3 + python3-six: 1.10.0-3 + python3-urllib3: 1.13.1-2ubuntu0.16.04.1 + python3-virtualenv: 15.0.1+ds-3 + python3.5: 3.5.2-2~16.01 + python3.5-minimal: 3.5.2-2~16.01 + qemu-block-extra:amd64: 1:2.5+dfsg-5ubuntu10.5 + qemu-system-common: 1:2.5+dfsg-5ubuntu10.5 + qemu-system-x86: 1:2.5+dfsg-5ubuntu10.5 + qemu-utils: 1:2.5+dfsg-5ubuntu10.5 + readline-common: 6.3-8ubuntu2 + rename: 0.20-4 + resolvconf: 1.78ubuntu2 + rsync: 3.1.1-3ubuntu1 + rsyslog: 8.16.0-1ubuntu3 + screen: 4.3.1-2build1 + seabios: 1.8.2-1ubuntu1 + sed: 4.2.2-7 + sensible-utils: 0.0.9 + sgml-base: 1.26+nmu4ubuntu1 + shared-mime-info: 1.5-2ubuntu0.1 + sharutils: 1:4.15.2-1 + socat: 1.7.3.1-1 + ssh-import-id: 5.5-0ubuntu1 + sudo: 1.8.16-0ubuntu1.1 + systemd: 229-4ubuntu10 + systemd-sysv: 229-4ubuntu10 + sysv-rc: 2.88dsf-59.3ubuntu2 + sysvinit-utils: 2.88dsf-59.3ubuntu2 + tar: 1.28-2.1 + tasksel: 3.34ubuntu3 + tasksel-data: 3.34ubuntu3 + tcl-expect:amd64: 5.45-7 + tcl8.6: 8.6.5+dfsg-2 + tcpd: 7.6.q-25 + tk8.6: 8.6.5-1 + tzdata: 2016g-0ubuntu0.16.04 + ubuntu-keyring: 2012.05.19 + ubuntu-minimal: 1.361 + ucf: 3.0036 + udev: 229-4ubuntu10 + uidmap: 1:4.2-3.1ubuntu5.3 + ureadahead: 0.100.0-19 + usbutils: 1:007-4 + util-linux: 2.27.1-6ubuntu3.1 + uuid-runtime: 2.27.1-6ubuntu3.2 + vim-common: 2:7.4.1689-3ubuntu1.1 + vim-tiny: 2:7.4.1689-3ubuntu1.1 + virtualenv: 15.0.1+ds-3 + vpp: 17.10-rc0~89-g7c35f19~b2621 + vpp-dbg: 17.10-rc0~89-g7c35f19~b2621 + vpp-dev: 17.10-rc0~89-g7c35f19~b2621 + vpp-dpdk-dkms: 17.05-vpp6 + vpp-lib: 17.10-rc0~89-g7c35f19~b2621 + vpp-plugins: 17.10-rc0~89-g7c35f19~b2621 + wamerican: 7.1-1 + wget: 1.17.1-1ubuntu1.1 + whiptail: 0.52.18-1ubuntu2 + wireless-regdb: 2015.07.20-1ubuntu1 + x11-common: 1:7.7+13ubuntu3 + x11-utils: 7.7+3 + xauth: 1:1.0.9-1ubuntu2 + xbitmaps: 1.1.1-2 + xdg-user-dirs: 0.15-2ubuntu6 + xkb-data: 2.16-1ubuntu1 + xml-core: 0.13+nmu2 + xterm: 322-1ubuntu1 + xz-utils: 5.1.1alpha+20120614-2ubuntu2 + zlib1g:amd64: 1:1.2.8.dfsg-2ubuntu4 + zlib1g-dev:amd64: 1:1.2.8.dfsg-2ubuntu4 **Kernel module listing** diff --git a/resources/tools/report_gen/conf.py b/resources/tools/report_gen/conf.py index 89dd45824f..87120a5baf 100644 --- a/resources/tools/report_gen/conf.py +++ b/resources/tools/report_gen/conf.py @@ -30,7 +30,8 @@ sys.path.insert(0, os.path.abspath('.')) # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = ['sphinxcontrib.programoutput'] +extensions = ['sphinxcontrib.programoutput', + 'sphinx.ext.ifconfig'] # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] @@ -109,7 +110,6 @@ todo_include_todos = False # pdf_documents = [('index', u'rst2pdf', u'Sample rst2pdf doc', u'Your Name'),] - # -- Options for HTML output ---------------------------------------------- # The theme to use for HTML and HTML Help pages. See the documentation for @@ -135,3 +135,86 @@ html_context = { '_static/theme_overrides.css', # overrides for wide tables in RTD theme ], } + +# -- Options for LaTeX output --------------------------------------------- + +latex_engine = 'pdflatex' + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + #'papersize': 'a4paper', + + # The font size ('10pt', '11pt' or '12pt'). + # + #'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + 'preamble': r''' + \usepackage{pdfpages} + \usepackage{svg} + \usepackage{charter} + \usepackage[defaultsans]{lato} + \usepackage{inconsolata} + ''', + + # Latex figure (float) alignment + # + 'figure_align': 'H', + + # Latex other setup + # + 'extraclassoptions': 'openany', + 'sphinxsetup': r''' + TitleColor={RGB}{225,38,40}, + InnerLinkColor={RGB}{62,62,63}, + OuterLinkColor={RGB}{225,38,40}, + shadowsep=0pt, + shadowsize=0pt, + shadowrule=0pt + ''', + 'fontpkg': r''' + \renewcommand{\familydefault}{\sfdefault} + ''' +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'csit.tex', u'CSIT Report', + u'', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +# +latex_logo = 'fdio.pdf' + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +# +latex_use_parts = True + +# If true, show page references after internal links. +# +latex_show_pagerefs = True + +# If true, show URL addresses after external links. +# +# latex_show_urls = False + +# Documents to append as an appendix to all manuals. +# +# latex_appendices = [] + +# It false, will not define \strong, \code, itleref, \crossref ... but only +# \sphinxstrong, ..., \sphinxtitleref, ... To help avoid clash with user added +# packages. +# +# latex_keep_old_macro_names = True + +# If false, no module index is generated. +# +# latex_domain_indices = True diff --git a/resources/tools/report_gen/fdio.svg b/resources/tools/report_gen/fdio.svg new file mode 100644 index 0000000000..f0dcc87cd4 --- /dev/null +++ b/resources/tools/report_gen/fdio.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + diff --git a/resources/tools/report_gen/requirements.txt b/resources/tools/report_gen/requirements.txt index 66a1b2b531..fc0ff8c728 100644 --- a/resources/tools/report_gen/requirements.txt +++ b/resources/tools/report_gen/requirements.txt @@ -1,6 +1,6 @@ Sphinx sphinx-rtd-theme -plotly==2.0.12 +plotly lxml==3.5.0 robotframework==2.9.2 sphinxcontrib-programoutput diff --git a/resources/tools/report_gen/run_report.cfg b/resources/tools/report_gen/run_report.cfg index 747beda725..3ff9e605a5 100644 --- a/resources/tools/report_gen/run_report.cfg +++ b/resources/tools/report_gen/run_report.cfg @@ -10,6 +10,7 @@ typeset -A JOB DIR[WORKING]=_tmp DIR[BUILD]=_build +DIR[BUILD,LATEX]=_build_latex DIR[RST]=../../../docs/report DIR[STATIC]=${DIR[BUILD]}/_static @@ -44,7 +45,7 @@ URL[JENKINS,HC]='https://jenkins.fd.io/view/hc2vpp/job' JOB[PERF,VPP]=csit-vpp-perf-1707-all JOB[PERF,VPP,BLD]="9 10 13 14 15 16 17 18 19 21" -JOB[PERF,VPP,FBLD]=10 +JOB[PERF,VPP,FBLD]=22 JOB[PERF,DPDK]=csit-dpdk-perf-1707-all JOB[PERF,DPDK,BLD]="1 2 3 4 5 6 7 8 9 10" JOB[PERF,DPDK,FBLD]=10 diff --git a/resources/tools/report_gen/run_report.sh b/resources/tools/report_gen/run_report.sh index a40d91dac7..bf6d5844dd 100755 --- a/resources/tools/report_gen/run_report.sh +++ b/resources/tools/report_gen/run_report.sh @@ -2,12 +2,32 @@ set -x -# Build locally without jenkins integrations +# Process parameters +# Debugging DEBUG=0 +# Latex Builder +LATEX=0 + +for i in "$@"; do +case $i in + --debug) + DEBUG=1 + ;; + --latex) + LATEX=1 + ;; + *) + # unknown option + ;; +esac +done # Script directory SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +# Get actual date +DATE=$(date -u '+%d-%b-%Y') + # Load configuration source ${SCRIPT_DIR}/run_report.cfg @@ -15,6 +35,12 @@ source ${SCRIPT_DIR}/run_report.cfg sudo apt-get -y update sudo apt-get -y install libxml2 libxml2-dev libxslt-dev build-essential \ zlib1g-dev unzip +if [[ ${LATEX} -eq 1 ]] ; +then + sudo apt-get -y install librsvg2-bin texlive-latex-recommended \ + texlive-fonts-recommended texlive-fonts-extra texlive-latex-extra latexmk wkhtmltopdf + sudo sed -i.bak 's/^\(main_memory\s=\s\).*/\110000000/' /usr/share/texlive/texmf-dist/web2c/texmf.cnf +fi # Clean-up when finished trap 'rm -rf ${DIR[WORKING]}; exit' EXIT @@ -22,6 +48,7 @@ trap 'rm -rf ${DIR[WORKING]}; exit' ERR # Remove the old build rm -rf ${DIR[BUILD]} || true +rm -rf ${DIR[BUILD,LATEX]} || true rm -rf ${DIR[WORKING]} || true # Create working directories @@ -55,14 +82,17 @@ blds=${JOB[PERF,VPP,BLD]} for i in ${blds[@]}; do curl --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,VPP]}/${i}/robot/report/output_perf_data.xml \ --output ${DIR[PLOT,VPP]}/${JOB[PERF,VPP]}-${i}.xml - #curl --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,VPP]}/${i}/robot/report/output_perf_data.json \ - # --output ${DIR[PLOT,VPP]}/${JOB[PERF,VPP]}-${i}.json if [[ ${DEBUG} -eq 0 ]] ; then curl --fail --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,VPP]}/${i}/robot/report/\*zip\*/robot-plugin.zip \ --output ${DIR[STATIC,ARCH]}/${JOB[PERF,VPP]}-${i}.zip fi done +if [[ ${DEBUG} -eq 0 ]] ; +then + curl --fail --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,VPP]}/${JOB[PERF,VPP,FBLD]}/robot/report/\*zip\*/robot-plugin.zip \ + --output ${DIR[STATIC,ARCH]}/${JOB[PERF,VPP]}-${JOB[PERF,VPP,FBLD]}.zip +fi # Archive trending cp ${DIR[PLOT,VPP]}/* ${DIR[STATIC,TREND]} blds=${JOB[1704,VPP,BLD]} @@ -81,8 +111,6 @@ blds=${JOB[PERF,DPDK,BLD]} for i in ${blds[@]}; do curl --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,DPDK]}/${i}/robot/report/output_perf_data.xml \ --output ${DIR[PLOT,DPDK]}/${JOB[PERF,DPDK]}-${i}.xml - #curl --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,DPDK]}/${i}/robot/report/output_perf_data.json \ - # --output ${DIR[PLOT,DPDK]}/${JOB[PERF,DPDK]}-${i}.json if [[ ${DEBUG} -eq 0 ]] ; then curl --fail --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,DPDK]}/${i}/robot/report/\*zip\*/robot-plugin.zip \ @@ -206,29 +234,6 @@ fi # Delete temporary json files find ${DIR[RST]} -name "*.json" -type f -delete -# Generate the documentation -DATE=$(date -u '+%d-%b-%Y') -sphinx-build -v -c . -a -b html -E \ - -D release=$1 -D version="$1 report - $DATE" \ - ${DIR[RST]} ${DIR[BUILD]}/ - -# Patch the CSS for tables layout -cat - > ${DIR[CSS_PATCH_FILE]} <<"_EOF" -/* override table width restrictions */ -@media screen and (min-width: 767px) { - .wy-table-responsive table td, .wy-table-responsive table th { - white-space: normal !important; - } - - .wy-table-responsive { - font-size: small; - margin-bottom: 24px; - max-width: 100%; - overflow: visible !important; - } -} -_EOF - # Plot packets per second # VPP L2 sel1 @@ -237,6 +242,7 @@ python run_plot.py --input ${DIR[PLOT,VPP]} \ --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-sel1-ndrdisc \ --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \ --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' + python run_plot.py --input ${DIR[PLOT,VPP]} \ --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-sel1-ndrdisc \ --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \ @@ -571,6 +577,52 @@ python run_plot.py --input ${DIR[PLOT,DPDK]} \ --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \ --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' --latency lat_50 +# HTML BUILDER +sphinx-build -v -c . -a -b html -E \ + -D release=$1 -D version="$1 report - $DATE" \ + ${DIR[RST]} ${DIR[BUILD]}/ + +# Patch the CSS for tables layout +cat - > ${DIR[CSS_PATCH_FILE]} <<"_EOF" +/* override table width restrictions */ +@media screen and (min-width: 767px) { + .wy-table-responsive table td, .wy-table-responsive table th { + white-space: normal !important; + } + + .wy-table-responsive { + font-size: small; + margin-bottom: 24px; + max-width: 100%; + overflow: visible !important; + } +} +_EOF + +# LATEX BUILDER +if [[ ${LATEX} -eq 1 ]] ; +then + # Convert PyPLOT graphs in HTML format to PDF. + for f in ${DIR[STATIC,VPP]}/*; do + wkhtmltopdf ${f} ${f%.html}.pdf + done + for f in ${DIR[STATIC,DPDK]}/*; do + wkhtmltopdf ${f} ${f%.html}.pdf + done + rsvg-convert -z 10 -f pdf -o fdio.pdf fdio.svg + + # Generate the LaTeX documentation + sphinx-build -v -c . -a -b latex -E \ + -D release=$1 -D version="$1 report - $DATE" \ + ${DIR[RST]} ${DIR[BUILD,LATEX]} + cd ${DIR[BUILD,LATEX]} + pdflatex -shell-escape -interaction nonstopmode csit.tex || true + pdflatex -interaction nonstopmode csit.tex || true + cp csit.pdf ../${DIR[STATIC,ARCH]}/csit_$1.pdf + cd ${SCRIPT_DIR} + rm -f fdio.pdf +fi + # Create archive echo Creating csit.report.tar.gz ... tar -czvf ./csit.report.tar.gz ${DIR[BUILD]} -- 2.16.6