[openib-general] Re: uverbs performance; ibv_pingpong poll vs sleep

Michael S. Tsirkin mst at mellanox.co.il
Wed Jun 8 05:01:10 PDT 2005


Quoting r. Steven Wooding <sinate at yahoo.com>:
> Subject: uverbs performance; ibv_pingpong poll vs sleep
> 
> Hi,
>  
> I wonder if anyone could help me with uverbs performance.
>  
> I have compaired the data rates using ibv_pingpong with and without the -e
> option. Therefore, using polling and waiting the CQ events (sleeping).
>  
> For a data message size of 16K I get the following results:
>  
> Poll: 718 MB/s with CPU at 100%
> Sleep: 479 MB/s with CPU at 16%

What do you do for CPU utilisation measurement?

> I suppose the decrease in throughput is due to the time it takes to get the CQ
> event.

Yes, pingpong is not really a bandwidth benchmark.
It never has more than one outstanding transaction on a qp,
so its bandwidth is very sensitive to roundtrip times.

> Is there any way to trade off the data rate with the CPU usage (I was thinking
> of some timeout from polling).
>  
> Any suggests would be very welcome.
>  
> Regards,
>  
> Steve.

Steve, I think an application should create some kind of
pipelining, performing multiple sends before waiting for
events.

I have a working example of how this can be done, but unfortunately
its not yet ready for publication.

The idea basically is to have n outstanding buffers and tx of size n.
Count the number of send requests sent and completed.
Now basically replace each post send with

	while (send - completed < n)
		post send


As n grows, you shall see different cpu utilization/bandwidth points.


-- 
MST



More information about the general mailing list