Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

loading logical volume store with big lv is much slower than expected #3359

Open
jumpapex opened this issue Apr 28, 2024 · 1 comment
Open
Labels

Comments

@jumpapex
Copy link

Sighting report

When loading a logical volume store, spdk reads extent pages 3 time for a blob:

  1. spdk_lvs_load calls spdk_bs_load which iterates all blobs and read blob extent pages.
  2. load_next_lvol will read blob extent pages again.
  3. spdk_bs_bdev_claim reads blob extent pages for the third time.

Use default options to create a logical volume store:
For a big lv, such as 48T, it will use 24576 extent pages. so it will take a certain amount of time to read extent pages for three times.

Expected Behavior

When loading a logical volume store, spdk should only read extent pages one time for a blob:

Current Behavior

spdk reads extent pages 3 time for a blob When loading a logical volume store,

Possible Solution

Reduce the number of reads to 1, but don't know how to improve it now :)

Steps to Reproduce

  1. start spdk_tgt, and enable debug log
  2. create an aio block device
  3. create lvstore on the aio bdev
  4. create a lv with size of 48T
  5. delete the aio bdev
  6. create the aio bdev again.

from the message. the blob is opened for three times and closed two times.
And extent pages of the blobs are read for three time also.

Context (Environment including OS version, SPDK version, etc.)

AlmaLinux 8.6, SPDK 24.01

@jimharris
Copy link
Member

[Bug scrub] lvolstore definitely iterates through all of the blobs on load, but it is not expected that all of the extent pages would be read three times - it should just be once.

@tomzawadzki could you take a look at this, to see if you can reproduce three loads of all of the metadata?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants