From owner-svn-src-user@freebsd.org Tue May 30 13:46:23 2017 Return-Path: Delivered-To: svn-src-user@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id E3E0AB7D455 for ; Tue, 30 May 2017 13:46:23 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id B5C0623F7; Tue, 30 May 2017 13:46:23 +0000 (UTC) (envelope-from pho@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v4UDkMlH021131; Tue, 30 May 2017 13:46:22 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v4UDkM2n021130; Tue, 30 May 2017 13:46:22 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201705301346.v4UDkM2n021130@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Tue, 30 May 2017 13:46:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r319211 - user/pho/stress2/misc X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 May 2017 13:46:24 -0000 Author: pho Date: Tue May 30 13:46:22 2017 New Revision: 319211 URL: https://svnweb.freebsd.org/changeset/base/319211 Log: Improve cleanup and error handling. Style fixes. Sponsored by: Dell EMC Isilon Modified: user/pho/stress2/misc/mlockall2.sh Modified: user/pho/stress2/misc/mlockall2.sh ============================================================================== --- user/pho/stress2/misc/mlockall2.sh Tue May 30 13:35:54 2017 (r319210) +++ user/pho/stress2/misc/mlockall2.sh Tue May 30 13:46:22 2017 (r319211) @@ -36,12 +36,12 @@ # This scenario demonstrates the problem. Fixed in r242012. mem=`sysctl -n hw.usermem` -[ `swapinfo | wc -l` -eq 1 ] && mem=$((mem/100*60)) +[ `sysctl -n vm.swap_total` -eq 0 ] && mem=$((mem / 100 * 60)) here=`pwd` cd /tmp sed '1,/^EOF/d' < $here/$0 > mlockall2.c -mycc -o mlockall2 -Wall -Wextra -O2 -g mlockall2.c +mycc -o mlockall2 -Wall -Wextra -O2 -g mlockall2.c || exit 1 rm -f mlockall2.c cd $here @@ -51,31 +51,36 @@ while kill -0 $! 2>/dev/null; do [ -r mlockall2.core ] && kill $! && break sleep 10 done -[ -r mlockall2.core ] && echo "FAIL" -killall mlockall2 -rm -f /tmp/mlockall2 -exit 0 +[ -r mlockall2.core ] && s=1 || s=0 +pkill mlockall2 +wait +rm -f /tmp/mlockall2 mlockall2.core +exit $s EOF #include -#include -#include -#include #include +#include #include + +#include +#include +#include +#include #include #define LOAD 40 #define N 90000 #define PARALLEL 5 +#define RUNTIME 600 -long size; +static long size; -void +static void swap(void) { - char *c; - int page; long i; + int page; + volatile char *c; setproctitle("swap"); c = malloc(size); @@ -93,7 +98,7 @@ swap(void) } } -void +static void test(void) { pid_t p; @@ -105,7 +110,7 @@ test(void) _exit(0); } if (p > 0) - wait(&status); + waitpid(p, &status, 0); if (status != 0) break; } @@ -115,12 +120,14 @@ test(void) int main(int argc __unused, char **argv) { + time_t start; struct rtprio rtp; - int i, j; + pid_t pids[LOAD], pids2[PARALLEL]; + int i; size = atol(argv[1]) / LOAD * 1.5; for (i = 0; i < LOAD; i++) - if (fork() == 0) + if ((pids[i] = fork()) == 0) swap(); sleep(10); @@ -134,18 +141,24 @@ main(int argc __unused, char **argv) if (mlockall(MCL_CURRENT | MCL_FUTURE) != 0) err(1, "mlockall failed"); - alarm(600); - for (j = 0; j < 10; j++) { + start = time(NULL); + while (time(NULL) - start < RUNTIME) { for (i = 0; i < PARALLEL; i++) { - if (fork() == 0) + if ((pids2[i] = fork()) == 0) test(); } for (i = 0; i < PARALLEL; i++) - wait(NULL); + if (waitpid(pids2[i], NULL, 0) != pids2[i]) + err(1, "waitpid(%d) (2)", pids2[i]); if (access("mlockall2.core", R_OK) == 0) break; } + for (i = 0; i < LOAD; i++) + kill(pids[i], SIGHUP); + for (i = 0; i < LOAD; i++) + if (waitpid(pids[i], NULL, 0) != pids[i]) + err(1, "waitpid(%d)", pids[i]); return (0); }