Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Aug 2015 20:16:35 +0200
From:      Svatopluk Kraus <onwahe@gmail.com>
To:        Hans Petter Selasky <hps@selasky.org>
Cc:        "freebsd-arm@freebsd.org" <freebsd-arm@freebsd.org>
Subject:   Re: DWC OTG TX path optimisation for 11-current
Message-ID:  <CAFHCsPUX0m-dW=4WzZW9E2Lw5oa_R=gdFAZ%2B5V=ujgco-hRoTw@mail.gmail.com>
In-Reply-To: <55CB4BAF.3050702@selasky.org>
References:  <55A7D8CE.4020809@selasky.org> <CAHNYxxMp9jGDbV-5=-cE6daR-O3eN5pdvO1s-=QfX=A9XYqYmA@mail.gmail.com> <55B23276.8090703@selasky.org> <CAHNYxxNc9uB62hHEv1PM9PcsGgUs=zsvNgatqLD0p%2BiiDA3Aiw@mail.gmail.com> <55B73113.2020308@selasky.org> <CAFHCsPVaPZpqXLS7OApa=Xz5VLnLjVpV5dYV8Pn2uHh1Lcz7Tg@mail.gmail.com> <55B8AB76.7030603@selasky.org> <CAFHCsPUMaYEwJsaGUFuw9yZi_5bmraSBsOYpRWvSeuebpXBJUA@mail.gmail.com> <55B8B297.1010008@selasky.org> <CAFHCsPVGLs8j6LAV%2Bg4rP_ueTOd8pUOupYFGvmgC3XGcJC720Q@mail.gmail.com> <20150729154516.GH78154@funkthat.com> <55B8F5EC.2050908@selasky.org> <46ad096c958.1a82a175@mail.schwarzes.net> <55B9C3E2.5040501@selasky.org> <46ae815c7c3.447237c8@mail.schwarzes.net> <46aece00b53.3c1cdc1f@mail.schwarzes.net> <55BB2A5F.9000502@selasky.org> <55BB3CC6.4030002@selasky.org> <CAFHCsPXFJ_XhVsT1bRw=d20Mz=cbYdmwNNLvfs_cxJvEo8B6LA@mail.gmail.com> <55BB6A7F.3060402@selasky.org> <CAFHCsPVz4cYGrZRxVz9givvct_b1CagH1W%2BbTzS1v%2Bc3sws3LQ@mail.gmail.com> <55CB4BAF.3050702@selasky.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Aug 12, 2015 at 3:35 PM, Hans Petter Selasky <hps@selasky.org> wrote:
> On 07/31/15 17:11, Svatopluk Kraus wrote:
>>
>> Note that I got about 24000 interrupts per a second during buildworld
>> too. If I remember it correctly, it was about 4000 before r285935.
>> When the trigger is pulled, the count is changing (in range of 4000 to
>> 21000). It looks like something is taking more time (interrupt
>> servicing probably). According to "systat -v", disk is going to be
>> 100% (and more) busy very often for example.
>
>
> Hi,
>
> Finally my RPI-2 arrived :-)


It's great! ;) I can do some debugging but it's hard to go deeper
without usb controller specification.


>
> After r285935 we are polling for data more frequently, so the IRQ rate will
> go up. 3x 8000 IRQs/second would be normal to query the device every 125us,
> which the EHCI does.
>
> Can you give me some more information about your setup, so that I can
> reproduce it?

I use in-tree RPI2 configuration but with INVARIANTS and
INVARIANT_SUPPORT options disabled. This is crucial as it's hard to
trigger it with these options enabled.

I use usb disk with three partitions:
First one is mounted as a root.
Second one is used for swapping.
The third one is not mounted.

The disk is connected thru usb hub.

My fstab is empty.
My kernel is loaded from SD card.
I use UART as console.

root@raspberry-pi:~ # usbconfig
ugen0.1: <OTG Root HUB DWCOTG> at usbus0, cfg=0 md=HOST spd=HIGH
(480Mbps) pwr=SAVE (0mA)
ugen0.2: <product 0x9514 vendor 0x0424> at usbus0, cfg=0 md=HOST
spd=HIGH (480Mbps) pwr=SAVE (2mA)
ugen0.3: <product 0xec00 vendor 0x0424> at usbus0, cfg=0 md=HOST
spd=HIGH (480Mbps) pwr=ON (2mA)
ugen0.4: <USB2.0 Hub VIA Labs, Inc.> at usbus0, cfg=0 md=HOST spd=HIGH
(480Mbps) pwr=SAVE (0mA)
ugen0.5: <USB2.0 Hub VIA Labs, Inc.> at usbus0, cfg=0 md=HOST spd=HIGH
(480Mbps) pwr=SAVE (0mA)
ugen0.6: <HD710 ADATA> at usbus0, cfg=0 md=HOST spd=HIGH (480Mbps) pwr=ON (0mA)


FreeBSD source tree is on /usr/src and I run native buildworld : "make
-j6 buildworld"
I run the buildworld on ssh to keep my console "clean and free" for
debugging. The trigger is pulled in about 25 minutes, however it's
more expessive with more time elapsed.

So far it looks that it happens during "stage 2.1: cleaning up the
object tree" when a lot of small and different disk request are done.

I have tried to get big picture of the problem with KTR option
enabled, but it's not possible as it's not triggered when all KTR
classes are compiled in. What works is the following configuration:

options  KTR
options  KTR_ENTRIES=65536
options  KTR_MASK=(KTR_SPARE3)
options  KTR_COMPILE=(KTR_SPARE3)

However, even using of KTR_SPARE3 class for debugging is limited
considering the trigger.

I will send you more info about my investigation tomorow.

Svata


>
> How many USB devices are there in total, and how are the filesystems
> mounted?
>
> --HPS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFHCsPUX0m-dW=4WzZW9E2Lw5oa_R=gdFAZ%2B5V=ujgco-hRoTw>