From patchwork Mon Mar 19 15:23:03 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stanislav Kholmanskikh X-Patchwork-Id: 887765 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=oracle.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=oracle.com header.i=@oracle.com header.b="DfQLXHng"; dkim-atps=neutral Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 404ftx00wVz9sWj for ; Tue, 20 Mar 2018 02:22:16 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id AB9F03E770E for ; Mon, 19 Mar 2018 16:22:13 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-2.smtp.seeweb.it (in-2.smtp.seeweb.it [IPv6:2001:4b78:1:20::2]) by picard.linux.it (Postfix) with ESMTP id 3FA7D3E76F1 for ; Mon, 19 Mar 2018 16:22:12 +0100 (CET) Received: from userp2130.oracle.com (userp2130.oracle.com [156.151.31.86]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-2.smtp.seeweb.it (Postfix) with ESMTPS id 35A736019E5 for ; Mon, 19 Mar 2018 16:22:11 +0100 (CET) Received: from pps.filterd (userp2130.oracle.com [127.0.0.1]) by userp2130.oracle.com (8.16.0.22/8.16.0.22) with SMTP id w2JFAbkN182263 for ; Mon, 19 Mar 2018 15:22:08 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id; s=corp-2017-10-26; bh=D/OeX/dNQonnfS/JCmsm6YU6k/ioRNpiQH+J2uzB3KI=; b=DfQLXHngKAGC+LwtKgU+AM/UN8bWwrwgr3iyUlE0pdq9UD0/PSY7m6uPfXMiIZgUEa/J Xi1mlBjSuf7cuncBvbOKVSG3r6HSJMETJhTE9xuCYbk3Izk7hpdUItRZNeftYChsf59I 3U0qbKK4Xa34DRyFdTl0NDo8oiadkTmYG24ABVRuOV/QMg0FOmLcM1AtfAN7Fu5RTyIV OfivnJSASSoOeiSqP52kJ8DKO9kamf10kmPk02jI7n3xw5HYHdzWNkC0W29pS9Q2C2yX 7TQmM0/MRNAJAV9Jxfaf+dON/VG264JXTuLCC43mjdGi0RO6UNL/kgxf2PdSuG2xI2xR eQ== Received: from userv0022.oracle.com (userv0022.oracle.com [156.151.31.74]) by userp2130.oracle.com with ESMTP id 2gtfm8r2bx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 19 Mar 2018 15:22:08 +0000 Received: from userv0122.oracle.com (userv0122.oracle.com [156.151.31.75]) by userv0022.oracle.com (8.14.4/8.14.4) with ESMTP id w2JFM7f8020733 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Mon, 19 Mar 2018 15:22:08 GMT Received: from abhmp0006.oracle.com (abhmp0006.oracle.com [141.146.116.12]) by userv0122.oracle.com (8.14.4/8.14.4) with ESMTP id w2JFM74h021369 for ; Mon, 19 Mar 2018 15:22:07 GMT Received: from kholmanskikh.ru.oracle.com (/10.162.81.25) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Mon, 19 Mar 2018 08:22:07 -0700 From: Stanislav Kholmanskikh To: ltp@lists.linux.it Date: Mon, 19 Mar 2018 18:23:03 +0300 Message-Id: <1521472983-7383-1-git-send-email-stanislav.kholmanskikh@oracle.com> X-Mailer: git-send-email 1.7.1 X-Proofpoint-Virus-Version: vendor=nai engine=5900 definitions=8836 signatures=668693 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=1 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-1803190149 X-Virus-Scanned: clamav-milter 0.99.2 at in-2.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU, SPF_PASS, T_RP_MATCHES_RCVD autolearn=disabled version=3.4.0 X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on in-2.smtp.seeweb.it Cc: vasily.isaenko@oracle.com Subject: [LTP] [PATCH] ksm: perform cleanup actions only when they are actually required X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.18 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" This one is similar to commit 8ae3916674fa ("mem/oom, tunable: perform cleanup actions only when they are actually required") i.e. we are making sure that ksm tests do not revert any not yet performed actions. Signed-off-by: Stanislav Kholmanskikh --- testcases/kernel/mem/ksm/ksm01.c | 6 +++++- testcases/kernel/mem/ksm/ksm02.c | 11 +++++++++-- testcases/kernel/mem/ksm/ksm03.c | 11 +++++++++-- testcases/kernel/mem/ksm/ksm04.c | 16 +++++++++++++--- testcases/kernel/mem/ksm/ksm06.c | 5 ++++- 5 files changed, 40 insertions(+), 9 deletions(-) diff --git a/testcases/kernel/mem/ksm/ksm01.c b/testcases/kernel/mem/ksm/ksm01.c index ce96983..0961927 100644 --- a/testcases/kernel/mem/ksm/ksm01.c +++ b/testcases/kernel/mem/ksm/ksm01.c @@ -59,6 +59,8 @@ #include "mem.h" #include "ksm_common.h" +static int max_page_sharing_saved; + static void verify_ksm(void) { create_same_memory(size, num, unit); @@ -70,6 +72,7 @@ static void setup(void) tst_brk(TCONF, "KSM configuration is not enabled"); save_max_page_sharing(); + max_page_sharing_saved = 1; parse_ksm_options(opt_sizestr, &size, opt_numstr, &num, opt_unitstr, &unit); @@ -93,7 +96,8 @@ static void cleanup(void) FILE_PRINTF(PATH_KSM "merge_across_nodes", "%d", merge_across_nodes); - restore_max_page_sharing(); + if (max_page_sharing_saved) + restore_max_page_sharing(); } static struct tst_test test = { diff --git a/testcases/kernel/mem/ksm/ksm02.c b/testcases/kernel/mem/ksm/ksm02.c index 03b44c0..014ac1c 100644 --- a/testcases/kernel/mem/ksm/ksm02.c +++ b/testcases/kernel/mem/ksm/ksm02.c @@ -59,6 +59,9 @@ #ifdef HAVE_NUMA_V2 #include +static int max_page_sharing_saved; +static int cpuset_mounted; + static void verify_ksm(void) { unsigned long nmask[MAXNODES / BITS_PER_LONG] = { 0 }; @@ -86,9 +89,11 @@ static void cleanup(void) FILE_PRINTF(PATH_KSM "merge_across_nodes", "%d", merge_across_nodes); - restore_max_page_sharing(); + if (max_page_sharing_saved) + restore_max_page_sharing(); - umount_mem(CPATH, CPATH_NEW); + if (cpuset_mounted) + umount_mem(CPATH, CPATH_NEW); } static void setup(void) @@ -96,6 +101,7 @@ static void setup(void) if (access(PATH_KSM, F_OK) == -1) tst_brk(TCONF, "KSM configuration is not enabled"); save_max_page_sharing(); + max_page_sharing_saved = 1; parse_ksm_options(opt_sizestr, &size, opt_numstr, &num, opt_unitstr, &unit); @@ -106,6 +112,7 @@ static void setup(void) } mount_mem("cpuset", "cpuset", NULL, CPATH, CPATH_NEW); + cpuset_mounted = 1; } static struct tst_test test = { diff --git a/testcases/kernel/mem/ksm/ksm03.c b/testcases/kernel/mem/ksm/ksm03.c index 51cc923..79a8f87 100644 --- a/testcases/kernel/mem/ksm/ksm03.c +++ b/testcases/kernel/mem/ksm/ksm03.c @@ -59,6 +59,9 @@ #include "mem.h" #include "ksm_common.h" +static int max_page_sharing_saved; +static int memcg_mounted; + static void verify_ksm(void) { write_memcg(); @@ -77,8 +80,10 @@ static void setup(void) } save_max_page_sharing(); + max_page_sharing_saved = 1; parse_ksm_options(opt_sizestr, &size, opt_numstr, &num, opt_unitstr, &unit); mount_mem("memcg", "cgroup", "memory", MEMCG_PATH, MEMCG_PATH_NEW); + memcg_mounted = 1; } static void cleanup(void) @@ -87,9 +92,11 @@ static void cleanup(void) FILE_PRINTF(PATH_KSM "merge_across_nodes", "%d", merge_across_nodes); - restore_max_page_sharing(); + if (max_page_sharing_saved) + restore_max_page_sharing(); - umount_mem(MEMCG_PATH, MEMCG_PATH_NEW); + if (memcg_mounted) + umount_mem(MEMCG_PATH, MEMCG_PATH_NEW); } static struct tst_test test = { diff --git a/testcases/kernel/mem/ksm/ksm04.c b/testcases/kernel/mem/ksm/ksm04.c index 835222f..a79e649 100644 --- a/testcases/kernel/mem/ksm/ksm04.c +++ b/testcases/kernel/mem/ksm/ksm04.c @@ -59,6 +59,10 @@ #ifdef HAVE_NUMA_V2 #include +static int max_page_sharing_saved; +static int cpuset_mounted; +static int memcg_mounted; + static void verify_ksm(void) { unsigned long nmask[MAXNODES / BITS_PER_LONG] = { 0 }; @@ -88,10 +92,13 @@ static void cleanup(void) FILE_PRINTF(PATH_KSM "merge_across_nodes", "%d", merge_across_nodes); - restore_max_page_sharing(); + if (max_page_sharing_saved) + restore_max_page_sharing(); - umount_mem(CPATH, CPATH_NEW); - umount_mem(MEMCG_PATH, MEMCG_PATH_NEW); + if (cpuset_mounted) + umount_mem(CPATH, CPATH_NEW); + if (memcg_mounted) + umount_mem(MEMCG_PATH, MEMCG_PATH_NEW); } static void setup(void) @@ -106,10 +113,13 @@ static void setup(void) } save_max_page_sharing(); + max_page_sharing_saved = 1; parse_ksm_options(opt_sizestr, &size, opt_numstr, &num, opt_unitstr, &unit); mount_mem("cpuset", "cpuset", NULL, CPATH, CPATH_NEW); + cpuset_mounted = 1; mount_mem("memcg", "cgroup", "memory", MEMCG_PATH, MEMCG_PATH_NEW); + memcg_mounted = 1; } static struct tst_test test = { diff --git a/testcases/kernel/mem/ksm/ksm06.c b/testcases/kernel/mem/ksm/ksm06.c index 53d532c..92a36c1 100644 --- a/testcases/kernel/mem/ksm/ksm06.c +++ b/testcases/kernel/mem/ksm/ksm06.c @@ -42,6 +42,7 @@ static int run = -1; static int sleep_millisecs = -1; static int merge_across_nodes = -1; +static int max_page_sharing_saved; static unsigned long nr_pages; static char *n_opt; @@ -66,6 +67,7 @@ static void setup(void) tst_brk(TCONF, "no merge_across_nodes sysfs knob"); save_max_page_sharing(); + max_page_sharing_saved = 1; if (!is_numa(NULL, NH_MEMS, 2)) tst_brk(TCONF, "The case needs a NUMA system."); @@ -91,7 +93,8 @@ static void cleanup(void) if (run != -1) FILE_PRINTF(PATH_KSM "run", "%d", run); - restore_max_page_sharing(); + if (max_page_sharing_saved) + restore_max_page_sharing(); } static struct tst_test test = {