From owner-svn-src-user@freebsd.org Wed Apr 19 09:05:31 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 AE431D43639 for ; Wed, 19 Apr 2017 09:05:31 +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 733ED141; Wed, 19 Apr 2017 09:05:31 +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 v3J95U6u094472; Wed, 19 Apr 2017 09:05:30 GMT (envelope-from pho@FreeBSD.org) Received: (from pho@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v3J95Ui5094471; Wed, 19 Apr 2017 09:05:30 GMT (envelope-from pho@FreeBSD.org) Message-Id: <201704190905.v3J95Ui5094471@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: pho set sender to pho@FreeBSD.org using -f From: Peter Holm Date: Wed, 19 Apr 2017 09:05:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r317128 - 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: Wed, 19 Apr 2017 09:05:31 -0000 Author: pho Date: Wed Apr 19 09:05:30 2017 New Revision: 317128 URL: https://svnweb.freebsd.org/changeset/base/317128 Log: Limit RLIMIT_MEMLOCK so test does not deadlock. Cleanup code while here. Modified: user/pho/stress2/misc/mmap14.sh Modified: user/pho/stress2/misc/mmap14.sh ============================================================================== --- user/pho/stress2/misc/mmap14.sh Wed Apr 19 09:01:04 2017 (r317127) +++ user/pho/stress2/misc/mmap14.sh Wed Apr 19 09:05:30 2017 (r317128) @@ -43,11 +43,6 @@ # panic: vm_page_dirty: page is invalid! # https://people.freebsd.org/~pho/stress/log/kostik818.txt -# i386 livelock -# https://people.freebsd.org/~pho/stress/log/mmap14.txt - -[ `uname -m` = "i386" ] || exit 0 # Waiting for mmap14.txt - [ `id -u ` -ne 0 ] && echo "Must be root!" && exit 1 . ../default.cfg @@ -59,18 +54,21 @@ mycc -o mmap14 -Wall -Wextra -O2 -g mmap rm -f mmap14.c daemon sh -c "(cd $here/../testcases/swap; ./swap -t 2m -i 20 -k -h)" -rnd=`od -An -N1 -t u1 /dev/random | sed 's/ //g'` -sleep $((rnd % 10)) +sleep `jot -r 1 1 10` +wire=$((`sysctl -n vm.max_wired` - `sysctl -n vm.stats.vm.v_wire_count`)) for i in `jot 2`; do - /tmp/mmap14 + /tmp/mmap14 $wire +done +while pgrep -q swap; do + pkill -9 swap done -killall -q swap rm -f /tmp/mmap14 /tmp/mmap14.core exit 0 EOF #include #include +#include #include #include #include @@ -92,10 +90,10 @@ EOF #define N (128 * 1024 / (int)sizeof(u_int32_t)) #define PARALLEL 50 -void *p; -u_int32_t r[N]; +static void *p; +static u_int32_t r[N]; -unsigned long +static unsigned long makearg(void) { unsigned long val; @@ -120,7 +118,7 @@ makearg(void) return(val); } -void * +static void * makeptr(void) { unsigned long val; @@ -134,7 +132,7 @@ makeptr(void) return ((void *)val); } -void * +static void * tmmap(void *arg __unused) { size_t len; @@ -164,7 +162,7 @@ tmmap(void *arg __unused) return (NULL); } -void * +static void * tmlock(void *arg __unused) { size_t len; @@ -188,7 +186,7 @@ tmlock(void *arg __unused) return (NULL); } -void +static void test(void) { pthread_t tid[4]; @@ -216,10 +214,28 @@ test(void) } int -main(void) +main(int argc, char *argv[]) { + struct rlimit rl; + rlim_t maxlock; int i, j; + if (argc != 2) { + fprintf(stderr, "Usage:%s \n", argv[0]); + exit(1); + } + if (getrlimit(RLIMIT_MEMLOCK, &rl) == -1) + warn("getrlimit"); + maxlock = atol(argv[1]); + if (maxlock == 0) + errx(1, "Argument is zero"); + maxlock = (maxlock / 10 * 8) / PARALLEL * PAGE_SIZE; + if (maxlock < rl.rlim_cur) { + rl.rlim_max = rl.rlim_cur = maxlock; + if (setrlimit(RLIMIT_MEMLOCK, &rl) == -1) + warn("setrlimit"); + } + for (i = 0; i < N; i++) r[i] = arc4random();