[linux-lvm] Discussion: performance issue on event activation mode
teigland at redhat.com
Fri Jul 2 22:02:19 UTC 2021
On Fri, Jul 02, 2021 at 09:22:03PM +0000, Martin Wilck wrote:
> On Fr, 2021-07-02 at 16:09 -0500, David Teigland wrote:
> > On Sun, Jun 06, 2021 at 02:15:23PM +0800, heming.zhao at suse.com wrote:
> > > dev_cache_scan //order: O(n^2)
> > > + _insert_dirs //O(n)
> > > | if obtain_device_list_from_udev() true
> > > | _insert_udev_dir //O(n)
> > > |
> > > + dev_cache_index_devs //O(n)
> > I've been running some experiments and trying some patches to improve
> > this. By setting obtain_device_list_from_udev=0, and using the
> > attached
> > patch to disable dev_cache_index_devs, the pvscan is much better.
> > systemctl status lvm2-pvscan appears to show that the pvscan command
> > itself runs for only 2-4 seconds, while the service as a whole takes
> > around 15 seconds. See the 16 sec gap below from the end of pvscan
> > to the systemd Started message. If that's accurate, the remaining
> > delay
> > would lie outside lvm.
> > Jul 02 15:27:57 localhost.localdomain systemd: Starting LVM event
> > activation on device 253:1710...
> > Jul 02 15:28:00 localhost.localdomain lvm: pvscan PV
> > /dev/mapper/mpathalz online, VG 1ed02c7d-0019-43c4-91b5-f220f3521ba9
> > is complete.
> > Jul 02 15:28:00 localhost.localdomain lvm: pvscan VG
> > 1ed02c7d-0019-43c4-91b5-f220f3521ba9 run autoactivation.
> > Jul 02 15:28:00 localhost.localdomain lvm: 1 logical
> > volume(s) in volume group "1ed02c7d-0019-43c4-91b5-f220f3521ba9" now
> > active
> Printing this message is really the last thing that pvscan does?
I've not seen anything measurable after that message. However, digging
through the command init/exit paths I did find libudev setup/destroy calls
that can also be skipped when the command is not accessing libudev info.
A quick check seemed to show some further improvement from dropping those.
(That will be part of the larger patch isolating libudev usage.)
I'm still seeing significant delay between the apparent command exit and
the systemd "Started" message, but this will require a little more work to
More information about the linux-lvm