lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lwip-users] Throughput benchmark question - nasty pauses


From: Dave Nadler
Subject: Re: [lwip-users] Throughput benchmark question - nasty pauses
Date: Thu, 28 Feb 2019 11:42:17 -0500
User-agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.5.1

I naively expected that after receiving the" duplicate ack" signalling a packet dropped,
LwIP would immediately re-transmit the dropped packet.
Instead there is a 1.5 second pause (see Wireshark trace below).
Why is that?
Sorry if that's a dumb question; I'm a newbie with this...
Thanks,
Best Regards, Dave

PS: Might this be related to the pauses seen by UAZ ?
I'm also using FreeRTOS but with preemption enabled (unlike UAZ).
Test application uses sockets interface as follows:

        const int testCnt = 1000;
        const int linesPerCycle = 3;
        static const TickType_t xDelay = 1 / portTICK_PERIOD_MS; /* Block for xx ms. */
        static char testData[] = "xxx123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456\n\r";
        char saveMe = testData[4];
        TickType_t startTick = xTaskGetTickCount();
        uint32_t elapsedTicks;
        for(int i=0; i<testCnt; i++) {
            sprintf(testData,"%03d", i);
            testData[4] = saveMe; // replace terminating 0 written by sprintf
            for(int j=0; j<linesPerCycle; j++) _send(user->socketFD, testData, sizeof(testData));
            // Delay to simulate desired throughput, but try not to fall behind...
            elapsedTicks = xTaskGetTickCount()-startTick;
            if(elapsedTicks > i+1) continue; // skip delay if we've got behind
            vTaskDelay( xDelay ); // may delay for a lot longer than requested, for example delayed by processing in LwIP thread...
        };
        char buf[96];
        sprintf(buf,"Elapsed ticks=%lu for %d lines (%f msec per line, using %d-line sets)\n\r", elapsedTicks, linesPerCycle*testCnt, ((float)elapsedTicks)/(linesPerCycle*testCnt), linesPerCycle);
        _send(user->socketFD, buf, strlen(buf));
        return;



On 2/26/2019 6:45 PM, Dave Nadler wrote:
I figured out how to get the wireshark trace,
but how to get the wireshark GUI to output the summary below in text baffles me, hope the pic is OK:
Everything is going swimmingly until 4316.
I don't understand the meaning of "previous segment not captured" here - something got dropped.
And then it takes a second to get going again.
Any pointers appreciated!
Thanks,
Best Regards, Dave

On 2/20/2019 1:45 AM, Johan Borkhuis wrote:
Dave,

First thing would be to sniff the network using Wireshark, and see what happens there when the traffic pauses.
This would usually give a good indication on what did happen.

Regards,
Johan

On 2019-02-20 00:15, Dave Nadler wrote:
Hi - Newbie here trying to do some basic throughput tests.
LwIP 2.1.2 on FreeRTOS 9, ST32F429, IPv4, TCP.

I want to see how much I can consistently push through the stack.
Made a simple test server (sockets API) which repeatedly outputs 101-character lines.
I access the server via PuTTY raw mode on Winbloze over a local network.
I can usually send 3 lines per msec for a second (3000 lines in 1 second), but...
Sometimes, I get ~ 1-second pauses (as seen in Putty or TeraTerm).

How should I go about understanding where the pauses come from?

Thanks in advance for any hints,
Best Regards, Dave
--
Dave Nadler, USA East Coast voice (978) 263-0097, address@hidden, Skype  Dave.Nadler1
_______________________________________________
lwip-users mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/lwip-users


-- 
Dave Nadler, USA East Coast voice (978) 263-0097, address@hidden, Skype 
 Dave.Nadler1

reply via email to

[Prev in Thread] Current Thread [Next in Thread]