Achiad Shochat
88a85f99e5
net/mlx5e: TX latency optimization to save DMA reads
...
A regular TX WQE execution involves two or more DMA reads -
one to fetch the WQE, and another one per WQE gather entry.
These DMA reads obviously increase the TX latency.
There are two mlx5 mechanisms to bypass these DMA reads:
1) Inline WQE
2) Blue Flame (BF)
An inline WQE contains a whole packet, thus saves the DMA read/s
of the regular WQE gather entry/s. Inline WQE support was already
added in the previous commit.
A BF WQE is written directly to the device I/O mapped memory, thus
enables saving the DMA read that fetches the WQE.
The BF WQE I/O write must be in cache line granularity, thus uses
the CPU write combining mechanism.
A BF WQE I/O write acts also as a TX doorbell for notifying the
device of new TX WQEs.
A BF WQE is written to the same I/O mapped address as the regular TX
doorbell, thus this address is being mapped twice - once by ioremap()
and once by io_mapping_map_wc().
While both mechanisms reduce the TX latency, they both consume more CPU
cycles than a regular WQE:
- A BF WQE must still be written to host memory, in addition to being
written directly to the device I/O mapped memory.
- An inline WQE involves copying the SKB data into it.
To handle this tradeoff, we introduce here a heuristic algorithm that
strives to avoid using these two mechanisms in case the TX queue is
being back-pressured by the device, and limit their usage rate otherwise.
An inline WQE will always be "Blue Flamed" (written directly to the
device I/O mapped memory) while a BF WQE may not be inlined (may contain
gather entries).
Preliminary testing using netperf UDP_RR shows that the latency goes down
from 17.5us to 16.9us, while the message rate (tested with pktgen) stays
the same.
Signed-off-by: Achiad Shochat <achiad@mellanox.com>
Signed-off-by: Amir Vadai <amirv@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-07-27 00:29:17 -07:00
..
2015-07-17 16:39:53 -07:00
2015-06-08 14:33:26 +03:00
2015-07-12 21:13:22 +02:00
2015-07-09 20:30:34 +03:00
2015-04-22 09:24:55 -07:00
2015-06-25 11:49:31 +03:00
2015-05-26 09:18:29 +05:30
2015-05-22 18:58:44 +09:00
2015-07-16 00:12:24 +02:00
2015-06-22 12:25:04 +01:00
2015-06-01 11:31:12 +01:00
2015-06-25 14:45:46 -07:00
2015-06-27 12:44:34 -07:00
2015-06-26 14:51:15 -07:00
2015-06-24 16:49:49 -07:00
2015-07-27 00:29:17 -07:00
2015-06-18 09:20:48 +02:00
2015-05-27 12:42:16 -07:00
2015-06-18 21:14:33 +02:00
2015-06-23 14:08:54 -07:00
2015-06-03 14:13:41 +09:00
2015-06-01 15:48:12 +02:00
2015-07-03 14:57:50 -07:00
2015-05-23 22:43:28 +02:00
2015-04-22 08:00:41 +10:00
2015-06-22 11:19:56 +01:00
2015-05-20 15:05:39 -07:00
2015-06-10 15:10:26 +08:00
2015-06-19 15:18:28 +02:00
2015-06-01 17:57:34 +02:00
2015-05-31 13:40:53 +02:00
2015-06-21 21:52:24 +02:00
2015-07-02 11:32:23 -07:00
2015-05-13 12:04:55 -05:00
2015-07-09 14:58:31 -07:00
2015-07-07 22:48:25 +02:00
2015-04-22 17:06:52 +02:00
2015-04-22 08:00:42 +10:00
2015-05-05 09:30:19 -04:00
2015-07-02 08:46:00 -06:00
2015-07-02 08:46:00 -06:00
2015-06-23 15:47:35 +01:00
2015-05-11 11:49:02 +02:00
2015-06-21 21:55:33 +02:00
2015-06-02 08:33:34 -06:00
2015-06-26 10:11:58 -04:00
2015-07-09 14:41:11 -06:00
2015-06-01 14:35:56 -06:00
2015-06-26 12:35:01 -07:00
2015-06-24 17:49:41 -07:00
2015-05-19 08:39:11 +02:00
2015-07-20 20:52:31 -07:00
2015-06-10 23:33:58 -07:00
2015-07-02 01:32:44 -04:00
2015-05-24 12:31:33 -07:00
2015-06-18 16:54:28 -04:00
2015-06-26 19:50:04 -07:00
2015-06-20 13:29:48 -07:00
2015-05-06 11:58:51 +01:00
2015-07-17 16:39:53 -07:00
2015-06-02 16:56:42 +02:00
2015-05-19 16:12:32 +02:00
2015-07-17 16:39:53 -07:00
2015-06-25 17:00:38 -07:00
2015-06-25 17:00:38 -07:00
2015-07-11 20:44:31 -07:00
2015-07-17 16:39:53 -07:00
2015-05-10 19:15:52 +02:00
2015-06-25 17:00:38 -07:00
2015-05-07 12:02:50 +02:00
2015-05-07 12:02:51 +02:00
2015-05-04 21:27:52 -07:00
2015-07-17 16:39:53 -07:00
2015-05-23 00:49:04 +02:00
2015-06-19 01:18:02 +02:00
2015-05-28 11:05:20 +09:30
2015-05-26 15:26:43 +02:00
2015-05-30 22:42:24 -07:00
2015-06-22 15:49:30 +08:00
2015-07-17 16:39:53 -07:00
2015-05-10 22:18:24 -04:00
2015-07-17 16:39:53 -07:00
2015-05-13 14:35:57 +05:30
2015-06-25 09:21:49 +05:30
2015-05-05 13:35:39 -06:00
2015-06-12 11:33:52 +02:00
2015-06-25 09:06:57 +02:00
2015-06-29 10:34:42 -07:00
2015-06-10 08:01:20 -06:00
2015-05-05 19:24:42 -04:00
2015-06-12 17:01:42 -07:00
2015-05-28 15:41:45 -07:00
2015-07-01 02:30:09 -04:00
2015-07-20 20:52:31 -07:00
2015-06-24 17:49:45 -07:00
2015-07-13 06:29:11 -04:00
2015-05-31 15:51:24 +09:00
2015-06-24 17:49:38 -07:00
2015-06-30 19:45:01 -07:00
2015-06-30 19:44:56 -07:00
2015-05-31 11:40:14 +09:00
2015-05-12 10:46:53 +02:00
2015-05-19 08:39:11 +02:00
2015-07-13 14:18:07 -07:00
2015-06-01 14:33:35 +02:00
2015-05-19 08:39:14 +02:00
2015-06-19 15:18:28 +02:00
2015-04-24 15:36:50 +02:00
2015-07-17 16:39:52 -07:00
2015-05-02 09:54:30 +03:00
2015-06-01 10:56:31 +09:00
2015-05-05 13:40:42 -06:00
2015-05-31 13:40:53 +02:00
2015-06-15 17:23:03 -07:00
2015-06-23 06:14:04 -07:00
2015-05-11 10:50:17 -04:00
2015-06-01 16:50:52 -07:00
2015-05-04 14:49:23 -04:00
2015-06-15 19:49:22 -07:00
2015-06-24 02:15:54 -07:00
2015-06-26 19:50:04 -07:00
2015-07-05 23:59:14 -04:00
2015-06-23 18:27:19 -07:00
2015-04-22 17:06:52 +02:00
2015-05-19 08:39:14 +02:00
2015-06-03 12:02:00 +02:00
2015-07-17 16:39:53 -07:00
2015-07-22 10:54:11 -07:00
2015-06-25 12:06:34 +02:00
2015-07-02 22:34:38 +02:00
2015-07-08 11:32:25 +02:00
2015-05-18 17:32:43 +02:00
2015-06-25 12:06:45 +02:00
2015-06-15 14:36:01 -04:00
2015-06-10 11:31:14 +02:00
2015-07-17 16:39:53 -07:00
2015-07-03 15:20:57 -07:00
2015-04-23 16:52:01 +02:00
2015-06-24 17:49:46 -07:00
2015-07-17 16:39:53 -07:00
2015-05-13 10:19:35 +02:00
2015-07-10 13:25:26 +02:00
2015-05-26 12:40:17 +02:00
2015-05-04 11:05:55 -07:00
2015-06-19 10:03:12 +02:00
2015-06-25 16:49:21 -07:00
2015-04-29 17:17:17 -05:00
2015-06-26 11:23:38 -04:00
2015-05-19 23:58:43 +02:00
2015-06-24 15:09:40 -07:00
2015-06-27 13:26:03 -07:00
2015-06-11 22:19:45 +05:30
2015-05-12 09:18:16 +05:30
2015-05-28 12:21:08 +02:00
2015-05-14 22:35:13 -04:00
2015-05-24 11:15:54 -07:00
2015-06-30 19:44:55 -07:00
2015-06-25 16:00:17 -07:00
2015-05-12 10:39:26 -04:00
2015-06-24 17:49:41 -07:00
2015-06-30 19:44:56 -07:00
2015-07-17 16:39:53 -07:00
2015-06-24 17:49:44 -07:00
2015-06-30 19:44:56 -07:00
2015-07-07 01:55:20 +02:00
2015-07-05 23:59:14 -04:00
2015-07-01 10:49:25 -07:00
2015-06-16 14:35:06 +08:00
2015-07-21 10:39:05 -07:00
2015-05-15 01:10:45 -04:00
2015-06-25 04:20:04 -04:00
2015-05-11 10:50:17 -04:00
2015-05-12 18:43:55 -04:00
2015-07-20 18:32:44 -07:00
2015-06-12 14:16:46 +02:00
2015-06-18 21:14:31 +02:00
2015-05-14 01:10:05 -04:00
2015-06-12 14:10:12 +02:00
2015-06-18 21:14:31 +02:00
2015-05-09 22:15:31 -04:00
2015-06-24 10:17:37 -04:00
2015-06-27 11:48:58 -04:00
2015-06-24 10:53:11 -04:00
2015-06-10 18:32:40 -04:00
2015-06-24 10:17:37 -04:00
2015-05-05 17:10:11 -07:00
2015-06-24 17:49:40 -07:00
2015-07-04 14:05:49 -04:00
2015-07-04 14:04:44 -04:00
2015-06-05 10:58:34 -06:00
2015-05-28 12:59:40 -05:00
2015-05-09 17:11:25 +05:30
2015-07-01 19:40:18 -07:00
2015-06-24 11:18:48 +10:00
2015-07-01 19:40:18 -07:00
2015-06-24 17:49:43 -07:00
2015-05-08 12:27:59 +02:00
2015-07-17 16:39:54 -07:00
2015-07-04 19:36:06 -07:00
2015-06-01 07:08:18 +09:00
2015-07-17 16:39:53 -07:00
2015-06-24 16:49:49 -07:00
2015-06-12 15:26:45 -05:00
2015-05-29 07:39:34 +10:00
2015-06-26 14:02:43 -07:00
2015-07-10 23:17:32 -07:00
2015-06-16 14:12:37 -04:00
2015-05-12 23:55:37 +02:00
2015-05-30 02:17:15 +02:00
2015-05-20 01:56:31 +02:00
2015-06-19 01:18:14 +02:00
2015-06-29 10:34:42 -07:00
2015-06-10 16:15:54 +02:00
2015-07-03 18:55:00 +02:00
2015-07-17 16:39:53 -07:00
2015-06-15 14:40:49 +02:00
2015-06-12 11:36:30 +02:00
2015-06-05 11:40:45 +01:00
2015-05-28 10:47:45 -05:00
2015-06-10 19:14:04 +08:00
2015-05-28 11:32:04 +09:30
2015-05-28 11:32:06 +09:30
2015-05-28 11:32:04 +09:30
2015-05-27 12:58:04 -07:00
2015-07-01 10:49:25 -07:00
2015-05-27 12:59:31 -07:00
2015-06-22 18:57:44 -07:00
2015-05-22 12:19:21 +01:00
2015-06-17 09:57:12 +03:00
2015-05-16 18:08:26 -04:00
2015-05-26 15:23:23 +02:00
2015-06-25 01:13:43 +02:00
2015-06-23 06:56:18 -07:00
2015-06-30 19:44:59 -07:00
2015-07-18 03:42:51 +02:00
2015-05-24 12:13:36 -07:00
2015-06-27 13:26:03 -07:00
2015-06-23 18:01:07 -04:00
2015-07-01 10:49:25 -07:00
2015-05-31 16:21:38 +09:00
2015-05-06 22:27:00 +02:00
2015-05-10 19:06:38 +02:00
2015-07-21 10:39:06 -07:00
2015-06-29 10:49:51 -07:00
2015-06-24 17:49:40 -07:00
2015-06-15 19:49:22 -07:00
2015-05-27 12:57:27 -07:00
2015-06-25 17:00:38 -07:00
2015-07-20 20:45:57 -07:00
2015-06-25 17:00:40 -07:00
2015-05-11 15:06:43 +08:00
2015-05-19 09:19:59 -06:00
2015-06-26 14:02:43 -07:00
2015-07-01 10:36:39 -05:00
2015-07-01 10:36:45 -05:00
2015-06-25 17:00:39 -07:00
2015-05-23 01:22:35 -04:00
2015-05-11 19:46:52 -07:00
2015-07-07 21:56:34 +02:00
2015-06-12 11:15:49 +02:00
2015-06-12 11:15:49 +02:00
2015-07-09 10:51:46 +02:00
2015-06-19 15:18:28 +02:00
2015-04-22 17:06:49 +02:00
2015-05-27 15:22:15 +02:00
2015-05-13 15:25:39 -04:00
2015-05-18 14:08:58 -07:00
2015-05-29 17:21:45 -05:00
2015-06-15 16:02:52 -07:00
2015-05-19 08:39:18 +02:00
2015-05-14 17:55:51 -07:00
2015-04-28 12:48:57 +02:00
2015-05-05 17:10:11 -07:00
2015-06-01 15:48:54 +02:00
2015-06-01 15:48:54 +02:00
2015-06-12 17:26:57 -07:00
2015-06-01 15:48:54 +02:00
2015-06-29 11:10:56 -07:00
2015-06-29 11:51:06 +02:00
2015-05-21 17:26:22 -04:00
2015-06-02 08:40:20 -06:00
2015-06-25 17:00:37 -07:00