Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp1202087imm; Wed, 19 Sep 2018 14:01:56 -0700 (PDT) X-Google-Smtp-Source: ANB0VdbA5HB7ZvbaAso/DYaATAypv0X8GiUwUebdFAKLLsUzwf7qfboBMR1IatqbCk3Sm7jnP3jE X-Received: by 2002:a63:c347:: with SMTP id e7-v6mr34368708pgd.240.1537390916683; Wed, 19 Sep 2018 14:01:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537390916; cv=none; d=google.com; s=arc-20160816; b=Gl4gvHURjNIoGxv+8da1kYCRKgTqJU32xObVEv8kSP8+La21xJg397qhdg5DrO4/KQ zC1DKm3tMYfGm6V7tOGECc4th0lmt/wzP7RuSuUa7fARLDT0zzv6c5pdyZeM3BRDzRqw mtLTj5nblQlXSjQBuHIiZfPqgMWN0sAGl6sltSt8E2ILX3GnJCQWCUTJNGU00ZJSVNv2 ZeydmJU9gheB8dVATs8aomg6RtuphlE/0FP1uGVMDqM15a/ukJHZRQzBI4DNfCFN9ZAe z7Q4WymRVVXa33eGgL4cjz8vcD7PASYJJKGs2D2k7ZfOveSXJK22GLXLKUUc70IVyysD g61w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=DgBYyVajJHbKz+LjRMenn7nMey/CTpenxwnOX2XUtjE=; b=Zm6QCHlmo6L7LSZXt64PefEJRyZPilRf2NHDBR3j4KRiMDBAIrepT7U466FMBEedCC yGll66ZVqgVDnOWdWB/nENK8THrlMlJcH0X62svJ00lKXLu8KAJoMpVgTL1tSIslUU9S 9QuTyl+5zuzMSbSiWIhVikyDYFvU33pQ1BUJat5+IuHPeDkoqYPpmhgwszKiyjmj17vB b62LyT5qx0K4Q1vyhaDI1qh84fUCdnHjjBXmr8DFMltU8Q9eI9oE4gUac22ClFJV8mNG 41xhqcV7WCqmIrSzMSXYJoxM1dt0Wp11aUYL9h7fVxeHkb3I7i+MO80hVLmOeGyZ/LwP jUjw== ARC-Authentication-Results: i=1; mx.google.com; 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=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y63-v6si21529777pgd.435.2018.09.19.14.01.41; Wed, 19 Sep 2018 14:01:56 -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; 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=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732576AbeITCko (ORCPT + 99 others); Wed, 19 Sep 2018 22:40:44 -0400 Received: from mga05.intel.com ([192.55.52.43]:60272 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727865AbeITCkn (ORCPT ); Wed, 19 Sep 2018 22:40:43 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Sep 2018 14:01:02 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.53,395,1531810800"; d="scan'208";a="71344735" Received: from unknown (HELO localhost.lm.intel.com) ([10.232.112.44]) by fmsmga007.fm.intel.com with ESMTP; 19 Sep 2018 14:01:01 -0700 From: Keith Busch To: linux-mm@kvack.org, linux-kernel@vger.kernel.org Cc: Kirill Shutemov , Dave Hansen , Dan Williams , Keith Busch Subject: [PATCH 1/7] mm/gup_benchmark: Time put_page Date: Wed, 19 Sep 2018 15:02:44 -0600 Message-Id: <20180919210250.28858-2-keith.busch@intel.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20180919210250.28858-1-keith.busch@intel.com> References: <20180919210250.28858-1-keith.busch@intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org We'd like to measure time to unpin user pages, so this adds a second benchmark timer on put_page, separate from get_page. This will break ABI on this ioctl, but being an in-kernel benchmark may be acceptable. Cc: Kirill Shutemov Cc: Dave Hansen Cc: Dan Williams Signed-off-by: Keith Busch --- mm/gup_benchmark.c | 8 ++++++-- tools/testing/selftests/vm/gup_benchmark.c | 6 ++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/mm/gup_benchmark.c b/mm/gup_benchmark.c index 6a473709e9b6..76cd35e477af 100644 --- a/mm/gup_benchmark.c +++ b/mm/gup_benchmark.c @@ -8,7 +8,8 @@ #define GUP_FAST_BENCHMARK _IOWR('g', 1, struct gup_benchmark) struct gup_benchmark { - __u64 delta_usec; + __u64 get_delta_usec; + __u64 put_delta_usec; __u64 addr; __u64 size; __u32 nr_pages_per_call; @@ -47,14 +48,17 @@ static int __gup_benchmark_ioctl(unsigned int cmd, } end_time = ktime_get(); - gup->delta_usec = ktime_us_delta(end_time, start_time); + gup->get_delta_usec = ktime_us_delta(end_time, start_time); gup->size = addr - gup->addr; + start_time = ktime_get(); for (i = 0; i < nr_pages; i++) { if (!pages[i]) break; put_page(pages[i]); } + end_time = ktime_get(); + gup->put_delta_usec = ktime_us_delta(end_time, start_time); kvfree(pages); return 0; diff --git a/tools/testing/selftests/vm/gup_benchmark.c b/tools/testing/selftests/vm/gup_benchmark.c index 36df55132036..bdcb97acd0ac 100644 --- a/tools/testing/selftests/vm/gup_benchmark.c +++ b/tools/testing/selftests/vm/gup_benchmark.c @@ -17,7 +17,8 @@ #define GUP_FAST_BENCHMARK _IOWR('g', 1, struct gup_benchmark) struct gup_benchmark { - __u64 delta_usec; + __u64 get_delta_usec; + __u64 put_delta_usec; __u64 addr; __u64 size; __u32 nr_pages_per_call; @@ -81,7 +82,8 @@ int main(int argc, char **argv) if (ioctl(fd, GUP_FAST_BENCHMARK, &gup)) perror("ioctl"), exit(1); - printf("Time: %lld us", gup.delta_usec); + printf("Time: get:%lld put:%lld us", gup.get_delta_usec, + gup.put_delta_usec); if (gup.size != size) printf(", truncated (size: %lld)", gup.size); printf("\n"); -- 2.14.4