From: Qu Wenruo <quwenruo@cn.fujitsu.com>
To: linux-btrfs@vger.kernel.org
Cc: quwenruo@cn.fujitsu.com
Subject: [PATCH v3 00/17] Replace btrfs_workers with kernel workqueue based btrfs_workqueue_struct
Date: Thu, 7 Nov 2013 13:51:50 +0800 [thread overview]
Message-ID: <1383803527-23736-1-git-send-email-quwenruo@cn.fujitsu.com> (raw)
Add a new btrfs_workqueue_struct which use kernel workqueue to implement
most of the original btrfs_workers, to replace btrfs_workers.
With this patchset, redundant workqueue codes are replaced with kernel
workqueue infrastructure, which not only reduces the code size but also the
effort to maintain it.
More performace tests are ongoing, the result from sysbench shows minor
improvement on the following server:
CPU: two-way Xeon X5660
RAM: 4G
HDD: SAS HDD, 150G total, 40G partition for btrfs test
Test result:
Mode|Num_threads|block size|extra flags|performance change vs 3.11 kernel
rndrd 1 4K none +1.22%
rndrd 1 32K none +1.00%
rndrd 8 32K sync +1.35%
seqrd 8 4K direct +5.56%
seqwr 8 4K none -1.26%
seqwr 8 32K sync +1.20%
Changes below 1% are not mentioned.
Overall the patchset doesn't change the performance on HDD.
Since more tests are needed, more test result are welcomed.
------
Changelog:
v1->v2:
- Fix some workqueue flags.
v2->v3:
- Add the thresholding mechanism to simulate the old behavior
- Convert all the btrfs_workers to btrfs_workrqueue_struct.
- Fix some potential deadlock when executed in IRQ handler.
------
Qu Wenruo (17):
btrfs: Cleanup the unused struct async_sched.
btrfs: Added btrfs_workqueue_struct implemented ordered execution
based on kernel workqueue
btrfs: Add high priority workqueue support for btrfs_workqueue_struct
btrfs: Add threshold workqueue based on kernel workqueue
btrfs: Replace fs_info->workers with btrfs_workqueue.
btrfs: Replace fs_info->delalloc_workers with btrfs_workqueue
btrfs: Replace fs_info->submit_workers with btrfs_workqueue.
btrfs: Replace fs_info->flush_workers with btrfs_workqueue.
btrfs: Replace fs_info->endio_* workqueue with btrfs_workqueue.
btrfs: Replace fs_info->rmw_workers workqueue with btrfs_workqueue.
btrfs: Replace fs_info->cache_workers workqueue with btrfs_workqueue.
btrfs: Replace fs_info->readahead_workers workqueue with
btrfs_workqueue.
btrfs: Replace fs_info->fixup_workers workqueue with btrfs_workqueue.
btrfs: Replace fs_info->delayed_workers workqueue with
btrfs_workqueue.
btrfs: Replace fs_info->qgroup_rescan_worker workqueue with
btrfs_workqueue.
btrfs: Replace fs_info->scrub_* workqueue with btrfs_workqueue.
btrfs: Cleanup the old btrfs_worker.
fs/btrfs/async-thread.c | 821 ++++++++++-------------------------------------
fs/btrfs/async-thread.h | 152 ++++-----
fs/btrfs/ctree.h | 45 ++-
fs/btrfs/delayed-inode.c | 10 +-
fs/btrfs/disk-io.c | 238 ++++++--------
fs/btrfs/extent-tree.c | 6 +-
fs/btrfs/inode.c | 53 ++-
fs/btrfs/ordered-data.c | 13 +-
fs/btrfs/ordered-data.h | 4 +-
fs/btrfs/qgroup.c | 17 +-
fs/btrfs/raid56.c | 33 +-
fs/btrfs/reada.c | 10 +-
fs/btrfs/scrub.c | 94 +++---
fs/btrfs/super.c | 36 +--
fs/btrfs/volumes.c | 18 +-
fs/btrfs/volumes.h | 2 +-
16 files changed, 503 insertions(+), 1049 deletions(-)
--
1.8.4.2
next reply other threads:[~2013-11-07 5:51 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-07 5:51 Qu Wenruo [this message]
2013-11-07 5:51 ` [PATCH v3 01/17] btrfs: Cleanup the unused struct async_sched Qu Wenruo
2013-11-07 17:24 ` Josef Bacik
2013-11-07 5:51 ` [PATCH v3 02/17] btrfs: Added btrfs_workqueue_struct implemented ordered execution based on kernel workqueue Qu Wenruo
2013-11-07 9:33 ` Stefan Behrens
2013-11-07 16:05 ` David Sterba
2013-11-08 0:32 ` Qu Wenruo
2013-11-07 18:08 ` Josef Bacik
2013-11-07 18:09 ` Josef Bacik
2013-11-08 0:58 ` Qu Wenruo
2013-11-07 5:51 ` [PATCH v3 03/17] btrfs: Add high priority workqueue support for btrfs_workqueue_struct Qu Wenruo
2013-11-07 16:41 ` David Sterba
2013-11-08 0:53 ` Qu Wenruo
2013-11-12 16:59 ` David Sterba
2013-11-13 0:53 ` Qu Wenruo
2013-11-07 5:51 ` [PATCH v3 04/17] btrfs: Add threshold workqueue based on kernel workqueue Qu Wenruo
2013-11-07 5:51 ` [PATCH v3 05/17] btrfs: Replace fs_info->workers with btrfs_workqueue Qu Wenruo
2013-11-07 5:51 ` [PATCH v3 06/17] btrfs: Replace fs_info->delalloc_workers " Qu Wenruo
2013-11-07 5:51 ` [PATCH v3 07/17] btrfs: Replace fs_info->submit_workers " Qu Wenruo
2013-11-07 5:51 ` [PATCH v3 08/17] btrfs: Replace fs_info->flush_workers " Qu Wenruo
2013-11-07 5:51 ` [PATCH v3 09/17] btrfs: Replace fs_info->endio_* workqueue " Qu Wenruo
2013-11-07 5:52 ` [PATCH v3 10/17] btrfs: Replace fs_info->rmw_workers " Qu Wenruo
2013-11-07 5:52 ` [PATCH v3 11/17] btrfs: Replace fs_info->cache_workers " Qu Wenruo
2013-11-07 5:52 ` [PATCH v3 12/17] btrfs: Replace fs_info->readahead_workers " Qu Wenruo
2013-11-07 5:52 ` [PATCH v3 13/17] btrfs: Replace fs_info->fixup_workers " Qu Wenruo
2013-11-07 5:52 ` [PATCH v3 14/17] btrfs: Replace fs_info->delayed_workers " Qu Wenruo
2013-11-07 5:52 ` [PATCH v3 15/17] btrfs: Replace fs_info->qgroup_rescan_worker " Qu Wenruo
2013-11-07 5:52 ` [PATCH v3 16/17] btrfs: Replace fs_info->scrub_* " Qu Wenruo
2013-11-07 5:52 ` [PATCH v3 17/17] btrfs: Cleanup the old btrfs_worker Qu Wenruo
2013-11-07 17:52 ` [PATCH v3 00/17] Replace btrfs_workers with kernel workqueue based btrfs_workqueue_struct David Sterba
2013-11-08 0:55 ` Qu Wenruo
2013-11-07 17:54 ` Chris Mason
2013-11-08 0:56 ` Qu Wenruo
2013-11-26 1:39 ` Qu Wenruo
2013-11-26 7:31 ` Liu Bo
2013-11-26 8:33 ` Qu Wenruo
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=1383803527-23736-1-git-send-email-quwenruo@cn.fujitsu.com \
--to=quwenruo@cn.fujitsu.com \
--cc=linux-btrfs@vger.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;
as well as URLs for NNTP newsgroup(s).