mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
Btrfs: Fix streaming read performance with checksumming on
Large streaming reads make for large bios, which means each entry on the list async work queues represents a large amount of data. IO congestion throttling on the device was kicking in before the async worker threads decided a single thread was busy and needed some help. The end result was that a streaming read would result in a single CPU running at 100% instead of balancing the work off to other CPUs. This patch also changes the pre-IO checksum lookup done by reads to work on a per-bio basis instead of a per-page. This results in many extra btree lookups on large streaming reads. Doing the checksum lookup right before bio submit allows us to reuse searches while processing adjacent offsets. Signed-off-by: Chris Mason <chris.mason@oracle.com>
This commit is contained in:
parent
37d1aeee39
commit
61b4944018
5 changed files with 99 additions and 54 deletions
|
@ -160,7 +160,7 @@ void btrfs_init_workers(struct btrfs_workers *workers, int max)
|
|||
INIT_LIST_HEAD(&workers->idle_list);
|
||||
spin_lock_init(&workers->lock);
|
||||
workers->max_workers = max;
|
||||
workers->idle_thresh = 64;
|
||||
workers->idle_thresh = 32;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue