Project

General

Profile

Actions

Feature #5551

open

Skipping dmu_buf_will_dirty() call in dsl_dir_transfer_space()

Added by Alexander Motin over 6 years ago. Updated 19 days ago.

Status:
New
Priority:
Normal
Assignee:
-
Category:
-
Start date:
2015-01-20
Due date:
% Done:

0%

Estimated time:
Difficulty:
Bite-size
Tags:
needs-triage
Gerrit CR:

Description

dsl_dir_transfer_space() is mostly called after dsl_dir_diduse_space(),
which already calls dmu_buf_will_dirty() for the same dbuf and tx, so
its duplicate call in those cases will change nothing, only spend time.

Skipping this call by four times reduces time spent in dbuf_write_done()
and descendants, updating dataset statistics with several congested lock
acquisitions. When rewriting 8K zvol blocks at 1GB/s rate, this reduces
CPU time spent inside dbuf_write_done(), according to profiling, from 45%
of 683K samples to 18% of 422K.


Files

will_dirty.patch (2.26 KB) will_dirty.patch Alexander Motin, 2015-01-20 02:03 PM
Actions

Also available in: Atom PDF