[ofa-general] Can Mellanox cards handle scatter gather I/O?

Kent Baxley kbaxley at redhat.com
Tue Aug 14 08:36:55 PDT 2007


Evidently, we're seeing performance problems when a card on one side
is capable of scatter gather IO but the mellanox driver is not able to
handle it. Then a whole lot of time is spent gathering the data into
one skbuff.

This is currently being observed on RHEL4.5 with OFED 1.2.

Is the Mellanox card capable of doing scatter gather IO and this just
a driver limitation or is the mellanox card just not able to do scatter
gather IO?

Here is the original description of the problem in case the original
synopsis was oversimplified: 

  A second issue arises in how current kernels and specifically NETDEV
  handle scatter/gather and the related SKBs. Kernel.org is currently
  in the middle of a massive re-write of this section but existing
  ports may incur an extra buffer copy. Of the existing backports
  there are two skbuff variations. One is simply a pointer to the SKB
  while the other is a list of SKBs. If a driver supports the list and
  forwards a packet to a driver which supports only a pointer then
  NETDEV is stuck copying the list of buffers into a new single SKB.
  At 10gbs this copy can sap a processor's capacity to move data. The
  identified case where this conflict arises is the Myri10GE driver
  which supports lists of SKBs and Mellanox IB (IPoIB) driver which
  does not.

Initial search through the web suggests that the IB verbs layer does
support scatter gather IO and that it has a limit of 60 segments.
However, we've as of yet been unable to determine if that is
implemented in the verbs layer or if it is done in hardware.

If anyone has any info that might help here, it will be appreciated.

Thanks.






More information about the general mailing list