Received: by 10.213.65.68 with SMTP id h4csp164247imn; Tue, 3 Apr 2018 17:57:43 -0700 (PDT) X-Google-Smtp-Source: AIpwx49OBnai+eS6aNNb+LRw0uK6U9BJ0yNXtNeUZrx+tWgT3EWZq/7qb8kaZwQWjLOIabvDd3F3 X-Received: by 2002:a17:902:900a:: with SMTP id a10-v6mr16776598plp.142.1522803463012; Tue, 03 Apr 2018 17:57:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522803462; cv=none; d=google.com; s=arc-20160816; b=tSN8mqLPhL+Qj8UrAkOzJBANzzd3aUskvIo5/BoQLdP4I/AFxg7pHlcJdsMd8DMhkP qsAcqvJcEz2zPELO5yYgYc03nfuo4J0J/ql5pk1R/RAkhLBqnCA3QHD4TiCFFEAMkq6E CG7izCdFRIuttE4+zCV6Iebe/h5odnnyw6R9j0MnARg+w6xiYGEsj8zbmKDgSIbWEiZp XzUxxwEgsR4ObjiG+h6tboDrC6luup1lt1sqGdgV6fazOBQ3C/qHdcGC+wvWdV6SKJK1 R0Ea8HHyppme8ltzxvycCgrRYXewcGeAUp3KLxnGsr63LA0qjhAmTdrgIoOr1H/JRwZ1 3KPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-language :content-transfer-encoding:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature :arc-authentication-results; bh=mCnDhbx82hqIvQwXR9WTWXYcdZuM/FXgOp0K59ttDJ4=; b=L4AjdGlHag061FfMn/zvyu+DLNAe5YeROlFUwwtkESKuY7+gNFjJD7ujjhqRyCRplp DftTCoP7ofBMxW3Yf87R9Wo+c7n2o9MSlYfBVJzbxdyHiYwxLizq78Kb7aQMEuElrrF+ P3q4ubP9XXFsnHYDQE7KmGbDuF/UHkqpAhYZthoq8kDYSjJ92utftyiCKof2v/1gi5Q3 hI3+jfkbTVA/AKkRu7yENK1XO5ZCG02bkQ7Xlvn+KNZ7QxNRWsGM9kCGfiilxb99K2sa qZ/qQCNK+W/gKz48UCuOPMEsPHOnHiaZuAJa9Hs2Wg0OLEE6UBesd7fN8uCaALBJSzl5 SqYQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2017-10-26 header.b=bUf8QBoC; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id o124si2762070pga.600.2018.04.03.17.57.28; Tue, 03 Apr 2018 17:57:42 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@oracle.com header.s=corp-2017-10-26 header.b=bUf8QBoC; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=oracle.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754254AbeDDA4Z (ORCPT + 99 others); Tue, 3 Apr 2018 20:56:25 -0400 Received: from aserp2120.oracle.com ([141.146.126.78]:47232 "EHLO aserp2120.oracle.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754059AbeDDA4Y (ORCPT ); Tue, 3 Apr 2018 20:56:24 -0400 Received: from pps.filterd (aserp2120.oracle.com [127.0.0.1]) by aserp2120.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w340r7qZ112926; Wed, 4 Apr 2018 00:56:05 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=subject : to : cc : references : from : message-id : date : mime-version : in-reply-to : content-type : content-transfer-encoding; s=corp-2017-10-26; bh=mCnDhbx82hqIvQwXR9WTWXYcdZuM/FXgOp0K59ttDJ4=; b=bUf8QBoCWmLF30aKJs2QFeUHRDauqXAmCCBgnE6KlA8sa5t7/rywgPNE4ChmdfzuXVY3 r+qRa8H/ygjyAMmY+n+7gLJYuLOLRSJJJrtWnRQkhnY7quxSnu5NzCgR0Nd1Fla/XzNS z+nrRJ2Fr5z7nUOx6vRn9/ZdmW28d00N7TqLOI2+Wp3HHlngd10F+TIF2V29ibe10m2X cqtXGMsa+vpa9QohgipDq74i2wUAmm4FBMI/RoOU7s81HyjLWKHZcwZz++R04iRWyAbq M7+UaLCERPAlOOS+/deWEEJtYcBhakr+KBeW61PfIoks9iHe8/pmKBiQ+Z/VDtP9Mstn aw== Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by aserp2120.oracle.com with ESMTP id 2h4mj5r086-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 04 Apr 2018 00:56:04 +0000 Received: from aserv0121.oracle.com (aserv0121.oracle.com [141.146.126.235]) by userv0022.oracle.com (8.14.4/8.14.4) with ESMTP id w340u35q007839 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 4 Apr 2018 00:56:03 GMT Received: from abhmp0013.oracle.com (abhmp0013.oracle.com [141.146.116.19]) by aserv0121.oracle.com (8.14.4/8.13.8) with ESMTP id w340u2HX015475; Wed, 4 Apr 2018 00:56:02 GMT Received: from [192.168.1.34] (/67.188.214.158) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Tue, 03 Apr 2018 17:56:02 -0700 Subject: Re: [PATCH 2/2] kfree_rcu() should use kfree_bulk() interface To: Matthew Wilcox Cc: linux-kernel@vger.kernel.org, paulmck@linux.vnet.ibm.com, joe@perches.com, brouer@redhat.com, linux-mm@kvack.org References: <1522776173-7190-1-git-send-email-rao.shoaib@oracle.com> <1522776173-7190-3-git-send-email-rao.shoaib@oracle.com> <20180403205822.GB30145@bombadil.infradead.org> From: Rao Shoaib Message-ID: Date: Tue, 3 Apr 2018 17:55:55 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <20180403205822.GB30145@bombadil.infradead.org> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Content-Language: en-US X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8852 signatures=668697 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=2 malwarescore=0 phishscore=0 bulkscore=0 spamscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1711220000 definitions=main-1804040000 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 04/03/2018 01:58 PM, Matthew Wilcox wrote: > On Tue, Apr 03, 2018 at 10:22:53AM -0700, rao.shoaib@oracle.com wrote: >> +++ b/mm/slab.h >> @@ -80,6 +80,29 @@ extern const struct kmalloc_info_struct { >> unsigned long size; >> } kmalloc_info[]; >> >> +#define RCU_MAX_ACCUMULATE_SIZE 25 >> + >> +struct rcu_bulk_free_container { >> + struct rcu_head rbfc_rcu; >> + int rbfc_entries; >> + void *rbfc_data[RCU_MAX_ACCUMULATE_SIZE]; >> + struct rcu_bulk_free *rbfc_rbf; >> +}; >> + >> +struct rcu_bulk_free { >> + struct rcu_head rbf_rcu; /* used to schedule monitor process */ >> + spinlock_t rbf_lock; >> + struct rcu_bulk_free_container *rbf_container; >> + struct rcu_bulk_free_container *rbf_cached_container; >> + struct rcu_head *rbf_list_head; >> + int rbf_list_size; >> + int rbf_cpu; >> + int rbf_empty; >> + int rbf_polled; >> + bool rbf_init; >> + bool rbf_monitor; >> +}; > I think you might be better off with an IDR. The IDR can always > contain one entry, so there's no need for this 'rbf_list_head' or > __rcu_bulk_schedule_list. The IDR contains its first 64 entries in > an array (if that array can be allocated), so it's compatible with the > kfree_bulk() interface. > I have just familiarized myself with what IDR is by reading your article. If I am incorrect please correct me. The list and head you have pointed are only used  if the container can not be allocated. That could happen with IDR as well. Note that the containers are allocated at boot time and are re-used. IDR seems to have some overhead, such as I have to specifically add the pointer and free the ID, plus radix tree maintenance. The change would also require retesting. So I would like to keep the current design. Regards, Shoaib