On 15/07/17 15:33, Jason Dillaman wrote: > On Sat, Jul 15, 2017 at 9:43 AM, Nick Fisk <nick@xxxxxxxxxx> wrote: >> Unless you tell the rbd client to not disable readahead after reading the 1st x number of bytes (rbd readahead disable after bytes=0), it will stop reading ahead and will only cache exactly what is requested by the client. > > The default is to disable librbd readahead caching after reading 50MB > -- since we expect the OS to take over and do a much better job. I understand having the expectation that the client would do the right thing, but from all I can tell it is not the case. I've run out of ways to try to make virtio-scsi (or any other driver) *always* read in 4MB increments. "minimum_io_size" seems to be ignored. BTW I just sent this patch to Qemu (and I'm open to any suggestions on that side!): https://bugs.launchpad.net/qemu/+bug/1600563 But this expectation you mention still has a problem: if you would only put in the RBD cache what the OS specifically requested, the chances of that data being requested twice would be pretty low, since the OS page cache would take care of it better than the RBD cache anyway. So why bother having a read cache if it doesn't fetch anything extra? Incidentally, if the RBD cache were to include the whole object instead of just the requested portion, RBD readahead would be unnecessary. -- Ruben Rodriguez | Senior Systems Administrator, Free Software Foundation GPG Key: 05EF 1D2F FE61 747D 1FC8 27C3 7FAC 7D26 472F 4409 https://fsf.org | https://gnu.org _______________________________________________ ceph-users mailing list ceph-users@xxxxxxxxxxxxxx http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com