From patchwork Wed Sep 28 06:22:25 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jia He X-Patchwork-Id: 675986 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3skSMQ320Qz9s4n for ; Wed, 28 Sep 2016 16:23:46 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b=C38GU9z9; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754212AbcI1GX0 (ORCPT ); Wed, 28 Sep 2016 02:23:26 -0400 Received: from mail-io0-f196.google.com ([209.85.223.196]:33447 "EHLO mail-io0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753340AbcI1GXG (ORCPT ); Wed, 28 Sep 2016 02:23:06 -0400 Received: by mail-io0-f196.google.com with SMTP id r145so2240693ior.0; Tue, 27 Sep 2016 23:23:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=pG7NDeogY7ynwjV6GBT/4vq7T34xsbI1Bt6bWyqRufM=; b=C38GU9z9KY2BdE4Y+T4NnWRv4bexiVb7dSFiAGfwhaFDwbfhISgzWc9tCHVaVtfiQ8 DdggBCIhsA/FCwCBp95bAmcip3UIldxXm19VBuZ+L90hE6lokqbGPIjxgL05YSWFG9eu snTEukZ/zWWNX5/pGZsmh5U8L0X4pnQzMi2L+Rn9OOUMq6vmOeFRMtLJdV1MJm8VXoba XIkwMbTRm57vH0/ql8SlpPk8FvhQHFbEluwvDUrQO05fTP+arw3A7mnkkkBEpRYz5vyZ RaZPcJFwFjSXVv1RaBytknJ0l0QFi4rPnINf4K6Vwrv5NIxX217PdXaKpir7pgnk0Ti8 cSKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=pG7NDeogY7ynwjV6GBT/4vq7T34xsbI1Bt6bWyqRufM=; b=d0Axh2R6Pn2Wadq2KQMaMGlPLDeMAEM63XaqBFcDnYI5uIYLnEhDyBnd4bGrdJkvoJ Jqef24ka3ogI0LYN95kYBzSnWOiZBZft9EPqvgCbDdO2Ir8LY1mZ/+Qf0tLkWELYgaHc 1IHjcMYcbKzLiKymXD+ti41TIg9oY1HhkObz/9NcjgMpFQrC1NWB7vI/68NoZQGnimd5 ziln/FDWgZiVjo69nmRJZC+R9P85uTpcnvWWfvFfpBV7yAdyyQjc16zz54helcLYFUnR 8GwFGDrIost4e4kiQIxq2v6FmcWNZrqGKJ1BFWkHDehhtk+jNN6oEdPC537RDfcNaO8Y b7kA== X-Gm-Message-State: AA6/9RmpG+2dwVsflBDXPJt2jP4Z70Ku7Itau2DkULkjqbG6W2QYLnmsiz1cfsffS1QG7Q== X-Received: by 10.36.92.196 with SMTP id q187mr684810itb.33.1475043784809; Tue, 27 Sep 2016 23:23:04 -0700 (PDT) Received: from localhost.localdomain.localdomain ([106.38.0.83]) by smtp.gmail.com with ESMTPSA id r123sm7150915ith.1.2016.09.27.23.22.59 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 27 Sep 2016 23:23:04 -0700 (PDT) From: Jia He To: netdev@vger.kernel.org Cc: linux-sctp@vger.kernel.org, linux-kernel@vger.kernel.org, davem@davemloft.net, Alexey Kuznetsov , James Morris , Hideaki YOSHIFUJI , Patrick McHardy , Vlad Yasevich , Neil Horman , Steffen Klassert , Herbert Xu , marcelo.leitner@gmail.com, Jia He Subject: [PATCH v5 4/7] proc: Reduce cache miss in sctp_snmp_seq_show Date: Wed, 28 Sep 2016 14:22:25 +0800 Message-Id: <1475043748-18161-5-git-send-email-hejianet@gmail.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1475043748-18161-1-git-send-email-hejianet@gmail.com> References: <1475043748-18161-1-git-send-email-hejianet@gmail.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org This is to use the generic interfaces snmp_get_cpu_field{,64}_batch to aggregate the data by going through all the items of each cpu sequentially. Signed-off-by: Jia He --- net/sctp/proc.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/net/sctp/proc.c b/net/sctp/proc.c index ef8ba77..9e7f4a7 100644 --- a/net/sctp/proc.c +++ b/net/sctp/proc.c @@ -73,13 +73,17 @@ static const struct snmp_mib sctp_snmp_list[] = { /* Display sctp snmp mib statistics(/proc/net/sctp/snmp). */ static int sctp_snmp_seq_show(struct seq_file *seq, void *v) { - struct net *net = seq->private; int i; + struct net *net = seq->private; + unsigned long buff[SCTP_MIB_MAX]; + + memset(buff, 0, sizeof(unsigned long) * SCTP_MIB_MAX); + snmp_get_cpu_field_batch(buff, sctp_snmp_list, + net->sctp.sctp_statistics); for (i = 0; sctp_snmp_list[i].name != NULL; i++) seq_printf(seq, "%-32s\t%ld\n", sctp_snmp_list[i].name, - snmp_fold_field(net->sctp.sctp_statistics, - sctp_snmp_list[i].entry)); + buff[i]); return 0; }