From: "Leizhen (ThunderTown)" <thunder.leizhen@huawei.com>
To: Ganapatrao Kulkarni <gklkml16@gmail.com>
Cc: Joerg Roedel <joro@8bytes.org>,
Robin Murphy <robin.murphy@arm.com>,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
ard.biesheuvel@linaro.org, linux-kernel@vger.kernel.org,
iommu@lists.linux-foundation.org, ray.jui@broadcom.com,
nwatters@codeaurora.org, Jonathan.Cameron@huawei.com,
dwmw2@infradead.org, linux-arm-kernel@lists.infradead.org,
Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
Subject: Re: [PATCH v2 0/4] Optimise 64-bit IOVA allocations
Date: Wed, 9 Aug 2017 12:09:00 +0800 [thread overview]
Message-ID: <598A8ADC.5080906@huawei.com> (raw)
In-Reply-To: <CAKTKpr7vTzfGDvPDD4HipLYkkO4mfPLcL+3PXDHjb-bQwFMHUA@mail.gmail.com>
On 2017/8/9 11:24, Ganapatrao Kulkarni wrote:
> On Wed, Aug 9, 2017 at 7:12 AM, Leizhen (ThunderTown)
> <thunder.leizhen@huawei.com> wrote:
>>
>>
>> On 2017/8/8 20:03, Ganapatrao Kulkarni wrote:
>>> On Wed, Jul 26, 2017 at 4:47 PM, Leizhen (ThunderTown)
>>> <thunder.leizhen@huawei.com> wrote:
>>>>
>>>>
>>>> On 2017/7/26 19:08, Joerg Roedel wrote:
>>>>> Hi Robin.
>>>>>
>>>>> On Fri, Jul 21, 2017 at 12:41:57PM +0100, Robin Murphy wrote:
>>>>>> Hi all,
>>>>>>
>>>>>> In the wake of the ARM SMMU optimisation efforts, it seems that certain
>>>>>> workloads (e.g. storage I/O with large scatterlists) probably remain quite
>>>>>> heavily influenced by IOVA allocation performance. Separately, Ard also
>>>>>> reported massive performance drops for a graphical desktop on AMD Seattle
>>>>>> when enabling SMMUs via IORT, which we traced to dma_32bit_pfn in the DMA
>>>>>> ops domain getting initialised differently for ACPI vs. DT, and exposing
>>>>>> the overhead of the rbtree slow path. Whilst we could go around trying to
>>>>>> close up all the little gaps that lead to hitting the slowest case, it
>>>>>> seems a much better idea to simply make said slowest case a lot less slow.
>>>>>
>>>>> Do you have some numbers here? How big was the impact before these
>>>>> patches and how is it with the patches?
>>>> Here are some numbers:
>>>>
>>>> (before)$ iperf -s
>>>> ------------------------------------------------------------
>>>> Server listening on TCP port 5001
>>>> TCP window size: 85.3 KByte (default)
>>>> ------------------------------------------------------------
>>>> [ 4] local 192.168.1.106 port 5001 connected with 192.168.1.198 port 35898
>>>> [ ID] Interval Transfer Bandwidth
>>>> [ 4] 0.0-10.2 sec 7.88 MBytes 6.48 Mbits/sec
>>>> [ 5] local 192.168.1.106 port 5001 connected with 192.168.1.198 port 35900
>>>> [ 5] 0.0-10.3 sec 7.88 MBytes 6.43 Mbits/sec
>>>> [ 4] local 192.168.1.106 port 5001 connected with 192.168.1.198 port 35902
>>>> [ 4] 0.0-10.3 sec 7.88 MBytes 6.43 Mbits/sec
>>>>
>>>> (after)$ iperf -s
>>>> ------------------------------------------------------------
>>>> Server listening on TCP port 5001
>>>> TCP window size: 85.3 KByte (default)
>>>> ------------------------------------------------------------
>>>> [ 4] local 192.168.1.106 port 5001 connected with 192.168.1.198 port 36330
>>>> [ ID] Interval Transfer Bandwidth
>>>> [ 4] 0.0-10.0 sec 1.09 GBytes 933 Mbits/sec
>>>> [ 5] local 192.168.1.106 port 5001 connected with 192.168.1.198 port 36332
>>>> [ 5] 0.0-10.0 sec 1.10 GBytes 939 Mbits/sec
>>>> [ 4] local 192.168.1.106 port 5001 connected with 192.168.1.198 port 36334
>>>> [ 4] 0.0-10.0 sec 1.10 GBytes 938 Mbits/sec
>>>>
>>>
>>> Is this testing done on Host or on Guest/VM?
>> Host
>
> As per your log, iperf throughput is improved to 938 Mbits/sec
> from 6.43 Mbits/sec.
> IMO, this seems to be unrealistic, some thing wrong with the testing?
For 64bits non-pci devices, the iova allocation is always searched from the last rb-tree node.
When many iovas allocated and keep a long time, the search process should check many rb nodes
then find a suitable free space. As my tracking, the average times exceeds 10K.
[free-space][free][used][...][used]
^ ^ ^
| | |-----rb_last
| |--------- maybe more than 10K allocated iova nodes
|------- for 32bits devices, cached32_node remember the lastest freed node, which can help us reduce check times
This patch series add a new member "cached_node" to service for 64bits devices, like cached32_node service for 32bits devices.
>
>>
>>>
>>>>>
>>>>>
>>>>> Joerg
>>>>>
>>>>>
>>>>> .
>>>>>
>>>>
>>>> --
>>>> Thanks!
>>>> BestRegards
>>>>
>>>>
>>>> _______________________________________________
>>>> linux-arm-kernel mailing list
>>>> linux-arm-kernel@lists.infradead.org
>>>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>>>
>>> thanks
>>> Ganapat
>>>
>>> .
>>>
>>
>> --
>> Thanks!
>> BestRegards
>>
>
> thanks
> Ganapat
>
> .
>
--
Thanks!
BestRegards
next prev parent reply other threads:[~2017-08-09 4:09 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-21 11:41 [PATCH v2 0/4] Optimise 64-bit IOVA allocations Robin Murphy
[not found] ` <cover.1500636791.git.robin.murphy-5wv7dgnIgG8@public.gmane.org>
2017-07-21 11:41 ` [PATCH v2 1/4] iommu/iova: Optimise rbtree searching Robin Murphy
2017-07-21 11:41 ` [PATCH v2 2/4] iommu/iova: Optimise the padding calculation Robin Murphy
2017-07-21 11:42 ` [PATCH v2 3/4] iommu/iova: Extend rbtree node caching Robin Murphy
2017-07-29 3:57 ` Nate Watterson
[not found] ` <23972edc-e59e-3a43-59a9-d776e64af4d7-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-07-31 11:42 ` Robin Murphy
2017-08-03 19:41 ` Nate Watterson
[not found] ` <a7eb678f-ff78-5c85-6fb0-cba1f82dc502-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org>
2017-08-31 9:46 ` Leizhen (ThunderTown)
[not found] ` <e5d4524e-bfe9-acf1-66c1-ea1d9d319855-5wv7dgnIgG8@public.gmane.org>
2017-09-19 9:42 ` Leizhen (ThunderTown)
[not found] ` <59C0E694.6080508-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2017-09-19 10:07 ` Robin Murphy
2017-07-26 11:08 ` [PATCH v2 0/4] Optimise 64-bit IOVA allocations Joerg Roedel
[not found] ` <20170726110807.GN15833-zLv9SwRftAIdnm+yROfE0A@public.gmane.org>
2017-07-26 11:17 ` Leizhen (ThunderTown)
2017-08-08 12:03 ` Ganapatrao Kulkarni
2017-08-09 1:42 ` Leizhen (ThunderTown)
[not found] ` <598A6877.4050307-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2017-08-09 3:24 ` Ganapatrao Kulkarni
2017-08-09 4:09 ` Leizhen (ThunderTown) [this message]
2017-07-21 11:42 ` [PATCH v2 4/4] iommu/iova: Make dma_32bit_pfn implicit Robin Murphy
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=598A8ADC.5080906@huawei.com \
--to=thunder.leizhen@huawei.com \
--cc=Jonathan.Cameron@huawei.com \
--cc=ard.biesheuvel@linaro.org \
--cc=dwmw2@infradead.org \
--cc=ganapatrao.kulkarni@cavium.com \
--cc=gklkml16@gmail.com \
--cc=iommu@lists.linux-foundation.org \
--cc=joro@8bytes.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=nwatters@codeaurora.org \
--cc=ray.jui@broadcom.com \
--cc=robin.murphy@arm.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).