Re: How to reduce PCI initialization from 5 s (1.5 s adding them to IOMMU groups)

From: Paul Menzel
Date: Tue Nov 09 2021 - 15:25:53 EST


Dear Krzysztof,


Thank you for your reply.


Am 08.11.21 um 18:18 schrieb Krzysztof Wilczyński:

On a PowerEdge T440/021KCD, BIOS 2.11.2 04/22/2021, Linux 5.10.70 takes
almost five seconds to initialize PCI. According to the timestamps, 1.5 s
are from assigning the PCI devices to the 142 IOMMU groups.
[...]
Is there anything that could be done to reduce the time?

I am curious - why is this a problem? Are you power-cycling your servers
so often to the point where the cumulative time spent in enumerating PCI
devices and adding them later to IOMMU groups is a problem?

I am simply wondering why you decided to signal out the PCI enumeration as
slow in particular, especially given that a large server hardware tends to
have (most of the time, as per my experience) rather long initialisation
time either from being powered off or after being power cycled. I can take
a while before the actual operating system itself will start.

It’s not a problem per se, and more a pet peeve of mine. Systems get faster and faster, and boottime slower and slower. On desktop systems, it’s much more important with firmware like coreboot taking less than one second to initialize the hardware and passing control to the payload/operating system. If we are lucky, we are going to have servers with FLOSS firmware.

But, already now, using kexec to reboot a system, avoids the problems you pointed out on servers, and being able to reboot a system as quickly as possible, lowers the bar for people to reboot systems more often to, for example, so updates take effect.

We talked about this briefly with Bjorn, and there might be an option to
perhaps add some caching, as we suspect that the culprit here is doing PCI
configuration space read for each device, which can be slow on some
platforms.

However, we would need to profile this to get some quantitative data to see
whether doing anything would even be worthwhile. It would definitely help
us understand better where the bottlenecks really are and of what magnitude.

I personally don't have access to such a large hardware like the one you
have access to, thus I was wondering whether you would have some time, and
be willing, to profile this for us on the hardware you have.

Let me know what do you think?

Sounds good. I’d be willing to help. Note, that I won’t have time before Wednesday next week though.


Kind regards,

Paul