README
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 2009 Sun Microsystems, Inc. All rights reserved.
24 # Use is subject to license terms.
25 #
26 # ident "@(#)README 1.2 09/01/29 SMI"
27 #
28
29 DESCRIPTION
30 ===========
31
32 This suite verifies the functionality of the CPU caps resource control
33 technology. CPU caps enable the administrator to restrict the amount of CPU
34 consumption at the zone or project level and are made effective via prctl(1),
35 zonecfg(1M), or via the project(4) file. CPU caps will work for all scheduling
36 classes with the exception of the realtime class. Process running in the RT
37 class are not subject to CPU caps. CPU caps may be used in conjunction with
38 the cpu-shares resource control, but caps will take precedence. Also, zone caps
39 will take precedence over any project cap in the zone.
40
41 Some of the tests examine the behavior of processes under a zone cap. As a
42 result, any CPU activity in the zone (global or non-global) counts against the
43 zone cap. Measures have been made to mitigate this as much as possible, but
44 clearly the test suite and its processes can't run in a vaccuum. The stress
45 tests require some human intelligence when interpreting the ouptut so they must
46 be run manually. In short, failures may occur due to the statistical nature of
47 these tests. The stress tests have been omitted from the "all" category and
48 won't be in run in ONPIT as they have this higher propensity for false failure.
49 Typically, a false failure can be seen in a verbose journal file and is
50 is characterized by temporary drops in CPU usage which leads to either a high
51 standard deviation or an artificially low mean CPU usage for the given process.
52 If this takes place, it's recommended to verify no CPU-intesive processes exist
53 in the zone, via prstat -m, and re-run the test.
54
55 As a final note, the fewer CPUs a system has, the higher the likelihood of
56 failure for those tests in the stress category. This is due to the increased
57 competition for CPU cycles.
58
59
60 SYSTEM REQUIREMENTS
61 ===================
62
63 Due to the statistical nature of the bulk of these tests, a processor set is
64 required. Therefore, this test will only run a system with at least two CPUs.
65
66 This test should be run on a system with at least snv_61 or S10U5 installed.
67 For local zones testing, the system should also be able to support zones.
68 This suite should not be executed in a local zone as the suite creates its own
69 local zone for non-global zone testing. The local zone installed will use
70 /export/test_zone as its root directory and upon test suite completion, should
71 clean up after itself. Any changes to /etc/project should also be removed.
72
73
74 TEST SUITE INSTALLATION
75 =======================
76
77 As root user perform the following to install the tetlite and cpu-caps test
78 suite packages in /opt:
79
80 # pkgadd -d <package location> SUNWstc-dtet
81 # pkgadd -d <package location> SUNWstc-os-cpu-caps
82
83
84 TEST SUITE EXECUTION
85 ====================
86
87 The test suite makes use of the TET test harness. The following steps will
88 execute the test suite and provide a log in /var/tmp/results.<tet PID>. The
89 summary provided at the end of the suite execution will provide the actual
90 logfile location.
91
92 1. Switch to root user and clear the environment variables:
93
94 $ su -
95
96 2. Export the following environment variables:
97
98 $ export TET_ROOT=/opt/SUNWstc-tetlite
99 $ export CTI_ROOT=${TET_ROOT}/contrib/ctitools
100 $ export TET_SUITE_ROOT=/opt/SUNWstc-os-cpu-caps
101 $ export PATH=$TET_ROOT/bin:$CTI_ROOT/bin:$PATH
102
103 3. Change directory to the cpu-caps root directory:
104
105 $ cd $TET_SUITE_ROOT
106
107 4. The following execution options are available:
108
109 $ run_test cpu-caps all [ all functional tests ]
110 $ run_test cpu-caps global_zn [ global zone tests ]
111 $ run_test cpu-caps real_time [ real-time tests ]
112 $ run_test cpu-caps non_global_zn [ non-global zone tests ]
113 $ run_test cpu-caps kstats [ kstat tests ]
114 $ run_test cpu-caps stress [ stress tests ]
115 $ run_test cpu-caps wad [ all tests ]
116
117 run_test may also be executed with "-v verbose=true" for more verbose output.
118 If it's desired to redirect the output of the logfile to standard out, execute
119 run_test with the "-j -" option. For example:
120
121 $ run_test -v verbose=true cpu-caps all
122 $ run_test -j - cpu-caps global_zn
123 $ run_test -v verbose=true cpu-caps kstats
124
125 The lowest level entity that can be executed is the "invocable component" as
126 defined in each test case file ("tc_*"). For example, if it is desired to
127 only run test purposes 1 and 3 (tp_001 and tp_003) in the global tests, use
128 the following command:
129
130 $ run_test cpu-caps global_zn:1,3
131
132
133 TEST SUITE BUILDING
134 ===================
135
136 The test suite build should not be done as root user.
137
138 1. Export the following environment variables:
139 (Note. TET_SUITE_ROOT is set to the source path)
140
141 $ export TET_ROOT=/opt/SUNWstc-tetlite
142 $ export CTI_ROOT=${TET_ROOT}/contrib/ctitools
143 $ export TET_SUITE_ROOT=<local directory>/usr/src/suites/os
144 $ export PATH=$TET_ROOT/bin:$CTI_ROOT/bin:$PATH
145
146 2. Change directory to the cpu-caps root directory:
147
148 $ cd $TET_SUITE_ROOT/cpu-caps
149
150 3. Clear out any old bits and build new package:
151
152 $ /usr/ccs/bin/make clobber
153 $ /usr/ccs/bin/make package
154