Re: What are the I/O boundaries for read/write to a ceph object?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Mar 14, 2025 at 11:51 AM David Howells <dhowells@xxxxxxxxxx> wrote:
>
> Hi Viacheslav, Alex,
>
> Can you tell me what the I/O boundaries are for splitting up a read or a write
> request into separate subrequests?
>
> Does each RPC call need to fit within the bounds of an object or does it need
> to fit within the bounds of a stripe/block?

Hi David,

Within the bounds of a RADOS object.

>
> Can a vectored read/write access multiple objects/blocks?

I'm not sure what "vectored" means in this context, but a single
read/write coming from the VFS may need to access multiple RADOS
objects.  Assuming that the object size is 4M (default), the simplest
example is a request for 8192 bytes at 4190208 offset in the file.

>
> What I'm trying to do is to avoid using ceph_calc_file_object_mapping() as it
> does a bunch of 128-bit divisions for which I don't need the answers.  I only
> need xlen - and really, I just need the limits of the read or write I can
> make.

I don't think ceph_calc_file_object_mapping() can be avoided in the
general case.  With non-default ("fancy") striping, given for example
stripe_unit=64K and stripe_count=5, a single 64K * 6 = 384K request at
offset 0 in the file would need to access 5 RADOS objects, with the
first object/RPC delivering 128K and the other four objects/RPCs 64K
each.

Thanks,

                Ilya





[Index of Archives]     [CEPH Users]     [Ceph Large]     [Ceph Dev]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux