Yes, I think so. keeping them separate and pass them to ObjectStore::queue_transactions() would increase the time on transaction encode process and exhaust more cpu. The transaction::append holds 0.8% cpu on my environment. The transaction encoding is also really a bottleneck which process holds 1.8% cpu on my environment. 2015-11-01 4:42 GMT+08:00 Sage Weil <sage@xxxxxxxxxxxx>: > On Sat, 31 Oct 2015, Ning Yao wrote: >> Yeah, since issue_op is called before log_operation, we may consider >> to reuse op_t after sent encoded op_t to the wire. local_t.append(), >> at least, does copy the op_bl in op_t transaction and we may avoid >> this memory copy, and if we can avoid this append operation as well as >> in sub_op_modify_impl(), it, at least, improves the performance 1%~2% >> under my testing environment using ssd as Filestore backend. >> The only difference we find in this path is that local_t should be >> done first, but actually it seems that the order of the transaction is >> not quite important. If so, we may refactor and improve this? > > I seem to recall that in teh EC case the order does matter (I had switched > the append order when trying to fix this before but had to revert because > things broke). > > And I'm a bit nervous about re-using local_t and relying on the send vs > submit timing. Is it not practical to keep them separate and > pass them both down to ObjectStore::queue_transactions()? > > sage -- Regards, xinze -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html