On Tue, Nov 10, 2015 at 7:19 AM, 池信泽 <xmdxcxz@xxxxxxxxx> wrote: > hi, all: > > op_wq is declared as ShardedThreadPool::ShardedWQ < pair <PGRef, > OpRequestRef> > &op_wq. I do not know why we should use PGRef in this? > > Because the overhead of the smart pointer is not small. Maybe the > raw point PG* is also OK? > > If op_wq is changed to ShardedThreadPool::ShardedWQ < pair <PG*, > OpRequestRef> > &op_wq (using raw point) > > the latency for PrioritizedQueue:;enqueue decrease from 3.38us -> 1.89us > > the latency for PrioritizedQueue:;dequeue decrease from 3.44us -> 1.65us > > Is this make sense to you? In general we use PGRefs rather than PG pointers. I think we actually rely on the references here to keep the PG from going out of scope at an inopportune time, but if it halves the cost of queuing actions it might be worth the effort of avoiding that. -Greg -- 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