From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756152AbcDDRMD (ORCPT ); Mon, 4 Apr 2016 13:12:03 -0400 Received: from mail-bl2on0112.outbound.protection.outlook.com ([65.55.169.112]:49312 "EHLO na01-bl2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752058AbcDDRMA (ORCPT ); Mon, 4 Apr 2016 13:12:00 -0400 Authentication-Results: kyup.com; dkim=none (message not signed) header.d=none;kyup.com; dmarc=none action=none header.from=hpe.com; Message-ID: <5702A053.5030404@hpe.com> Date: Mon, 4 Apr 2016 13:11:47 -0400 From: Waiman Long User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.12) Gecko/20130109 Thunderbird/10.0.12 MIME-Version: 1.0 To: Nikolay Borisov CC: "Theodore Ts'o" , Andreas Dilger , Tejun Heo , Christoph Lameter , , , Scott J Norton , Douglas Hatch , Toshimitsu Kani Subject: Re: [PATCH 2/3] percpu_stats: Simple per-cpu statistics count helper functions References: <1459566578-30221-1-git-send-email-Waiman.Long@hpe.com> <1459566578-30221-3-git-send-email-Waiman.Long@hpe.com> <57021969.8050504@kyup.com> In-Reply-To: <57021969.8050504@kyup.com> Content-Type: text/plain; charset="windows-1252"; format=flowed Content-Transfer-Encoding: 7bit X-Originating-IP: [72.71.243.95] X-ClientProxiedBy: BY2PR03CA066.namprd03.prod.outlook.com (10.141.249.39) To DF4PR84MB0314.NAMPRD84.PROD.OUTLOOK.COM (10.162.193.28) X-MS-Office365-Filtering-Correlation-Id: 4187e39a-8999-4bd5-c8bf-08d35cac39cd X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0314;2:zhkfBkAmFK/aGQcptp/amMaLX+WGdCGlLTWVc3+cuKCslFIlwPeVJAzggT67/x7nkbYvhZD5NDCGsYL63HbXfiAhXZzBTjqF/iS52QGlRGBU+lkl/Y0eu4terwhohOBeS9rnScK7KN+D9iEOSdIyCjYZDBhAa6aaM6NnOhCTO52Lqc3T7qVqOsBLBLZkIvjS;3:NAoJ91twQH3WqFIDgJt3dGVRsQeegOZMlBMT2l+gXaGj3XiLGVI8fLqNOIsux1b7zDuuodinmLPnHZ5RS0xDUm9/ZO4xe7U2eieHTVIEetDzh9L7LWPiQXPAik0TqZaA;25:CVBTj6enM6iyQMNAee3MpvEi283EEfcsiPdKd1wDB/0Mcu+zfyfBaX/T0ETeEFOQf3OOTWSGEokaIzqJbVYRGUhAjf3gjQuqsPWYaILQSqo/vScVaHVb+/nTtaEj2kXec0gJu5AOPu52AS+TBQsRxpgxm/zq3Z8PC61LNODdBHHacEkSX2UDzO1y6S5AZHlgXu+fkSXpe6xKuGEoxpIQI1oZF97itCh2MBNgD5iwOXka/yxXX9BAidZi57JY8PN2zuSmHRBAwvlIlpOxxJVi19NPx2chIY2iLX/gzOGreypkDZSmzXYxn9l5mbqLhjxgMoJkfdXt/1klUEAGSIrsH6nePyOBbD6O0nvl5NWJUREr0QizRL6QBZFSWSJYbM+zUVP9hlwSv4UnoXMvbOKPTPYPaD2Xjk/d7dPgaQqtS89y31nCIdQw01h5ymqSWumHLudkESg8qItunugKfjvpH/wdKsAYChrtSUM6xPC4T7/wJklLxdLoMAc/vZ4FFlvzY+Andz9cHdkg/Qz0tFWJaQkF2kX0bjwTQy6B478PUkK3oLjw8EcxC2PI38OOJJpxyPE3b1HkDseugvKuM7pF9TVVjn9Vn/HSSk35oIfTThg= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DF4PR84MB0314; X-LD-Processed: 105b2061-b669-4b31-92ac-24d304d195dc,ExtAddr X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0314;20:8Dd1OBXsrcsGGZHYnyK5B8lMFnPrtovI65C2d+rZxwDcy7+XwYTeRy81ZHNzaZ6ErLKsxZBcq/71KUWPipJXEFUAT7be+l2P7AHo+NCTjiH88QXbBQFqbV9zt8gwkUVri/z3Z+QrmDE8KEHIJBIkKiqNdno2M1FulGIOgBNkdgsFFGGnQap3uk1VGn57ZhY+KStj2kBDFLmW4izhioFQVvhAxoIiYcY/Y6cVB9AjSrSfgUva4oDzxE/KN7A/G478d62iKsHsTnWcdRlyir/LTI+WyKv9rB4p7KbgbPN1axVtsqqeGR23PDk15PytUQqSxNqzW4ovFNepxZfqxgkN6M0/EBj8Oo1NF7JEUx81KZJlR9tHUNRq2Ys5UemwgWr4cy5jQ9XLA3MyPucvO0XanHBGNgwUxSwImghwhtpaUvs=;4:en9yrjoNLRNZbURFZ7Qmdzh8Emf4PgxRlyCcAYnHd6W8mflAt9rZxAMu5wNgp2Dn9Vzyq8+BQzWEbM0gZ+a/L7rdMtYOFbgvWfGdWTp/SCk70Nwsq2AsUihRjsTUb24LmSTSCAPVzr3Pk/cBm12rzHnmFg7ABeBbA5kCcHsa2Ust45HaTYiKj8Qy9+TRQGhf7F0CCo40APTsRHQEJ++IEyLYTkufsdYPtvJTDelIFdFh+LABBB1LfRyQX8jWFgbasSz+wIgOyVayG1nJ1bUMvxR3UcJvSkOqltk6J54Jmf7YbMENV0IMq/NcpRmhE18sZkBhfwaXEulduJgcNRvJxjpF2QZ90f7IzaWepDrm0msSpNH0PYZ2c1g/1qbHJHYx X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046);SRVR:DF4PR84MB0314;BCL:0;PCL:0;RULEID:;SRVR:DF4PR84MB0314; X-Forefront-PRVS: 0902222726 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10019020)(4630300001)(6049001)(6009001)(377454003)(24454002)(50466002)(19580405001)(36756003)(80316001)(76176999)(87266999)(54356999)(50986999)(65806001)(92566002)(5008740100001)(2906002)(3846002)(230700001)(81166005)(19580395003)(6116002)(5004730100002)(586003)(4326007)(59896002)(42186005)(2950100001)(117156001)(33656002)(189998001)(77096005)(83506001)(66066001)(65956001)(110136002)(4001350100001)(1096002)(47776003)(64126003)(86362001);DIR:OUT;SFP:1102;SCL:1;SRVR:DF4PR84MB0314;H:[192.168.142.150];FPR:;SPF:None;MLV:sfv;LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1;DF4PR84MB0314;23:9A8pQAJ9ZnjBQPDmSW58Ab8R2RQpCd0r0WVrZ?= =?Windows-1252?Q?wGUbm26+jDsJ2+/GOqNtfmRfVJFJeW6OJkbXbTW0GNm64ZzuuCyzFL5n?= =?Windows-1252?Q?BrC/DkBcxyvvNqnYA87Eytv+4t9edBoXH1t4aH5g01tSvXcnDRoyVek9?= =?Windows-1252?Q?Ebi4/X8+N8wW0LeXVE/1ryMlEJ75cwY/opd1JRjHAb2r9cxPIR6cnLJF?= =?Windows-1252?Q?wd/tkT6CoWUWSevOTcvU8nfnUxsycdS3xMaJkK/ZC0wB/hLCdjyOZDjq?= =?Windows-1252?Q?8JGjEQ5tvacn9qHxyXEvlr9zq/ZmXTDwVr6ZTTd/T3c9d/O/w6rgYj39?= =?Windows-1252?Q?CRYLEy8fsFl1wqLVpBETybKOC1wllq4z1MCcY7ZEdRc6AJLEzZJQVH+Z?= =?Windows-1252?Q?g3oK0cArVdR9sdJ5shdF7IBit19tbxfxB0wgaUD1yfKQ1cZzJ1v4fr73?= =?Windows-1252?Q?MXp+rXwJVTFRdxTaM7Bf5NFH4UKOug0lj9hrsLHGb/zr+ZR8qatLEQcK?= =?Windows-1252?Q?PMX++dp1latk9Mfz5C78M87/mkXI/Ntre9ijb/IR3TXOGecra3enFRqg?= =?Windows-1252?Q?/WyY62RRO+ab8mRKq/60DV3WbFKaWRZlmVtXjXd0tZ5KP3b3PPV4NLVO?= =?Windows-1252?Q?19ie6aBJCOlZbnVJi3W28plVM9rM2S7MB7uCJEvD6S6nWTPlnyughaOL?= =?Windows-1252?Q?K6zJfyouDnj7a47fubxMub1hlWdEvK/+oFIMaCevd1x362RBnEqgoj+4?= =?Windows-1252?Q?dD78IZplhn6OhXfhhK7oRmhPpvGsbNG9U/ihvRGmnhl3PxopeOQACoU9?= =?Windows-1252?Q?+rpAjgKVlOPHBZ0d68jyF+mj3ybiqWsXcB64yvJOTZ++OI4ONv9p6Qxr?= =?Windows-1252?Q?9f3+ex+/N8695RXWX6sNYhXMmxatyvPHRCk9l7DUn28F2+qIJ3J+3ZNd?= =?Windows-1252?Q?qGBKQmOFwUHeqTi4jisNBh+Ywu/6MwG4gQKpoV+EIHdP6rdcxWq2boW6?= =?Windows-1252?Q?6NMd+B39GKc5iQ5m0Qki0Otz6hBYo8GUpeyN6kYrqw8k3xdQX6JPCXZ3?= =?Windows-1252?Q?a/1rgVZijRhdPVeUoHgdkdX3+B+kuHgVDUQp9QbZtX2G9jfT7A4Hty1Q?= =?Windows-1252?Q?f7fTIS0cCXx5X39jhuqGCxy/wVRo8sDnDG6xcmBZArb?= X-Microsoft-Exchange-Diagnostics: 1;DF4PR84MB0314;5:/aA05aujrwIxvE/ecAfotCMvgFFfYVWSBQ8NaPyaoVXH3YZ/I3kJ0uJakVAvDdmeuvgQxjLAfBUBEVw4LoLe6RSoLqZsjQm4lySWK6Ak+GuHjqrDSkte/XsBSQ/YVyzzyclxdAzvZy5+9O2hcl4hlQ==;24:dWhmzJKZcrHgCRvNT+0yw/1QtvG0wpNCWEZZmgHfj6qPBjS9HB8Yv7QpNALQY3J3jq1k05w4I7cSCcImFrvzUxyhESbyi/+UboLunr9XsQo= SpamDiagnosticOutput: 1:23 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: hpe.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Apr 2016 17:11:54.6413 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DF4PR84MB0314 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 04/04/2016 03:36 AM, Nikolay Borisov wrote: > > On 04/02/2016 06:09 AM, Waiman Long wrote: >> This patch introduces a set of simple per-cpu statictics count helper >> functions that can be used by other kernel subsystems for keeping >> track of the number of events that happens. It is per-cpu based to >> reduce overhead and improve accuracy of the counter. Using per-cpu >> counter is usually overkill for such purpose. >> >> The following APIs are provided: >> >> - int percpu_stats_init(struct percpu_stats *pcs, int num) >> Initialize the per-cpu statictics counts structure which should have >> the given number of statistics counts. Return -ENOMEM on error. >> >> - void percpu_stats_destroy(struct percpu_stats *pcs) >> Free the percpu memory allocated. >> >> - void percpu_stats_inc(struct percpu_stats *pcs, int stat) >> void percpu_stats_dec(struct percpu_stats *pcs, int stat) >> Increment and decrement the given per-cpu statistics count. >> >> - unsigned long percpu_stats_sum(struct percpu_stats *pcs, int stat) >> Return the current aggregated sum of the given statistics count. >> >> - void percpu_stats_reset(struct percpu_stats *pcs) >> Clear all the statistics counts defined in the given percpu_stats >> structure. >> >> Signed-off-by: Waiman Long >> --- >> include/linux/percpu_stats.h | 103 ++++++++++++++++++++++++++++++++++++++++++ >> 1 files changed, 103 insertions(+), 0 deletions(-) >> create mode 100644 include/linux/percpu_stats.h > Just one minor nit below. > [..] >> +static inline void >> +__percpu_stats_add(struct percpu_stats *pcs, int stat, int cnt) >> +{ >> + unsigned long *pstat; >> + >> + if ((unsigned int)stat>= pcs->nstats) >> + return; >> + preempt_disable(); >> + pstat = this_cpu_ptr(&pcs->stats[stat]); >> + *pstat += cnt; >> + preempt_enable(); >> +} > pstat = get_cpu_ptr(&pcs->stats[stat]); > *pstat += cnt; > put_cpu_ptr(&pcs->stats[stat]); > > It will generate identical code but this one uses APIs, making the > intention clearer. But as I said this is just a minor nit. > > you can add my Reviewed-by: Nikolay Borisov for this > particular patch. Yes, that will certainly make it look nicer. I will update the patch once I get feedback from my other ext4 patches. Cheers, Longman