linux/drivers/lightnvm
Javier González dd2a434373 lightnvm: pblk: sched. metadata on write thread
At the moment, line metadata is persisted on a separate work queue, that
is kicked each time that a line is closed. The assumption when designing
this was that freeing the write thread from creating a new write request
was better than the potential impact of writes colliding on the media
(user I/O and metadata I/O). Experimentation has proven that this
assumption is wrong; collision can cause up to 25% of bandwidth and
introduce long tail latencies on the write thread, which potentially
cause user write threads to spend more time spinning to get a free entry
on the write buffer.

This patch moves the metadata logic to the write thread. When a line is
closed, remaining metadata is written in memory and is placed on a
metadata queue. The write thread then takes the metadata corresponding
to the previous line, creates the write request and schedules it to
minimize collisions on the media. Using this approach, we see that we
can saturate the media's bandwidth, which helps reducing both write
latencies and the spinning time for user writer threads.

Signed-off-by: Javier González <javier@cnexlabs.com>
Signed-off-by: Matias Bjørling <matias@cnexlabs.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
2017-06-26 16:27:39 -06:00
..
core.c lightnvm: re-convert ppa format on I/O failure 2017-06-26 16:24:53 -06:00
Kconfig lightnvm: physical block device (pblk) target 2017-04-16 10:06:33 -06:00
Makefile lightnvm: physical block device (pblk) target 2017-04-16 10:06:33 -06:00
pblk-cache.c lightnvm: physical block device (pblk) target 2017-04-16 10:06:33 -06:00
pblk-core.c lightnvm: pblk: sched. metadata on write thread 2017-06-26 16:27:39 -06:00
pblk-gc.c lightnvm: pblk: sched. metadata on write thread 2017-06-26 16:27:39 -06:00
pblk-init.c lightnvm: pblk: sched. metadata on write thread 2017-06-26 16:27:39 -06:00
pblk-map.c lightnvm: pblk: sched. metadata on write thread 2017-06-26 16:27:39 -06:00
pblk-rb.c lightnvm: pblk: generalize erase path 2017-06-26 16:24:53 -06:00
pblk-read.c lightnvm: pblk: rename read request pool 2017-06-26 16:27:13 -06:00
pblk-recovery.c lightnvm: pblk: sched. metadata on write thread 2017-06-26 16:27:39 -06:00
pblk-rl.c lightnvm: pblk: fix erase counters on error fail 2017-04-23 16:57:52 -06:00
pblk-sysfs.c lightnvm: pblk: sched. metadata on write thread 2017-06-26 16:27:39 -06:00
pblk-write.c lightnvm: pblk: sched. metadata on write thread 2017-06-26 16:27:39 -06:00
pblk.h lightnvm: pblk: sched. metadata on write thread 2017-06-26 16:27:39 -06:00
rrpc.c blk: remove bio_set arg from blk_queue_split() 2017-06-18 12:40:59 -06:00
rrpc.h lightnvm: use end_io callback instead of instance 2017-01-31 08:32:13 -07:00