Skip to content

Commit

Permalink
block: cleanup the memory stall accounting in submit_bio
Browse files Browse the repository at this point in the history
Instead of a convoluted chain just check for REQ_OP_READ directly,
and keep all the memory stall code together in a single unlikely
branch.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
  • Loading branch information
Christoph Hellwig authored and Jens Axboe committed Apr 29, 2020
1 parent 3fdd408 commit 760f83e
Showing 1 changed file with 14 additions and 16 deletions.
30 changes: 14 additions & 16 deletions block/blk-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1148,10 +1148,6 @@ EXPORT_SYMBOL_GPL(direct_make_request);
*/
blk_qc_t submit_bio(struct bio *bio)
{
bool workingset_read = false;
unsigned long pflags;
blk_qc_t ret;

if (blkcg_punt_bio_submit(bio))
return BLK_QC_T_NONE;

Expand All @@ -1170,8 +1166,6 @@ blk_qc_t submit_bio(struct bio *bio)
if (op_is_write(bio_op(bio))) {
count_vm_events(PGPGOUT, count);
} else {
if (bio_flagged(bio, BIO_WORKINGSET))
workingset_read = true;
task_io_account_read(bio->bi_iter.bi_size);
count_vm_events(PGPGIN, count);
}
Expand All @@ -1187,20 +1181,24 @@ blk_qc_t submit_bio(struct bio *bio)
}

/*
* If we're reading data that is part of the userspace
* workingset, count submission time as memory stall. When the
* device is congested, or the submitting cgroup IO-throttled,
* submission can be a significant part of overall IO time.
* If we're reading data that is part of the userspace workingset, count
* submission time as memory stall. When the device is congested, or
* the submitting cgroup IO-throttled, submission can be a significant
* part of overall IO time.
*/
if (workingset_read)
psi_memstall_enter(&pflags);

ret = generic_make_request(bio);
if (unlikely(bio_op(bio) == REQ_OP_READ &&
bio_flagged(bio, BIO_WORKINGSET))) {
unsigned long pflags;
blk_qc_t ret;

if (workingset_read)
psi_memstall_enter(&pflags);
ret = generic_make_request(bio);
psi_memstall_leave(&pflags);

return ret;
return ret;
}

return generic_make_request(bio);
}
EXPORT_SYMBOL(submit_bio);

Expand Down

0 comments on commit 760f83e

Please sign in to comment.