From: Rick Jones <rick.jones2@hp.com>
To: Sharat Masetty <sharat04@gmail.com>
Cc: netdev@vger.kernel.org, harout@hedeshian.net
Subject: Re: Packet drops observed @ LINUX_MIB_TCPBACKLOGDROP
Date: Thu, 27 Feb 2014 16:34:52 -0800 [thread overview]
Message-ID: <530FD9AC.6000506@hp.com> (raw)
In-Reply-To: <CAJzFV36VXFuk1tiEYL8t0ypXWk424OdOdpE_bTjEXHRHYeuQZg@mail.gmail.com>
On 02/27/2014 12:50 PM, Sharat Masetty wrote:
> Hi Rick,
>
> Category 4 is 150Mbps Downlink and 50 Mbps Uplink. We are using iperf
> in our test and it seems that its the most widely used tool out there.
> We have not used netperf before and we will definitely give it a shot.
> Would you know how different is iperf from netperf? Should we expect
> similar results?
I would expect them to show similar results for similar test types. I
am not familiar with iperf's CPU utilization reporting. If it doesn't
have any, you can always run top at the same time - be certain to have
it show all CPUs. One can have a saturated CPU on a multiple CPU system
and still have a low overall CPU utilization. That is what all that -o
<list> stuff was about showing - both overall and the ID and utilization
of the most utilized CPU. (Of course if your system is a single core
all that becomes moot...)
> The TCP throughput is consistently slower and these drops are not
> helping either. We see huge dips consistently which I am positive is
> due to these drops.
Iperf may have a rate limiting option you could use to control how fast
it sends and then walk that up until you see the peak. All while
looking at CPU util I should thing.
The netperf benchmark has rate limiting, but as an optional
configuration parameter (configure --enable-intervals ...) and then a
rebuild of the netperf binary. If you want to take that path, contact
me offline and I can go through the steps.
> Do you know how to tune the length of this socket backlog queue?
I think Eric mentioned that how much of that queue is used will (also)
relate to the size of the socket buffer, so you might try creating a
much larger SO_RCVBUF on the receive side. I assume that iperf has
options for that. If you were using netperf it would be:
netperf -H <arm> -- -S 1M
though for that to "work" you will probably have to tweak
net.core.rmem_max because for an explicit socket buffer size setting
that sysctl will act as a bound.
If I've got the right backlog queue, there is also a sysctl for it -
net.core.netdev_max_backlog .
happy benchmarking,
rick jones
> I am trying to correlate the iperf behavior(potential slowness) with
> this backlog drops. Any help in understanding this would be really
> helpful in looking for more clues.
>
> Thanks
> Sharat
>
>
>
> On Thu, Feb 27, 2014 at 9:42 AM, Rick Jones <rick.jones2@hp.com> wrote:
>> On 02/26/2014 06:00 PM, Sharat Masetty wrote:
>>>
>>> Hi,
>>>
>>> We are trying to achieve category 4 data rates on an ARM device.
>>
>>
>> Please forgive my ignorance, but what are "category 4 data rates?"
>>
>>
>>> We see that with an incoming TCP stream(IP packets coming in and
>>> acks going out) lots of packets are getting dropped when the backlog
>>> queue is full. This is impacting overall data TCP throughput. I am
>>> trying to understand the full context of why this queue is getting
>>> full so often.
>>>
>>> From my brief look at the code, it looks to me like the user space
>>> process is slow and busy in pulling the data from the socket buffer,
>>> therefore the TCP stack is using this backlog queue in the mean time.
>>> This queue is also charged against the main socket buffer allocation.
>>>
>>> Can you please explain this backlog queue, and possibly confirm if my
>>> understanding this matter is accurate?
>>> Also can you suggest any ideas on how to mitigate these drops?
>>
>>
>> Well, there is always the question of why the user process is slow pulling
>> the data out of the socket. If it is unable to handle this "category 4 data
>> rate" on a sustained basis, then something has got to give. If it is only
>> *sometimes* unable to keep-up but otherwise is able to go as fast and faster
>> (to be able to clear-out a backlog) then you could consider tweaking the
>> size of the queue. But it would be better still to find the cause of the
>> occasional slowness and address it.
>>
>> If you run something which does no processing on the data (eg netperf) are
>> you able to achieve the data rates you seek? At what level of CPU
>> utilization? From a system you know can generate the desired data rate,
>> something like:
>>
>> netperf -H <yourARMsystem> -t TCP_STREAM -C -- -m <what your application
>> sends each time>
>>
>> If the ARM system is multi-core, I might go with
>>
>> netperf -H <yourARMsystem> -t TCP_STREAM -C -- -m <sendsize> -o
>> throughput,remote_cpu_util,remote_cpu_peak_util,remote_cpu_peak_id,remote_sd
>>
>> so netperf will tell you the ID and utilization of the most utilized CPU on
>> the receiver in addition to the overall CPU utilization.
>>
>> There might be other netperf options to use depending on just what the
>> sender is doing - to know which would require knowing more about this stream
>> of traffic.
>>
>> happy benchmarking,
>>
>> rick jones
next prev parent reply other threads:[~2014-02-28 0:34 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-27 2:00 Packet drops observed @ LINUX_MIB_TCPBACKLOGDROP Sharat Masetty
2014-02-27 16:42 ` Rick Jones
2014-02-27 20:50 ` Sharat Masetty
2014-02-28 0:34 ` Rick Jones [this message]
2014-02-27 17:54 ` Eric Dumazet
2014-02-27 20:40 ` Sharat Masetty
2014-02-27 20:49 ` Eric Dumazet
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=530FD9AC.6000506@hp.com \
--to=rick.jones2@hp.com \
--cc=harout@hedeshian.net \
--cc=netdev@vger.kernel.org \
--cc=sharat04@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).