Age | Commit message (Collapse) | Author | Files | Lines |
|
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>
|
|
|
|
|
|
|
|
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>
|
|
|
|
|
|
When doing latency measurements PROX takes into account the
generation or reception of a bulk of packets. For instance, if
PROX receives at time T 4 packets, it knows that the first
packet was received by te NIC before T (the time to receive the other
3 packets, as they were received at maximum link speed).
So the latency data is decreased by the minimum time to receive those
3 packets.
For this PROX was using a default link speed of 10Gbps. This is wrong
for 1Gbps and 40Gbps networks, and was causing for instance issues
on 40 Gbps networks as extrapolating too much, resulting in either
too low latencies or negative numbers (visible as very high latencies).
Change-Id: I4e0f02e8383dd8d168ac50ecae37a05510ad08bc
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
irq mode can be used to show how a core is interrupted by other tasks.
This mode does not handle packets. It only loops reading tsc.
When the difference between two consecutive calls to rdtsc() is high
then it means the core was interrupted.
This task implementes the display, so that we can see a histogram of
interrupts as well as the maximum, per core.
Command line is also supported, through "show irq buckets" (too show
the intervals of each buckets, in micrcoseconds), and the stats
command line (showing the number of items in each buckets and the max)..
Change-Id: I153cc3deaa7b86ae2776ea44e46ef9ecfd116992
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
There were two issues identified in dump receive packets
- when the receive packets was going to be dropped (and not transmitted),
it was also printed as TX[255].
- a potential crash when using the dump function with modes like
lat which can receive more than MAX_RING_BURST.
Those issues have been fixed.
Change-Id: Ia2297539d64961a211389d68e3c9c6280472243c
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
|
|
|
|
|
|
|
|
|
|
When doing latency measurements the generator can add a
32 bits signature in the packet at a specific location,
so that the receiver only uses the packets generated by the
generator and ignores packets generated for instance by a switch
The is particuly important for latency measurements as we use
data in the packets as timestamps, and packets generated elsewhere
would result in random latency for those packets.
Change-Id: I8352b35aff76ec8d1344a1e492b9dcc20a53f1ce
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
PROX can stack different RX functions, so that they are executed
after each other.
This feature is for instance used to dump packets or to print
distribution of receive packets, without influencing the performance
of the rx functions when no dump or print is needed.
The previous implementation was wrong and causing some of the stacked
functions not to be executed. This was causing for instance issues
in latency measurement after enabling dumping packets.
Change-Id: I766b8ee8e8852fa17cdaf60ee6e1fec0dc98c719
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
|
|
Change-Id: I9ef89020d203674f6c3301653ab2ff9d623665b6
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
L2fwd and swap has many options to set src mac. swap was supposed
to support the ability to use port mac, but config file parsing was
wrong. L2fwd was using port mac if a port was available and if
src mac=packet or if there was no src mac in the config.
Now l2fwd supports the following options
- "src mac=xx:xx:xx:xx:xx:xx" => this mac address is used as src mac.
- "src mac=packet" => the src mac is taken from the dst mac of the
received packet.
- "src mac=hw" => the src mac is taken from the mac address of the port,
if there is a physical port. Error otherwise.
- "src mac=no" => src mac kept untouched
- No "src mac" => same as "src mac=hw" if there is a physical port
and same as "src mac=packet" otherwise.
Default is (no "src mac") hence the mac is taken from the tx port if there
is one tx port and from the packet otherwise.
swap support is similar, except that it does not support "src mac=no".
Change-Id: I70fe49a61c2e85772288b769ede14a7a6205d122
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Change-Id: I5611ead4b61b23d6c1c983852e8c75619e08ecf9
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
As it was non being initialized, fragment offset was sometimes non null.
prox_ip_cksum_sw (as well as prox_ip_cksum_hw) require the hdr_checksum
field to be initialized to 0.
Change-Id: I3824682023782edb555982e558e5ae68062c3c9b
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
|
|
|
|
When multiple tasks generate to the same ip in l3 mode (i.e. with arp
support), all those tasks generate arp requests. we need to make sure
that they all receive a arp-reply i.e. that the master broadcast
the reply to all those cores.
Change-Id: I7e89196497a1016a94dde167f212b1f6ed03bcfe
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
This adds support for tasks in l3 submode receiving from ports but
transmitting to rings.
ARP related information is exchanged between tasks through master core.
Tasks transmitting to physical ports are responsible to transmit arp
related packets. Tasks not transmitting to physical ports (and using
rings) should not try to transmit arp packets. Transmitting arp
packets through ring would be more complex, as we would need extra information
(within the mbuf) to distinguish for instance an arp reply comoing from the
network and an arp reply coming from a core (as a reply to an arp request).
Change-Id: Ib55dc8c39d5e55703a933faa16bcc008f1274929
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Using now .test files describing the test to be executed.
Also desribed in the README file how to deal with SRIOV ports.
Change-Id: I3eb1551d7f205fef3fa1914bc6959c2126d63425
Signed-off-by: Provoost <luc.provoost@intel.com>
|
|
|
|
|
|
Packets dropped by QoS (because queues were full) were erroneously
shown as idle cycles. There aee now shown as discarded packets.
Change-Id: I01a619de621a3dfbfe11cabef257f9dec311e208
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|
|
Different checks were done when setting the generator pkt_size.
In case of wrong pkt_size (e.g. too big) an error was printed but
the pkt_size was still set causing a potential corruption.
In addition, in case of a packet size incompatible with some
of the packet fields (e.g. latency data) PROX was panicing
while this should not happen runtime for such an error.
Change-Id: Ifa11475bf295aaac7b0255c1bf9b5feed8ef90c4
Signed-off-by: Xavier Simonart <xavier.simonart@intel.com>
|