Bug 1924129 - [RFE] write-same operation should efficiently allocate zeroed extents
Summary: [RFE] write-same operation should efficiently allocate zeroed extents
Keywords:
Status: NEW
Alias: None
Product: Red Hat Ceph Storage
Classification: Red Hat Storage
Component: RADOS
Version: 5.0
Hardware: Unspecified
OS: Unspecified
high
high
Target Milestone: ---
: 9.0
Assignee: Neha Ojha
QA Contact: Manohar Murthy
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2021-02-02 16:42 UTC by Jason Dillaman
Modified: 2025-05-15 01:44 UTC (History)
12 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description Jason Dillaman 2021-02-02 16:42:49 UTC
Description of problem:
RBD utilizes the RADOS write-same operation to thick-provision RBD images by transferring a small zeroed buffer with the op with the write-same length of the maximum RBD object size (default 4MiB). 

There is a desire to optimize the Ceph cluster IO impact for the thick-provisioned case by having BlueStore treat a write-same of zeroes as a request to allocate the specified amount of space but avoid the need to actually zero the space (i.e. track that the extent is in-use but flag it as being zeroed/uninitialized). 

In the future, CephFS could also add support for utilizing write-same for its "fallocate" handler (seems to only support punch-hole right now).

Version-Release number of selected component (if applicable):
5.0

Comment 1 RHEL Program Management 2021-02-02 16:42:56 UTC
Please specify the severity of this bug. Severity is defined here:
https://bugzilla.redhat.com/page.cgi?id=fields.html#bug_severity.

Comment 7 Laura Flores 2021-10-25 19:30:16 UTC
> There is a desire to optimize the Ceph cluster IO impact for the thick-provisioned case by having BlueStore treat a write-same of zeroes as a request to allocate the specified amount of space but avoid the need to actually zero the space (i.e. track that the extent is in-use but flag it as being zeroed/uninitialized). 

I am working on a solution for this, where I avoid writing bufferlists in BlueStore that contain zeroes. See this PR, which is still a work in progress, for more details: https://github.com/ceph/ceph/pull/43337


Note You need to log in before you can comment on or make changes to this bug.