]> CyberLeo.Net >> Repos - FreeBSD/stable/10.git/blob - cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/buffering/tst.cputime.ksh
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
[FreeBSD/stable/10.git] / cddl / contrib / opensolaris / cmd / dtrace / test / tst / common / buffering / tst.cputime.ksh
1 #
2 # CDDL HEADER START
3 #
4 # The contents of this file are subject to the terms of the
5 # Common Development and Distribution License (the "License").
6 # You may not use this file except in compliance with the License.
7 #
8 # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 # or http://www.opensolaris.org/os/licensing.
10 # See the License for the specific language governing permissions
11 # and limitations under the License.
12 #
13 # When distributing Covered Code, include this CDDL HEADER in each
14 # file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 # If applicable, add the following below this CDDL HEADER, with the
16 # fields enclosed by brackets "[]" replaced with your own identifying
17 # information: Portions Copyright [yyyy] [name of copyright owner]
18 #
19 # CDDL HEADER END
20 #
21
22 #
23 # Copyright 2006 Sun Microsystems, Inc.  All rights reserved.
24 # Use is subject to license terms.
25 #
26 #ident  "%Z%%M% %I%     %E% SMI"
27
28 script()
29 {
30         $dtrace -s /dev/stdin -x bufpolicy=$1 $1 <<EOF
31
32         #pragma D option quiet
33         #pragma D option statusrate=1hz
34
35         uint64_t total;
36         int thresh;
37
38         BEGIN
39         {
40                 start = timestamp;
41                 thresh = 10;
42         }
43
44         sched:::on-cpu
45         /pid == \$pid/
46         {
47                 self->on = vtimestamp;
48         }
49
50         sched:::off-cpu
51         /self->on/
52         {
53                 total += vtimestamp - self->on;
54         }
55
56         tick-1sec
57         /i++ == 10/
58         {
59                 exit(0);
60         }
61
62         END
63         /((total * 100) / (timestamp - start)) > thresh/
64         {
65                 printf("'%s' buffering policy took %d%% of CPU; ",
66                     \$\$1, ((total * 100) / (timestamp - start)));
67                 printf("expected no more than %d%%!\n", thresh);
68                 exit(1);
69         }
70 EOF
71 }
72
73 if [ $# != 1 ]; then
74         echo expected one argument: '<'dtrace-path'>'
75         exit 2
76 fi
77
78 dtrace=$1
79
80 for policy in "fill ring switch"; do
81         script $policy
82
83         status=$?
84
85         if [ "$status" -ne 0 ]; then
86                 exit $status
87         fi
88 done
89
90 exit 0