On Fri, 26 Oct 2018, Sage Weil wrote: > 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 Note that you'll still get a significant win by just using the compound operations I mentioned because these will be aggregated into a single request that passes over the wire. sage > 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 > > > >