From: Sunil Muthuswamy <sunilmut@xxxxxxxxxxxxx> Date: Wed, 22 May 2019 23:10:44 +0000 > Currently, the hv_sock send() iterates once over the buffer, puts data into > the VMBUS channel and returns. It doesn't maximize on the case when there > is a simultaneous reader draining data from the channel. In such a case, > the send() can maximize the bandwidth (and consequently minimize the cpu > cycles) by iterating until the channel is found to be full. > > Perf data: > Total Data Transfer: 10GB/iteration > Single threaded reader/writer, Linux hvsocket writer with Windows hvsocket > reader > Packet size: 64KB > CPU sys time was captured using the 'time' command for the writer to send > 10GB of data. > 'Send Buffer Loop' is with the patch applied. > The values below are over 10 iterations. ... > Observation: > 1. The avg throughput doesn't really change much with this change for this > scenario. This is most probably because the bottleneck on throughput is > somewhere else. > 2. The average system (or kernel) cpu time goes down by 10%+ with this > change, for the same amount of data transfer. > > Signed-off-by: Sunil Muthuswamy <sunilmut@xxxxxxxxxxxxx> Applied.