Re: why ShardedWQ in osd using smart pointer for PG?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I wonder if we want to keep the PG from going out of scope at an
inopportune time, why snap_trim_queue and scrub_queue declared as
xlist<PG*> instead of xlist<PGRef>?

2015-11-11 2:28 GMT+08:00 Gregory Farnum <gfarnum@xxxxxxxxxx>:
> 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



-- 
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



[Index of Archives]     [CEPH Users]     [Ceph Large]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux