From: John Garry via iommu <iommu@lists.linux-foundation.org>
To: <joro@8bytes.org>, <will@kernel.org>, <robin.murphy@arm.com>
Cc: mst@redhat.com, jasowang@redhat.com, linuxarm@huawei.com,
linux-kernel@vger.kernel.org,
virtualization@lists.linux-foundation.org,
iommu@lists.linux-foundation.org, hch@lst.de
Subject: [PATCH v5 0/5] iommu: Allow IOVA rcache range be configured
Date: Tue, 15 Feb 2022 01:29:01 +0800 [thread overview]
Message-ID: <1644859746-20279-1-git-send-email-john.garry@huawei.com> (raw)
For streaming DMA mappings involving an IOMMU and whose IOVA len regularly
exceeds the IOVA rcache upper limit (meaning that they are not cached),
performance can be reduced.
This may be much more pronounced from commit 4e89dce72521 ("iommu/iova:
Retry from last rb tree node if iova search fails"), as discussed at [0].
IOVAs which cannot be cached are highly involved in the IOVA ageing issue,
as discussed at [1].
This series allows the IOVA rcache range be configured, so that we may
cache all IOVAs per domain, thus improving performance.
A new IOMMU group sysfs file is added - max_opt_dma_size - which is used
indirectly to configure the IOVA rcache range:
/sys/kernel/iommu_groups/X/max_opt_dma_size
This file is updated same as how the IOMMU group default domain type is
updated, i.e. must unbind the only device in the group first.
The inspiration here comes from block layer request queue sysfs
"optimal_io_size" file, in /sys/block/sdX/queue/optimal_io_size
Some old figures* for storage scenario (when increasing IOVA rcache range
to cover all DMA mapping sizes from the LLD):
v5.13-rc1 baseline: 1200K IOPS
With series: 1800K IOPS
All above are for IOMMU strict mode. Non-strict mode gives ~1800K IOPS in
all scenarios.
Based on v5.17-rc4 + [2]
* I lost my high data throughout test setup
Differences to v4:
https://lore.kernel.org/linux-iommu/1626259003-201303-1-git-send-email-john.garry@huawei.com/
- Major rebase
- Change the "Refactor iommu_group_store_type()" to not use a callback
and an op type enum instead
- I didn't pick up Will's Ack as it has changed so much
- Use a domain feature flag to keep same default group type
- Add wrapper for default IOVA rcache range
- Combine last 2x patches
[0] https://lore.kernel.org/linux-iommu/20210129092120.1482-1-thunder.leizhen@huawei.com/
[1] https://lore.kernel.org/linux-iommu/1607538189-237944-1-git-send-email-john.garry@huawei.com/
[2] https://lore.kernel.org/linux-iommu/20220203063345-mutt-send-email-mst@kernel.org/T/#m5b2b59576d35cad544314470f32e5f40ac5d1fe9
John Garry (5):
iommu: Refactor iommu_group_store_type()
iova: Allow rcache range upper limit to be flexible
iommu: Allow iommu_change_dev_def_domain() realloc same default domain
type
iommu: Allow max opt DMA len be set for a group via sysfs
iova: Add iova_len argument to iova_domain_init_rcaches()
.../ABI/testing/sysfs-kernel-iommu_groups | 16 ++
drivers/iommu/dma-iommu.c | 15 +-
drivers/iommu/iommu.c | 202 +++++++++++++-----
drivers/iommu/iova.c | 37 ++--
drivers/vdpa/vdpa_user/iova_domain.c | 4 +-
include/linux/iommu.h | 7 +
include/linux/iova.h | 6 +-
7 files changed, 212 insertions(+), 75 deletions(-)
--
2.26.2
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
next reply other threads:[~2022-02-14 17:34 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-02-14 17:29 John Garry via iommu [this message]
2022-02-14 17:29 ` [PATCH v5 1/5] iommu: Refactor iommu_group_store_type() John Garry via iommu
2022-02-14 17:29 ` [PATCH v5 2/5] iova: Allow rcache range upper limit to be flexible John Garry via iommu
2022-02-14 17:29 ` [PATCH v5 3/5] iommu: Allow iommu_change_dev_def_domain() realloc same default domain type John Garry via iommu
2022-02-14 17:29 ` [PATCH v5 4/5] iommu: Allow max opt DMA len be set for a group via sysfs John Garry via iommu
2022-02-14 17:29 ` [PATCH v5 5/5] iova: Add iova_len argument to iova_domain_init_rcaches() John Garry via iommu
2022-02-28 9:44 ` [PATCH v5 0/5] iommu: Allow IOVA rcache range be configured John Garry via iommu
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=1644859746-20279-1-git-send-email-john.garry@huawei.com \
--to=iommu@lists.linux-foundation.org \
--cc=hch@lst.de \
--cc=jasowang@redhat.com \
--cc=john.garry@huawei.com \
--cc=joro@8bytes.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxarm@huawei.com \
--cc=mst@redhat.com \
--cc=robin.murphy@arm.com \
--cc=virtualization@lists.linux-foundation.org \
--cc=will@kernel.org \
/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