From: Paul Menzel <pmenzel@molgen.mpg.de>
To: Yu Kuai <yukuai1@huaweicloud.com>
Cc: song@kernel.org, mariusz.tkaczyk@linux.intel.com, l@damenly.org,
xni@redhat.com, linux-kernel@vger.kernel.org,
linux-raid@vger.kernel.org, yukuai3@huawei.com,
yi.zhang@huawei.com, yangerkun@huawei.com
Subject: Re: [PATCH md-6.12 00/41] md/md-bitmap: introduce bitmap_operations and make structure internel
Date: Thu, 22 Aug 2024 08:50:42 +0200 [thread overview]
Message-ID: <aecb239d-9bcd-457a-8501-3e7a2fb028b4@molgen.mpg.de> (raw)
In-Reply-To: <20240822024718.2158259-1-yukuai1@huaweicloud.com>
Dear Yu,
Thank you for this patch series.
Am 22.08.24 um 04:46 schrieb Yu Kuai:
> From: Yu Kuai <yukuai3@huawei.com>
>
> Changes from RFC v1:
> - add patch 1-8 to prevent dereference bitmap directly, and the last
> patch to make bitmap structure internel.
> - use plain function alls "bitmap_ops->xxx()" directly;
>
> Changes from RFC v2:
> - some coding style.
>
> The background is that currently bitmap is using a global spin_lock,
> cauing lock contention and huge IO performance degration for all raid
cau*s*ing
degra*da*tion
> levels.
>
> However, it's impossible to implement a new lock free bitmap with
> current situation that md-bitmap exposes the internal implementation
> with lots of exported apis. Hence bitmap_operations is invented, to
> describe bitmap core implementation, and a new bitmap can be introduced
> with a new bitmap_operations, we only need to switch to the new one
> during initialization.
>
> And with this we can build bitmap as kernel module, but that's not
> our concern for now.
>
> This version was tested with mdadm tests. There are still few failed
> tests in my VM, howerver, it's the test itself need to be fixed and
however
> we're working on it.
It’d be great if you shared the benchmark data, and how this can be
verified on other setups, so performance does not degrade on some sometimes.
Kind regards,
Paul
> Yu Kuai (41):
> md/raid1: use md_bitmap_wait_behind_writes() in raid1_read_request()
> md/md-bitmap: replace md_bitmap_status() with a new helper
> md_bitmap_get_stats()
> md: use new helper md_bitmap_get_stats() in update_array_info()
> md/md-bitmap: add 'events_cleared' into struct md_bitmap_stats
> md/md-bitmap: add 'sync_size' into struct md_bitmap_stats
> md/md-bitmap: add 'file_pages' into struct md_bitmap_stats
> md/md-bitmap: add 'behind_writes' and 'behind_wait' into struct
> md_bitmap_stats
> md/md-cluster: use helper md_bitmap_get_stats() to get pages in
> resize_bitmaps()
> md/md-bitmap: add a new helper md_bitmap_set_pages()
> md/md-bitmap: introduce struct bitmap_operations
> md/md-bitmap: simplify md_bitmap_create() + md_bitmap_load()
> md/md-bitmap: merge md_bitmap_create() into bitmap_operations
> md/md-bitmap: merge md_bitmap_load() into bitmap_operations
> md/md-bitmap: merge md_bitmap_destroy() into bitmap_operations
> md/md-bitmap: merge md_bitmap_flush() into bitmap_operations
> md/md-bitmap: make md_bitmap_print_sb() internal
> md/md-bitmap: merge md_bitmap_update_sb() into bitmap_operations
> md/md-bitmap: merge md_bitmap_status() into bitmap_operations
> md/md-bitmap: remove md_bitmap_setallbits()
> md/md-bitmap: merge bitmap_write_all() into bitmap_operations
> md/md-bitmap: merge md_bitmap_dirty_bits() into bitmap_operations
> md/md-bitmap: merge md_bitmap_startwrite() into bitmap_operations
> md/md-bitmap: merge md_bitmap_endwrite() into bitmap_operations
> md/md-bitmap: merge md_bitmap_start_sync() into bitmap_operations
> md/md-bitmap: remove the parameter 'aborted' for md_bitmap_end_sync()
> md/md-bitmap: merge md_bitmap_end_sync() into bitmap_operations
> md/md-bitmap: merge md_bitmap_close_sync() into bitmap_operations
> md/md-bitmap: mrege md_bitmap_cond_end_sync() into bitmap_operations
> md/md-bitmap: merge md_bitmap_sync_with_cluster() into
> bitmap_operations
> md/md-bitmap: merge md_bitmap_unplug_async() into md_bitmap_unplug()
> md/md-bitmap: merge bitmap_unplug() into bitmap_operations
> md/md-bitmap: merge md_bitmap_daemon_work() into bitmap_operations
> md/md-bitmap: pass in mddev directly for md_bitmap_resize()
> md/md-bitmap: merge md_bitmap_resize() into bitmap_operations
> md/md-bitmap: merge get_bitmap_from_slot() into bitmap_operations
> md/md-bitmap: merge md_bitmap_copy_from_slot() into struct
> bitmap_operation.
> md/md-bitmap: merge md_bitmap_set_pages() into struct
> bitmap_operations
> md/md-bitmap: merge md_bitmap_free() into bitmap_operations
> md/md-bitmap: merge md_bitmap_wait_behind_writes() into
> bitmap_operations
> md/md-bitmap: merge md_bitmap_enabled() into bitmap_operations
> md/md-bitmap: make in memory structure internal
>
> drivers/md/dm-raid.c | 7 +-
> drivers/md/md-bitmap.c | 560 +++++++++++++++++++++++++++++----------
> drivers/md/md-bitmap.h | 268 ++++---------------
> drivers/md/md-cluster.c | 91 ++++---
> drivers/md/md.c | 155 +++++++----
> drivers/md/md.h | 3 +-
> drivers/md/raid1-10.c | 9 +-
> drivers/md/raid1.c | 78 +++---
> drivers/md/raid10.c | 73 ++---
> drivers/md/raid5-cache.c | 8 +-
> drivers/md/raid5.c | 62 ++---
> 11 files changed, 752 insertions(+), 562 deletions(-)
>
next prev parent reply other threads:[~2024-08-22 6:51 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-22 2:46 Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 01/41] md/raid1: use md_bitmap_wait_behind_writes() in raid1_read_request() Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 02/41] md/md-bitmap: replace md_bitmap_status() with a new helper md_bitmap_get_stats() Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 03/41] md: use new helper md_bitmap_get_stats() in update_array_info() Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 04/41] md/md-bitmap: add 'events_cleared' into struct md_bitmap_stats Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 05/41] md/md-bitmap: add 'sync_size' " Yu Kuai
2024-08-22 22:07 ` kernel test robot
2024-08-26 1:38 ` Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 06/41] md/md-bitmap: add 'file_pages' " Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 07/41] md/md-bitmap: add 'behind_writes' and 'behind_wait' " Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 08/41] md/md-cluster: use helper md_bitmap_get_stats() to get pages in resize_bitmaps() Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 09/41] md/md-bitmap: add a new helper md_bitmap_set_pages() Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 10/41] md/md-bitmap: introduce struct bitmap_operations Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 11/41] md/md-bitmap: simplify md_bitmap_create() + md_bitmap_load() Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 12/41] md/md-bitmap: merge md_bitmap_create() into bitmap_operations Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 13/41] md/md-bitmap: merge md_bitmap_load() " Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 14/41] md/md-bitmap: merge md_bitmap_destroy() " Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 15/41] md/md-bitmap: merge md_bitmap_flush() " Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 16/41] md/md-bitmap: make md_bitmap_print_sb() internal Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 17/41] md/md-bitmap: merge md_bitmap_update_sb() into bitmap_operations Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 18/41] md/md-bitmap: merge md_bitmap_status() " Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 19/41] md/md-bitmap: remove md_bitmap_setallbits() Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 20/41] md/md-bitmap: merge bitmap_write_all() into bitmap_operations Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 21/41] md/md-bitmap: merge md_bitmap_dirty_bits() " Yu Kuai
2024-08-22 2:46 ` [PATCH md-6.12 22/41] md/md-bitmap: merge md_bitmap_startwrite() " Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 23/41] md/md-bitmap: merge md_bitmap_endwrite() " Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 24/41] md/md-bitmap: merge md_bitmap_start_sync() " Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 25/41] md/md-bitmap: remove the parameter 'aborted' for md_bitmap_end_sync() Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 26/41] md/md-bitmap: merge md_bitmap_end_sync() into bitmap_operations Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 27/41] md/md-bitmap: merge md_bitmap_close_sync() " Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 28/41] md/md-bitmap: mrege md_bitmap_cond_end_sync() " Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 29/41] md/md-bitmap: merge md_bitmap_sync_with_cluster() " Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 30/41] md/md-bitmap: merge md_bitmap_unplug_async() into md_bitmap_unplug() Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 31/41] md/md-bitmap: merge bitmap_unplug() into bitmap_operations Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 32/41] md/md-bitmap: merge md_bitmap_daemon_work() " Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 33/41] md/md-bitmap: pass in mddev directly for md_bitmap_resize() Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 34/41] md/md-bitmap: merge md_bitmap_resize() into bitmap_operations Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 35/41] md/md-bitmap: merge get_bitmap_from_slot() " Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 36/41] md/md-bitmap: merge md_bitmap_copy_from_slot() into struct bitmap_operation Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 37/41] md/md-bitmap: merge md_bitmap_set_pages() into struct bitmap_operations Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 38/41] md/md-bitmap: merge md_bitmap_free() into bitmap_operations Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 39/41] md/md-bitmap: merge md_bitmap_wait_behind_writes() " Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 40/41] md/md-bitmap: merge md_bitmap_enabled() " Yu Kuai
2024-08-22 2:47 ` [PATCH md-6.12 41/41] md/md-bitmap: make in memory structure internal Yu Kuai
2024-08-22 6:50 ` Paul Menzel [this message]
2024-08-26 1:40 ` [PATCH md-6.12 00/41] md/md-bitmap: introduce bitmap_operations and make structure internel Yu Kuai
2024-08-22 8:38 ` Xiao Ni
2024-08-26 1:43 ` Yu Kuai
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=aecb239d-9bcd-457a-8501-3e7a2fb028b4@molgen.mpg.de \
--to=pmenzel@molgen.mpg.de \
--cc=l@damenly.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-raid@vger.kernel.org \
--cc=mariusz.tkaczyk@linux.intel.com \
--cc=song@kernel.org \
--cc=xni@redhat.com \
--cc=yangerkun@huawei.com \
--cc=yi.zhang@huawei.com \
--cc=yukuai1@huaweicloud.com \
--cc=yukuai3@huawei.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
all inboxes | Powered by JetHome®