Age | Commit message (Collapse) | Author | Files | Lines |
|
When performing some zero packet loss performance testing on dataplane, it
is important (not) to count non dataplane packets. For instance, one might
receive uexpected packets from a switch, or ARP packets. Or one might need
to transmit ARP packets. Such packets should not be counted as dataplane
packets as for thse packets there is no 1:1 mapping between transmitted
packets and received packets.
To support this, the counters reporting numbers of transmitted and received
packets remain unchanged but two new counters have been added to PROX,
counting respectively number of received and number of transmitted
non-dataplane packets.
On RX side, packets are counsidered as non-dataplane if being ARP or if
they do not countain the proper signature
On TX side, ARP packets are not considered as dataplane packets.
This feature requires configuration of signature.
"dp core stats" command has been added
Change-Id: I98e113cd02f36d540383d343a433592867ad86a9
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Updated and corrected the creation of an image containing the PROX
tool with packer.
Test will now only be declared successful when average and maximum
latency are below a certain threshold.
The start speed is now also a parameter of the *.test files.
Change-Id: I1112555c87e7a857e1c699921ae08f61281642e1
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
|
|
JIRA: SAMPLEVNF-128
Improve performance of l3fwd use-case.
L3fwd did not disable TX offload flags, which resulted in
non-vector mode to be used in pmd in some cases like bare-metal.
Note that in some cases such as virtio, vector mode was already
used as OVS reports that it does not support TX-offload, hence
TX-offload was already disabled on virtio.
Using vector mode usually brings higher performance.
Change-Id: I102b846d604a9cf28c6b7dae8bedbe918ccfcf6c
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
JIRA: SAMPLEVNF-127
PROX was crashing in the VM with vector mode enabled and multiple OVS
queues. This was not really a PROX bug, but a DPDK issue, which has been
fixed by DPDK commit https://git.dpdk.org/dpdk/commit/?id=efc83a1e7fc3
This "net/virtio: fix queue setup consistency" is included in DPDK 17.11
and subsequent versions, and has been backported into:
- DPDK 16.11.4:
https://git.dpdk.org/dpdk-stable/commit/?h=16.11&id=516447a5056c
- DPDK 17.08.1:
https://git.dpdk.org/dpdk-stable/commit/?h=17.08&id=907fe4fc263e
This means the fix is not included into any DPDK 17.02.x used by NSB.
Fortunately, a simple workaround consists of calling
rte_eth_tx_queue_setup() before rte_eth_rx_queue_setup().
This change implements this simple workaround, in order to make PROX
work, even with unfixed DPDK versions.
Change-Id: I818e9bb812babe023c6b7225c8b9769a359d9bec
Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
|
|
|
|
This patch makes PROX compile with DPDK 18.05.
However some features are disabled or will not work as expected
such as:
"mem info" command
"police" mode
Those will need to be fixed later (see DPDK1805 within code).
Change-Id: Ie7d72f6ab3db68bc093c42d60d125fe86f8fbda7
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
|
|
Detect, remember and skip bad/unexpected packets:
- too short to hold the latency-related values
- with bad signature
- with invalid generator_id
using a uint64_t-based bitmap.
Also moved variable declarations closer to usage,
added some likely/unlikely hints,
reworked some return statements, and
fixed 32-bit overflow (every ~4s) of rx_time_err computation.
Change-Id: Ib2aadc1af6b7a68601cc080ba66b10d41ff9a64e
Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
|
|
Based on a CentOS cloud image downloadable from the web, you can now use
packer to create an image that has DPDK and PROX installed in the
proper directories. The VM is also tuned for guest VNFs.
A service is also created to deal with the proper isolated_cpu settings
for tuned. The service will also make sure uio and igb_uio are loaded.
The prox_user_data.sh is not needed any more and hence deleted.
ctrl-c of runrapid.py will now also stop prox in all the VMs so a new
test can be started.
Change-Id: I16cc59878e2d4912757f42e05f98d51dff5feb89
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
|
|
JIRA: YARDSTICK-1220
Implemented new "multi port stats <port list>" command, which returns a
semi-colon-separated list of comma-separated values:
- port id
- total (at last_tsc) for rx_pkts, tx_pkts, no_mbufs, ierrors + imissed
- last_tsc
Change-Id: I8a8da79cb4ccb245ccb38b50b561da51a40a359d
Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
|
|
mbuf size was setup to achieve the best performance i.e.
using the smallest mbuf and not segmenting packets.
However this resulted in complex code, much dependent of the way
the pmd are working e.g. a change(fix) in recent dpdk i40e
implementation caused a 1782 (=1518+8+256) bytes mbuf to be too
small to hold a 1518 bytes packets.
Hence this change simplifies the mbuf size selection at the price
of a potential decreases in performance - as more memory is now used.
Except if jumbo frames are used, the mbuf size will now be the same
for all modes. The packets will not be segmented except if jumbo
frames are enabled.
If jumbo frames are enabled, packets are by default segmented, except
if the mbuf size is configured big enough in the config file.
Change-Id: I222fcac7a65c0d221d5d422f419deb9c0f864172
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
Signed-off-by: Deepak S <deepak.s@linux.intel.com>
|
|
Change-Id: I6c1a8f6d8e3bc84f7eb8e5780cde98dd9c03c805
Signed-off-by: Igor Shaula <igor.shaula@intel.com>
|
|
|
|
|
|
|
|
|
|
|
|
When configuring a port, prox configures queue flags.
For historitical reasons, offloads had to be disabled on
some pmds.
There is now an API to query the ports and gets their
capabilities. This fix sets now the flags based on the capabilities,
and not the driver name.
Change-Id: Ic72d15001992f26910f653c70d31e4381fff8089
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Add support for pkt_inline of jumbo frames.
Dump the whole packet, and not a truncated packet. This might
have a small impact on performance as the memory footprint
is increased (by ~640K * number of tasks), resulting in potential
higher DTLB misses.
Change-Id: I4ed02be7ca899db4f8f97355c180a92d69d39d8f
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Change-Id: I63af4e5c5c01a4412d517e33fc7111481fd0524a
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Change-Id: I1a4aee3d550d007046be9d1677dd0ad980cb9817
Signed-off-by: Igor Shaula <igor.shaula@intel.com>
|
|
Change-Id: I937bb38baa51d1902793fa8720a3ea740a583473
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
In the [core] definition we were able to use one variable
such as $core1 in [core $core1] but not [core ${core1}].
The second syntax is used when we want multiple
variables such as in [core ${first_core}-${last_core}].
This second syntax is now supported.
Change-Id: Ic94b84cb8cf827acb6697789cd180f41c3bdb028
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
|
|
|
|
When link is down at startup, the link_speed returned by DPDK
is 0. This results in un-optimized latency estimates in gen and lat.
With this fix, lat and gen do nothing until link_speed is
properly initialized, and use the right link speed in the fast path.
Change-Id: Id2d14b6966ccfac7cc78db3c5a74e704b42edae7
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Change-Id: Ibee77e31c0eb7a0e14e7aa0df092a278dfe75d6b
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Jumbo frames are now supported through the addition of a "mtu"
parameter of the port in the config file.
Setting the mtu to a value higher than 1500 bytes will enable
the reception of jumbo frames.
In addition, the rte_eth_dev_set_mtu is now set for all pmds.
Finally, setting mbuf_size does not set MEMPOOL_F_NO_SPREAD
anymore. This option was only used for pure debugging.
Big packets can be received using two ways
- Using multiple "small" mbufs, i.e. around 2K. This is the default.
- Using one big mbuf holding the whole packet. This can be enabled
by setting a parameter mbuf_size in the receiving core configuration
Change-Id: Idd60ad31f41c89f9522dff4d894af2696b7a2ea1
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
|
|
|
|
|
|
This file describes flavors, flavor meta data and boot info.
All this info can be defined in the [Default] section and will then be
used by to create all VMs. This data can also be specified in individual
VM sections to overule the deault values per VM.
Change-Id: I9d59208360eacec2790e5c467d7afcbeba301251
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
|
|
Add support for space-divided bytes in MAC string.
Support the same format as in "pkt inline".
Change-Id: I7f2136c4424c45ce4abad4082470c9c9b1b3ab05
Signed-off-by: Igor Shaula <igor.shaula@intel.com>
|
|
resolve memory allocation issue
Change-Id: I90bbf711a6a7a4869e5024c061470d9779839a60
Signed-off-by: Igor Shaula <igor.shaula@intel.com>
|
|
* Experimental, for dpdk-stable-17.05.2
* New improved ESP decapsulation function
Change-Id: If4862dacb3fcf53e21eb5932a195664f80c7c192
Signed-off-by: Igor Shaula <igor.shaula@intel.com>
|
|
There is now a new file (rapidVMs.vms) describing how many VMs need
to be created. You can specify the same flavor values in the [DEFAULT]
section or specify specific flavors per VM.
The heat stack yaml files are removed.
Change-Id: Ic5ec485e8344a35e9ac9f6e8347adbc70520d10a
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
|
|
Makefile checks for some coding style rules.
Previous commit introduced trailing white-spaces, which broke
compilation.
Change-Id: Ia57fc9b1428b4a9f8537dce4875e62ac55265fe3
Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
|
|
|
|
Revert back part of commit 9fa316261d7d9
The function abs_diff was erroneously changed to diff_or_zero.
This function was supposed to measure the difference between rx and
tx time; when rx time overflowed and tx time not yet (i.e.
rx time ~= 0 and tx_time ~=UINT32_MAX, this function added UINT32_MAX
to rx_time. The name of the function was confusing and caused the
previous commit. Net effect of previous commit was that every four seconds
the minimum latency was 0
This commit reverse back to the original behavior, with a function name
diff_time.
Change-Id: Ia1b80e48a756cf5df411dcf58ca1cbc835214d13
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Link_speed could be null when prox started with the ports down.
This was potentially causing a crash.
Another task will need to update link speed when the port come
up. Failing to do this results in less accurate latencies
(no extrapolation)
Change-Id: I597b68e30117e6edb9ccb4732c2acedd5eb8ac80
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
|
|
|
|
|
|
* Calculation of aboslute and relative dropped packets was wrong and is
now fixed.
* ./createrapid.py has now an extra option to select custom availability
zones for the different VMs.
* Fixed a typo to create the flavor: hw:cpu_thread_policy
* The generator config files have now the packet id & signature fields.
See PROX for more details on this.
* ./runrapid has now a new option --configonly. Default is False. If set
to True, all configuration files will be copied to the VMS, but the
tests are not started. This allows you to go to the VMs and manually
start PROX.
* In addition to the average latency, maximum latency is now also
displayed.
Change-Id: I3bbd7897deb6e452068c07ef68d3959ffa4a4b50
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
|
|
- Also changed lat_info.tx_packet_index to uint64_t,
so also did it for task_lat.prev_tx_packet_index and n_loss.
- Adjusted format strings accordingly, and fixed some other formats.
- Adjusted overflow increment to 2^32 (i.e. UINT32_MAX + 1).
- Replaced hard-coded 64 with ACCURACY_BUFFER_SIZE (still hard-coded
in handle_gen.c).
Change-Id: Ia59f36e17c0797a2a958dbe3b2ac420263473524
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
Signed-off-by: Patrice Buriez <patrice.buriez@intel.com>
|
|
This feature will enable the possibility to have many cores
configured in a prox config file, and enable/disable them
through variables.
For instance, a [core $var1] section in a config file will
result in [core 1] if $var1 = 1; the whole section and section
content will be ignored if $var1=#
Before this implementation, [#core 1] or [core #] was already
treated as a commented out section (the whole section was
commented). But there was no way to define a variable $var = #
to comment a section through a variable.
Note that in today's implementation any non numerical
(except s, h, t, -) characteter in the [core] section header
(and not only #) will cause the section to be ignored.
It would probably be better to consider # (as maybe N/A and none)
as comments, and everything else as error. This is however not
supported by the change request.
Change-Id: Id4e2b27a1f9b6d595e0b442dcd971ad44a502031
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
|
|
In some (rare) modes, more than 64 packets can be received through
one rx function. This is for instance the case of the lat mode.
Change-Id: Ie733c927a8e116c679c464f2551768185ef85366
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Using l2 testing, where no ARP messages are being used, you can now run
a zero packet loss test. The binary search will continue to find the
speed where absolutely no packets have been lost during the test.
On top of that, the output has been reformatted to also show the
absolute and relative packet loss.
The *.test files have now 2 new parameters: drop_rate_treshold and accuracy.
When drop_rate_treshold is set to 0, this test will conclude successfull
when no packet has been lost whatsoever. If this is set to any other
number, the test will be successfull when the relative packet loss is
lower than drop_rate_treshold.
The new accuray parameter defines when the binary search will stop:
when the relative difference between the min and max of the search
window is lower than accuracy.
The irq testing is slightly modified to print the total number of
interrupts in a certain time bucket, not only as the number per second,
but when there is no interrupt whatsowever, we print '0' in stead of
'0.0'
Change-Id: I8fafded0a225cbe1ba7ac61cd28e94d72099e4a0
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
|
|
Fixed issues with pkt_size. For a 64 byte packet, we need to issue
pkt_size <core> <task> 60
4 extra bytes will be calculated and added automatically by PROX
Also added the missing irq.test and irq.cfg files
Added support for OpenStack systems not using floating IP addresses
Change-Id: I05d775eb858a58dd349ea370a0e34ac6448590c9
Signed-off-by: Luc Provoost <luc.provoost@intel.com>
|
|
Cores can now be specified in the test files. An irq test has been
added to verify if the VMs are not suffering from long interrupts.
Change-Id: I647fda3ebf76c7c2b36a8df9a63d9fb83563c249
Signed-off-by: Provoost <luc.provoost@intel.com>
|