Actions
Feature #5551
openSkipping dmu_buf_will_dirty() call in dsl_dir_transfer_space()
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:
External Bug:
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
Updated by F. H. almost 2 years ago
Similar OpenZFS Commit: https://github.com/openzfs/zfs/commit/c1b5869bab987711ed00c3b5b43ee7145d332003
Actions