Re: [PATCH] ceph: optimizing cap allocation

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

 




> 在 2018年3月5日,上午10:52,Yan, Zheng <zyan@xxxxxxxxxx> 写道:
> 
> 
> 
>> On 24 Feb 2018, at 18:35, Chengguang Xu <cgxu519@xxxxxxxxxx> wrote:
>> 
>> When setting high volume of caps_min_count or having many
>> unreserved caps, unused caps may always keep in the ->caps_list
>> even can't get new cap from kmem_cache_alloc because lack of
>> maximum limitation of caps_avail_count. Hence reuse caps in
>> ->caps_list if available, it's maybe better than setting max
>> limitation of caps_avail_count and releasing unused caps when
>> reaching the limit.
>> 
>> Signed-off-by: Chengguang Xu <cgxu519@xxxxxxxxxx>
>> ---
>> Only compile tested.
>> 
>> fs/ceph/caps.c | 17 +++++++++++++++++
>> 1 file changed, 17 insertions(+)
>> 
>> diff --git a/fs/ceph/caps.c b/fs/ceph/caps.c
>> index 6582c45..b598a24 100644
>> --- a/fs/ceph/caps.c
>> +++ b/fs/ceph/caps.c
>> @@ -280,6 +280,23 @@ struct ceph_cap *ceph_get_cap(struct ceph_mds_client *mdsc,
>> 	/* temporary, until we do something about cap import/export */
>> 	if (!ctx) {
>> 		cap = kmem_cache_alloc(ceph_cap_cachep, GFP_NOFS);
>> +		if (!cap) {
>> +			spin_lock(&mdsc->caps_list_lock);
>> +			if (mdsc->caps_avail_count) {
>> +				BUG_ON(list_empty(&mdsc->caps_list));
>> +
>> +				mdsc->caps_avail_count--;
>> +				mdsc->caps_use_count++;
>> +				cap = list_first_entry(&mdsc->caps_list,
>> +						struct ceph_cap, caps_item);
>> +				list_del(&cap->caps_item);
>> +
>> +				BUG_ON(mdsc->caps_total_count != mdsc->caps_use_count +
>> +				       mdsc->caps_reserve_count + mdsc->caps_avail_count);
>> +			}
>> +			spin_unlock(&mdsc->caps_list_lock);
>> +		}
>> +
> 
> should skip executing following code. I fixed it locally

Yes, that should be in else part. Thanks for your fix.

> 
>> 		if (cap) {
>> 			spin_lock(&mdsc->caps_list_lock);
>> 			mdsc->caps_use_count++;
>> -- 
>> 1.8.3.1

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