On Fri, 26 Oct 2018, 韦皓诚 wrote: > Thank you~ > But for bluestore, does this mean that it still needs to be called > many times, and the requests should be executed by bluestore one by > one? Can we let bluestore execute multiple requests at a time? > Maybe bluestore already has a batch read api, but I can find the > read(offset, length) api . Yes--currently these will be done sequentially at the OSD. We don't yet have an async read interface at the ObjectStore layer. There has been some prototyping work around this bug nothing that has been completed. As part of the seastar refactor we definitely want to enable this, but whether we also do it for the current code is an open question. You might want to look at https://github.com/ceph/ceph/pull/19380 for an earlier attempt. sage > Sage Weil <sage@xxxxxxxxxxxx> 于2018年10月25日周四 下午10:05写道: > > > > On Thu, 25 Oct 2018, 韦皓诚 wrote: > > > Hi, > > > We need to read multiple locations in a big object(4MB) at the same > > > time with librados and each part is 16KB. If librados provides a batch > > > read api(vector<pair<offset, length>>) and issue multiple requests to > > > SSD, will there be any improvement in performance? > > > > For the C API, ty rados_create_read_op(), rados_read_op_read(..) for each > > extent, and then rados[_aio]_read_op_operate() to do the compound > > operation. The interface varies a bit for the C++ and Python interfaces, > > but the same capability is there. > > > > sage > >