From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C02B5C47404 for ; Fri, 4 Oct 2019 10:58:16 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 97D58215EA for ; Fri, 4 Oct 2019 10:58:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730677AbfJDK6P (ORCPT ); Fri, 4 Oct 2019 06:58:15 -0400 Received: from mx2.suse.de ([195.135.220.15]:55186 "EHLO mx1.suse.de" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725730AbfJDK6H (ORCPT ); Fri, 4 Oct 2019 06:58:07 -0400 X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id D9295AD78; Fri, 4 Oct 2019 10:58:05 +0000 (UTC) From: =?UTF-8?q?Michal=20Koutn=C3=BD?= To: cgroups@vger.kernel.org Cc: Tejun Heo , linux-kernel@vger.kernel.org, Li Zefan , Johannes Weiner Subject: [PATCH 5/5] selftests: cgroup: Run test_core under interfering stress Date: Fri, 4 Oct 2019 12:57:43 +0200 Message-Id: <20191004105743.363-6-mkoutny@suse.com> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20191004105743.363-1-mkoutny@suse.com> References: <20191004105743.363-1-mkoutny@suse.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org test_core tests various cgroup creation/removal and task migration paths. Run the tests repeatedly with interfering noise (for lockdep checks). Currently, forking noise and subsystem enabled/disabled switching are the implemented noises. Signed-off-by: Michal Koutný --- tools/testing/selftests/cgroup/Makefile | 2 + tools/testing/selftests/cgroup/test_stress.sh | 4 + tools/testing/selftests/cgroup/with_stress.sh | 101 ++++++++++++++++++ 3 files changed, 107 insertions(+) create mode 100755 tools/testing/selftests/cgroup/test_stress.sh create mode 100755 tools/testing/selftests/cgroup/with_stress.sh diff --git a/tools/testing/selftests/cgroup/Makefile b/tools/testing/selftests/cgroup/Makefile index 1c9179400be0..66aafe1f5746 100644 --- a/tools/testing/selftests/cgroup/Makefile +++ b/tools/testing/selftests/cgroup/Makefile @@ -3,6 +3,8 @@ CFLAGS += -Wall -pthread all: +TEST_FILES := with_stress.sh +TEST_PROGS := test_stress.sh TEST_GEN_PROGS = test_memcontrol TEST_GEN_PROGS += test_core TEST_GEN_PROGS += test_freezer diff --git a/tools/testing/selftests/cgroup/test_stress.sh b/tools/testing/selftests/cgroup/test_stress.sh new file mode 100755 index 000000000000..15d9d5896394 --- /dev/null +++ b/tools/testing/selftests/cgroup/test_stress.sh @@ -0,0 +1,4 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +./with_stress.sh -s subsys -s fork ./test_core diff --git a/tools/testing/selftests/cgroup/with_stress.sh b/tools/testing/selftests/cgroup/with_stress.sh new file mode 100755 index 000000000000..e28c35008f5b --- /dev/null +++ b/tools/testing/selftests/cgroup/with_stress.sh @@ -0,0 +1,101 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0 + +# Kselftest framework requirement - SKIP code is 4. +ksft_skip=4 + +stress_fork() +{ + while true ; do + /usr/bin/true + sleep 0.01 + done +} + +stress_subsys() +{ + local verb=+ + while true ; do + echo $verb$subsys_ctrl >$sysfs/cgroup.subtree_control + [ $verb = "+" ] && verb=- || verb=+ + # incommensurable period with other stresses + sleep 0.011 + done +} + +init_and_check() +{ + sysfs=`mount -t cgroup2 | head -1 | awk '{ print $3 }'` + if [ ! -d "$sysfs" ]; then + echo "Skipping: cgroup2 is not mounted" >&2 + exit $ksft_skip + fi + + if ! echo +$subsys_ctrl >$sysfs/cgroup.subtree_control ; then + echo "Skipping: cannot enable $subsys_ctrl in $sysfs" >&2 + exit $ksft_skip + fi + + if ! echo -$subsys_ctrl >$sysfs/cgroup.subtree_control ; then + echo "Skipping: cannot disable $subsys_ctrl in $sysfs" >&2 + exit $ksft_skip + fi +} + +declare -a stresses +declare -a stress_pids +duration=5 +rc=0 +subsys_ctrl=cpuset +sysfs= + +while getopts c:d:hs: opt; do + case $opt in + c) + subsys_ctrl=$OPTARG + ;; + d) + duration=$OPTARG + ;; + h) + echo "Usage $0 [ -s stress ] ... [ -d duration ] [-c controller] cmd args .." + echo -e "\t default duration $duration seconds" + echo -e "\t default controller $subsys_ctrl" + exit + ;; + s) + func=stress_$OPTARG + if [ "x$(type -t $func)" != "xfunction" ] ; then + echo "Unknown stress $OPTARG" + exit 1 + fi + stresses+=($func) + ;; + esac +done +shift $((OPTIND - 1)) + +init_and_check + +for s in ${stresses[*]} ; do + $s & + stress_pids+=($!) +done + + +time=0 +start=$(date +%s) + +while [ $time -lt $duration ] ; do + $* + rc=$? + [ $rc -eq 0 ] || break + time=$(($(date +%s) - $start)) +done + +for pid in ${stress_pids[*]} ; do + kill -SIGTERM $pid + wait $pid +done + +exit $rc -- 2.21.0 From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Michal=20Koutn=C3=BD?= Subject: [PATCH 5/5] selftests: cgroup: Run test_core under interfering stress Date: Fri, 4 Oct 2019 12:57:43 +0200 Message-ID: <20191004105743.363-6-mkoutny@suse.com> References: <20191004105743.363-1-mkoutny@suse.com> Mime-Version: 1.0 Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191004105743.363-1-mkoutny@suse.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: Content-Type: text/plain; charset="macroman" To: cgroups@vger.kernel.org Cc: Tejun Heo , linux-kernel@vger.kernel.org, Li Zefan , Johannes Weiner dGVzdF9jb3JlIHRlc3RzIHZhcmlvdXMgY2dyb3VwIGNyZWF0aW9uL3JlbW92YWwgYW5kIHRhc2sg bWlncmF0aW9uCnBhdGhzLiBSdW4gdGhlIHRlc3RzIHJlcGVhdGVkbHkgd2l0aCBpbnRlcmZlcmlu ZyBub2lzZSAoZm9yIGxvY2tkZXAKY2hlY2tzKS4gQ3VycmVudGx5LCBmb3JraW5nIG5vaXNlIGFu ZCBzdWJzeXN0ZW0gZW5hYmxlZC9kaXNhYmxlZApzd2l0Y2hpbmcgYXJlIHRoZSBpbXBsZW1lbnRl ZCBub2lzZXMuCgpTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgS291dG7DvSA8bWtvdXRueUBzdXNlLmNv bT4KLS0tCiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAvTWFrZWZpbGUgICAgICAgfCAg IDIgKwogdG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvY2dyb3VwL3Rlc3Rfc3RyZXNzLnNoIHwgICA0 ICsKIHRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2Nncm91cC93aXRoX3N0cmVzcy5zaCB8IDEwMSAr KysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMTA3IGluc2VydGlvbnMoKykKIGNy ZWF0ZSBtb2RlIDEwMDc1NSB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAvdGVzdF9zdHJl c3Muc2gKIGNyZWF0ZSBtb2RlIDEwMDc1NSB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAv d2l0aF9zdHJlc3Muc2gKCmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3Jv dXAvTWFrZWZpbGUgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAvTWFrZWZpbGUKaW5k ZXggMWM5MTc5NDAwYmUwLi42NmFhZmUxZjU3NDYgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Rlc3Rpbmcv c2VsZnRlc3RzL2Nncm91cC9NYWtlZmlsZQorKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9j Z3JvdXAvTWFrZWZpbGUKQEAgLTMsNiArMyw4IEBAIENGTEFHUyArPSAtV2FsbCAtcHRocmVhZAog CiBhbGw6CiAKK1RFU1RfRklMRVMgICAgIDo9IHdpdGhfc3RyZXNzLnNoCitURVNUX1BST0dTICAg ICA6PSB0ZXN0X3N0cmVzcy5zaAogVEVTVF9HRU5fUFJPR1MgPSB0ZXN0X21lbWNvbnRyb2wKIFRF U1RfR0VOX1BST0dTICs9IHRlc3RfY29yZQogVEVTVF9HRU5fUFJPR1MgKz0gdGVzdF9mcmVlemVy CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAvdGVzdF9zdHJlc3Mu c2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAvdGVzdF9zdHJlc3Muc2gKbmV3IGZp bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwLi4xNWQ5ZDU4OTYzOTQKLS0tIC9kZXYv bnVsbAorKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAvdGVzdF9zdHJlc3Muc2gK QEAgLTAsMCArMSw0IEBACisjIS9iaW4vYmFzaAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMAorCisuL3dpdGhfc3RyZXNzLnNoIC1zIHN1YnN5cyAtcyBmb3JrIC4vdGVzdF9jb3Jl CmRpZmYgLS1naXQgYS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAvd2l0aF9zdHJlc3Mu c2ggYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAvd2l0aF9zdHJlc3Muc2gKbmV3IGZp bGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAwMDAwLi5lMjhjMzUwMDhmNWIKLS0tIC9kZXYv bnVsbAorKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9jZ3JvdXAvd2l0aF9zdHJlc3Muc2gK QEAgLTAsMCArMSwxMDEgQEAKKyMhL2Jpbi9iYXNoCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wCisKKyMgS3NlbGZ0ZXN0IGZyYW1ld29yayByZXF1aXJlbWVudCAtIFNLSVAgY29k ZSBpcyA0Lgora3NmdF9za2lwPTQKKworc3RyZXNzX2ZvcmsoKQoreworCXdoaWxlIHRydWUgOyBk bworCQkvdXNyL2Jpbi90cnVlCisJCXNsZWVwIDAuMDEKKwlkb25lCit9CisKK3N0cmVzc19zdWJz eXMoKQoreworCWxvY2FsIHZlcmI9KworCXdoaWxlIHRydWUgOyBkbworCQllY2hvICR2ZXJiJHN1 YnN5c19jdHJsID4kc3lzZnMvY2dyb3VwLnN1YnRyZWVfY29udHJvbAorCQlbICR2ZXJiID0gIisi IF0gJiYgdmVyYj0tIHx8IHZlcmI9KworCQkjIGluY29tbWVuc3VyYWJsZSBwZXJpb2Qgd2l0aCBv dGhlciBzdHJlc3NlcworCQlzbGVlcCAwLjAxMQorCWRvbmUKK30KKworaW5pdF9hbmRfY2hlY2so KQoreworCXN5c2ZzPWBtb3VudCAtdCBjZ3JvdXAyIHwgaGVhZCAtMSB8IGF3ayAneyBwcmludCAk MyB9J2AKKwlpZiBbICEgLWQgIiRzeXNmcyIgXTsgdGhlbgorCQllY2hvICJTa2lwcGluZzogY2dy b3VwMiBpcyBub3QgbW91bnRlZCIgPiYyCisJCWV4aXQgJGtzZnRfc2tpcAorCWZpCisKKwlpZiAh IGVjaG8gKyRzdWJzeXNfY3RybCA+JHN5c2ZzL2Nncm91cC5zdWJ0cmVlX2NvbnRyb2wgOyB0aGVu CisJCWVjaG8gIlNraXBwaW5nOiBjYW5ub3QgZW5hYmxlICRzdWJzeXNfY3RybCBpbiAkc3lzZnMi ID4mMgorCQlleGl0ICRrc2Z0X3NraXAKKwlmaQorCisJaWYgISBlY2hvIC0kc3Vic3lzX2N0cmwg PiRzeXNmcy9jZ3JvdXAuc3VidHJlZV9jb250cm9sIDsgdGhlbgorCQllY2hvICJTa2lwcGluZzog Y2Fubm90IGRpc2FibGUgJHN1YnN5c19jdHJsIGluICRzeXNmcyIgPiYyCisJCWV4aXQgJGtzZnRf c2tpcAorCWZpCit9CisKK2RlY2xhcmUgLWEgc3RyZXNzZXMKK2RlY2xhcmUgLWEgc3RyZXNzX3Bp ZHMKK2R1cmF0aW9uPTUKK3JjPTAKK3N1YnN5c19jdHJsPWNwdXNldAorc3lzZnM9CisKK3doaWxl IGdldG9wdHMgYzpkOmhzOiBvcHQ7IGRvCisJY2FzZSAkb3B0IGluCisJYykKKwkJc3Vic3lzX2N0 cmw9JE9QVEFSRworCQk7OworCWQpCisJCWR1cmF0aW9uPSRPUFRBUkcKKwkJOzsKKwloKQorCQll Y2hvICJVc2FnZSAkMCBbIC1zIHN0cmVzcyBdIC4uLiBbIC1kIGR1cmF0aW9uIF0gWy1jIGNvbnRy b2xsZXJdIGNtZCBhcmdzIC4uIgorCQllY2hvIC1lICJcdCBkZWZhdWx0IGR1cmF0aW9uICRkdXJh dGlvbiBzZWNvbmRzIgorCQllY2hvIC1lICJcdCBkZWZhdWx0IGNvbnRyb2xsZXIgJHN1YnN5c19j dHJsIgorCQlleGl0CisJCTs7CisJcykKKwkJZnVuYz1zdHJlc3NfJE9QVEFSRworCQlpZiBbICJ4 JCh0eXBlIC10ICRmdW5jKSIgIT0gInhmdW5jdGlvbiIgXSA7IHRoZW4KKwkJCWVjaG8gIlVua25v d24gc3RyZXNzICRPUFRBUkciCisJCQlleGl0IDEKKwkJZmkKKwkJc3RyZXNzZXMrPSgkZnVuYykK KwkJOzsKKwllc2FjCitkb25lCitzaGlmdCAkKChPUFRJTkQgLSAxKSkKKworaW5pdF9hbmRfY2hl Y2sKKworZm9yIHMgaW4gJHtzdHJlc3Nlc1sqXX0gOyBkbworCSRzICYKKwlzdHJlc3NfcGlkcys9 KCQhKQorZG9uZQorCisKK3RpbWU9MAorc3RhcnQ9JChkYXRlICslcykKKword2hpbGUgWyAkdGlt ZSAtbHQgJGR1cmF0aW9uIF0gOyBkbworCSQqCisJcmM9JD8KKwlbICRyYyAtZXEgMCBdIHx8IGJy ZWFrCisJdGltZT0kKCgkKGRhdGUgKyVzKSAtICRzdGFydCkpCitkb25lCisKK2ZvciBwaWQgaW4g JHtzdHJlc3NfcGlkc1sqXX0gOyBkbworCWtpbGwgLVNJR1RFUk0gJHBpZAorCXdhaXQgJHBpZAor ZG9uZQorCitleGl0ICRyYwotLSAKMi4yMS4wCgo=