public inbox for cgroups@vger.kernel.org
 help / color / mirror / Atom feed
From: Haitao Huang <haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
To: jarkko-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	dave.hansen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org,
	tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-sgx-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
	cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org,
	mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org,
	bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org,
	hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org,
	sohil.mehta-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org
Cc: zhiquan1.li-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org,
	kristen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org,
	seanjc-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org,
	zhanb-0li6OtcxBFHby3iVrkZq2A@public.gmane.org,
	anakrish-0li6OtcxBFHby3iVrkZq2A@public.gmane.org,
	mikko.ylinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org,
	yangjie-0li6OtcxBFHby3iVrkZq2A@public.gmane.org
Subject: [PATCH v4 18/18] selftests/sgx: Add scripts for epc cgroup testing
Date: Tue, 12 Sep 2023 21:06:35 -0700	[thread overview]
Message-ID: <20230913040635.28815-19-haitao.huang@linux.intel.com> (raw)
In-Reply-To: <20230913040635.28815-1-haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>

Scripts rely on cgroup-tools package from libcgroup [1].

To test:
1) sudo ./setup_epc_cg.sh (optional one time setup)
2) sudo ./run_tests_in_misc_cg.sh

To watch misc group current:
./watch_misc_for_tests.sh current

[1] https://github.com/libcgroup/libcgroup/blob/main/README

Signed-off-by: Haitao Huang <haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
---
V4:

Note: Need to apply on top of this series previously reviewed:
https://lore.kernel.org/linux-sgx/20220905020411.17290-1-jarkko-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org/
---
 .../selftests/sgx/run_tests_in_misc_cg.sh     | 68 +++++++++++++++++++
 tools/testing/selftests/sgx/setup_epc_cg.sh   | 29 ++++++++
 .../selftests/sgx/watch_misc_for_tests.sh     | 13 ++++
 3 files changed, 110 insertions(+)
 create mode 100755 tools/testing/selftests/sgx/run_tests_in_misc_cg.sh
 create mode 100755 tools/testing/selftests/sgx/setup_epc_cg.sh
 create mode 100755 tools/testing/selftests/sgx/watch_misc_for_tests.sh

diff --git a/tools/testing/selftests/sgx/run_tests_in_misc_cg.sh b/tools/testing/selftests/sgx/run_tests_in_misc_cg.sh
new file mode 100755
index 000000000000..63da7b23b74e
--- /dev/null
+++ b/tools/testing/selftests/sgx/run_tests_in_misc_cg.sh
@@ -0,0 +1,68 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright(c) 2023 Intel Corporation.
+
+if ! lscgroup | grep -q "test/test1/test3$"; then
+  echo "setting up cgroups for testing..."
+  ./setup_epc_cg.sh
+fi
+
+cmd='./test_sgx'
+default_test="augment_via_eaccept_long"
+
+# We use 'tail' to skip header lines and 'sed' to remove 'enclave' from the first non-header line.
+list=$($cmd -l 2>&1 | tail -n +4 | sed '0,/^enclave/ s/^enclave//' | sed 's/^ *//')
+
+IFS=$'\n' read -d '' -r -a lines <<< "$list"
+lines=("all" "${lines[@]}")
+
+echo "Available tests:"
+for i in "${!lines[@]}"; do
+  # Check if the current line is the default test
+  if [[ ${lines[$i]} == *"$default_test"* ]]; then
+    echo "$((i)). ${lines[$i]} (default)"
+  else
+    echo "$((i)). ${lines[$i]}"
+  fi
+done
+
+echo "Please enter the number of the test you want to run (or press enter for the default test):"
+read choice
+
+if [ -z "$choice" ]; then
+  testname="$default_test"
+else
+  testname="${lines[$choice]}"
+fi
+
+if [ "$testname" == "all" ]; then
+  test_cmd="$cmd"
+else
+  test_cmd="$cmd -t $testname"
+fi
+
+timestamp=$(date +%Y%m%d_%H%M%S)
+
+# Always use leaf node of misc cgroups so it works for both v1 and v2
+# these may fail on OOM
+nohup bash -c "cgexec -g misc:test/test1/test3 $test_cmd" >test1_1_$timestamp.log 2>&1 &
+nohup bash -c "cgexec -g misc:test/test1/test3 $test_cmd" >test1_2_$timestamp.log 2>&1 &
+nohup bash -c "cgexec -g misc:test/test1/test3 $test_cmd" >test1_3_$timestamp.log 2>&1 &
+nohup bash -c "cgexec -g misc:test/test1/test3 $test_cmd" >test1_4_$timestamp.log 2>&1 &
+nohup bash -c "cgexec -g misc:test/test1/test3 $test_cmd" >test1_5_$timestamp.log 2>&1 &
+
+# These tests may timeout on oversubscribed tests on 4G EPC
+nohup bash -c "cgexec -g misc:test/test2 $test_cmd" >test2_1_$timestamp.log 2>&1 &
+nohup bash -c "cgexec -g misc:test/test2 $test_cmd" >test2_2_$timestamp.log 2>&1 &
+nohup bash -c "cgexec -g misc:test/test2 $test_cmd" >test2_3_$timestamp.log 2>&1 &
+nohup bash -c "cgexec -g misc:test/test2 $test_cmd" >test2_4_$timestamp.log 2>&1 &
+nohup bash -c "cgexec -g misc:test/test2 $test_cmd" >test2_5_$timestamp.log 2>&1 &
+nohup bash -c "cgexec -g misc:test/test2 $test_cmd" >test2_6_$timestamp.log 2>&1 &
+nohup bash -c "cgexec -g misc:test/test2 $test_cmd" >test2_7_$timestamp.log 2>&1 &
+nohup bash -c "cgexec -g misc:test/test2 $test_cmd" >test2_8_$timestamp.log 2>&1 &
+
+# this should work on 4G EPC
+nohup bash -c "cgexec -g misc:test4 $test_cmd" >test4_1_$timestamp.log 2>&1 &
+nohup bash -c "cgexec -g misc:test4 $test_cmd" >test4_2_$timestamp.log 2>&1 &
+nohup bash -c "cgexec -g misc:test4 $test_cmd" >test4_3_$timestamp.log 2>&1 &
+nohup bash -c "cgexec -g misc:test4 $test_cmd" >test4_4_$timestamp.log 2>&1 &
diff --git a/tools/testing/selftests/sgx/setup_epc_cg.sh b/tools/testing/selftests/sgx/setup_epc_cg.sh
new file mode 100755
index 000000000000..5fd137a66436
--- /dev/null
+++ b/tools/testing/selftests/sgx/setup_epc_cg.sh
@@ -0,0 +1,29 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright(c) 2023 Intel Corporation.
+
+cgcreate -g misc:test
+if [ $? -ne 0 ]; then
+    echo "Please make sure cgroup-tools is installed, and misc cgroup is mounted."
+    exit 1
+fi
+cgcreate -g misc:test/test1
+cgcreate -g misc:test/test1/test3
+cgcreate -g misc:test/test2
+cgcreate -g misc:test4
+
+# Setup for a platform with 4G EPC
+LARGER=4096000000
+LARGE=409600000
+SMALL=4096000
+if [ ! -d "/sys/fs/cgroup/misc" ]; then
+    echo "cgroups v2 is in use. Only leaf nodes can run a process"
+    echo "sgx_epc $SMALL" | tee /sys/fs/cgroup/test/test1/misc.max
+    echo "sgx_epc $LARGE" | tee /sys/fs/cgroup/test/test2/misc.max
+    echo "sgx_epc $LARGER" | tee /sys/fs/cgroup/test4/misc.max
+else
+    echo "cgroups v1 is in use."
+    echo "sgx_epc $SMALL" | tee /sys/fs/cgroup/misc/test/test1/misc.max
+    echo "sgx_epc $LARGE" | tee /sys/fs/cgroup/misc/test/test2/misc.max
+    echo "sgx_epc $LARGER" | tee /sys/fs/cgroup/misc/test4/misc.max
+fi
diff --git a/tools/testing/selftests/sgx/watch_misc_for_tests.sh b/tools/testing/selftests/sgx/watch_misc_for_tests.sh
new file mode 100755
index 000000000000..dbd38f346e7b
--- /dev/null
+++ b/tools/testing/selftests/sgx/watch_misc_for_tests.sh
@@ -0,0 +1,13 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright(c) 2023 Intel Corporation.
+
+if [ -z "$1" ]
+  then
+    echo "No argument supplied, please provide 'max', 'current' or 'events'"
+    exit 1
+fi
+
+watch -n 1 "find /sys/fs/cgroup -wholename */test*/misc.$1 -exec sh -c \
+    'echo \"\$1:\"; cat \"\$1\"' _ {} \;"
+
-- 
2.25.1


  parent reply	other threads:[~2023-09-13  4:06 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-13  4:06 [PATCH v4 00/18] Add Cgroup support for SGX EPC memory Haitao Huang
     [not found] ` <20230913040635.28815-1-haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2023-09-13  4:06   ` [PATCH v4 01/18] cgroup/misc: Add per resource callbacks for CSS events Haitao Huang
     [not found]     ` <20230913040635.28815-2-haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2023-09-13  9:39       ` Jarkko Sakkinen
2023-09-16  4:11         ` Haitao Huang
     [not found]           ` <op.2bci9anpwjvjmi-yDQzE4XY+yVaPPhiJ6yCxLKMmGWinSIL2HeeBUIffwg@public.gmane.org>
2023-09-25 16:57             ` Jarkko Sakkinen
2023-09-25 16:57               ` Jarkko Sakkinen
2023-09-15 17:55     ` Tejun Heo
     [not found]       ` <ZQSaoXBg-X4cwFdX-qYNAdHglDFBN0TnZuCh8vA@public.gmane.org>
2023-09-15 17:58         ` Tejun Heo
2023-09-16  1:27           ` Haitao Huang
2023-09-13  4:06   ` [PATCH v4 02/18] cgroup/misc: Add SGX EPC resource type and export APIs for SGX driver Haitao Huang
     [not found]     ` <20230913040635.28815-3-haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2023-09-13  9:43       ` Jarkko Sakkinen
2023-09-13  4:06   ` [PATCH v4 03/18] x86/sgx: Add sgx_epc_lru_lists to encapsulate LRU lists Haitao Huang
     [not found]     ` <20230913040635.28815-4-haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2023-09-13  9:46       ` Jarkko Sakkinen
2023-09-14 10:31       ` Huang, Kai
     [not found]         ` <851f9b3043732c17cd8f86a77ccee0b7c6caa22f.camel-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2023-09-14 16:13           ` Dave Hansen
2023-09-14 21:58             ` Huang, Kai
2023-09-15 16:28         ` Haitao Huang
2023-09-13  4:06   ` [PATCH v4 04/18] x86/sgx: Use sgx_epc_lru_lists for existing active page list Haitao Huang
     [not found]     ` <20230913040635.28815-5-haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2023-09-13 15:00       ` Jarkko Sakkinen
2023-09-13  4:06   ` [PATCH v4 05/18] x86/sgx: Store reclaimable EPC pages in sgx_epc_lru_lists Haitao Huang
     [not found]     ` <20230913040635.28815-6-haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2023-09-13 15:14       ` Jarkko Sakkinen
2023-09-13  4:06   ` [PATCH v4 06/18] x86/sgx: Introduce EPC page states Haitao Huang
     [not found]     ` <20230913040635.28815-7-haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2023-09-13 15:15       ` Jarkko Sakkinen
2023-09-13  4:06   ` [PATCH v4 07/18] x86/sgx: Introduce RECLAIM_IN_PROGRESS state Haitao Huang
2023-09-13  4:06   ` [PATCH v4 08/18] x86/sgx: Use a list to track to-be-reclaimed pages Haitao Huang
     [not found]     ` <20230913040635.28815-9-haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2023-09-13 15:30       ` Jarkko Sakkinen
2023-09-13  4:06   ` [PATCH v4 09/18] x86/sgx: Store struct sgx_encl when allocating new VA pages Haitao Huang
     [not found]     ` <20230913040635.28815-10-haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2023-09-13 15:31       ` Jarkko Sakkinen
2023-09-13  4:06   ` [PATCH v4 10/18] x86/sgx: Add EPC page flags to identify owner types Haitao Huang
2023-09-13  4:06   ` [PATCH v4 11/18] x86/sgx: store unreclaimable pages in LRU lists Haitao Huang
     [not found]     ` <20230913040635.28815-12-haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2023-09-13 15:33       ` Jarkko Sakkinen
2023-09-13  4:06   ` [PATCH v4 12/18] x86/sgx: Add EPC OOM path to forcefully reclaim EPC Haitao Huang
     [not found]     ` <20230913040635.28815-13-haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2023-09-13 15:34       ` Jarkko Sakkinen
2023-09-16  4:19         ` Haitao Huang
2023-09-13  4:06   ` [PATCH v4 13/18] x86/sgx: Expose sgx_reclaim_pages() for use by EPC cgroup Haitao Huang
2023-09-13 15:36     ` Jarkko Sakkinen
2023-09-13  4:06   ` [PATCH v4 14/18] x86/sgx: Add helper to grab pages from an arbitrary EPC LRU Haitao Huang
2023-09-13  4:06   ` [PATCH v4 15/18] x86/sgx: Prepare for multiple LRUs Haitao Huang
     [not found]     ` <20230913040635.28815-16-haitao.huang-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2023-09-13 15:42       ` Jarkko Sakkinen
2023-09-16  4:18         ` Haitao Huang
2023-09-13  4:06   ` [PATCH v4 16/18] x86/sgx: Limit process EPC usage with misc cgroup controller Haitao Huang
2023-09-13 15:48     ` Jarkko Sakkinen
2023-09-13  4:06   ` [PATCH v4 17/18] Docs/x86/sgx: Add description for cgroup support Haitao Huang
2023-09-13  4:06   ` Haitao Huang [this message]
2023-09-15 18:26   ` [PATCH v4 00/18] Add Cgroup support for SGX EPC memory Tejun Heo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230913040635.28815-19-haitao.huang@linux.intel.com \
    --to=haitao.huang-vuqaysv1563yd54fqh9/ca@public.gmane.org \
    --cc=anakrish-0li6OtcxBFHby3iVrkZq2A@public.gmane.org \
    --cc=bp-Gina5bIWoIWzQB+pC5nmwQ@public.gmane.org \
    --cc=cgroups-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=dave.hansen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=hpa-YMNOUZJC4hwAvxtiuMwx3w@public.gmane.org \
    --cc=jarkko-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=kristen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-sgx-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mikko.ylinen-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=mingo-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org \
    --cc=seanjc-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
    --cc=sohil.mehta-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    --cc=tglx-hfZtesqFncYOwBW4kG4KsQ@public.gmane.org \
    --cc=tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=x86-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
    --cc=yangjie-0li6OtcxBFHby3iVrkZq2A@public.gmane.org \
    --cc=zhanb-0li6OtcxBFHby3iVrkZq2A@public.gmane.org \
    --cc=zhiquan1.li-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox