1 | KMPDUTL5 ;OIFO/KAK - Obtain CPU Configuration;28 Feb 2002 ;2/17/04 10:56
|
---|
2 | ;;2.0;CAPACITY MANAGEMENT TOOLS;;Mar 22, 2002
|
---|
3 | ;;
|
---|
4 | CPU(ARRAY) ;-- get cpu configuration information
|
---|
5 | ;---------------------------------------------------------------------
|
---|
6 | ; ARRAY = passed back by reference
|
---|
7 | ; returns array with CPU information:
|
---|
8 | ; piece : information
|
---|
9 | ; ARRAY(nodename) = 1 : type of cpu
|
---|
10 | ; 2 : number of processors
|
---|
11 | ; 3 : processor speed
|
---|
12 | ; 4 : amount of memory
|
---|
13 | ;---------------------------------------------------------------------
|
---|
14 | ;
|
---|
15 | N ZV
|
---|
16 | ;
|
---|
17 | S ZV=$$MPLTF^KMPDUTL1
|
---|
18 | ;
|
---|
19 | S U="^"
|
---|
20 | I (ZV["DSM") D DSM(.ARRAY)
|
---|
21 | I (ZV["CVMS") D CVMS(.ARRAY,1)
|
---|
22 | I (ZV["CWINNT") D CWINNT(.ARRAY,1)
|
---|
23 | Q
|
---|
24 | ;
|
---|
25 | DSM(CPUINFO) ;-- for DSM Platform
|
---|
26 | ;---------------------------------------------------------------------
|
---|
27 | ; CPUINFO = array passed back by reference - see CPU(ARRAY) above
|
---|
28 | ;---------------------------------------------------------------------
|
---|
29 | ;
|
---|
30 | N CLSTRMEM,CSID,CSIDARRY,NODE,NODEARRY,X
|
---|
31 | ;
|
---|
32 | S CLSTRMEM=$ZC(%GETSYI,"CLUSTER_MEMBER")
|
---|
33 | ;
|
---|
34 | ; not in cluster environment
|
---|
35 | I 'CLSTRMEM D Q
|
---|
36 | .S NODE=$ZC(%GETSYI,"NODENAME")
|
---|
37 | .S CPUINFO(NODE)=$ZC(%GETSYI,"HW_NAME")_U_$ZC(%GETSYI,"ACTIVECPU_CNT")
|
---|
38 | ;
|
---|
39 | ; in cluster environment
|
---|
40 | D CLSTR
|
---|
41 | S X="ERR^ZU",@^%ZOSF("TRAP")
|
---|
42 | S NODE=""
|
---|
43 | F S NODE=$O(NODEARRY(NODE)) Q:NODE="" D
|
---|
44 | .S CSID=NODEARRY(NODE)
|
---|
45 | .S CPUINFO(NODE)=$ZC(%GETSYI,"HW_NAME",CSID)_U_$ZC(%GETSYI,"ACTIVECPU_CNT",CSID)
|
---|
46 | Q
|
---|
47 | CLSTR ; get %GETSYI using wild card to get CSID and NODENAME for all nodes
|
---|
48 | ;
|
---|
49 | N X
|
---|
50 | S X="ERRCLU^KMPDUTL5",@^%ZOSF("TRAP"),$ZE=""
|
---|
51 | S CSIDARRY($ZC(%GETSYI,"NODE_CSID",-1))=""
|
---|
52 | F S CSIDARRY($ZC(%GETSYI,"NODE_CSID",""))=""
|
---|
53 | ERRCLU I $ZE'["NOMORENODE" ZQ
|
---|
54 | N CSID
|
---|
55 | S CSID=""
|
---|
56 | F S CSID=$O(CSIDARRY(CSID)) Q:CSID="" S NODEARRY($ZC(%GETSYI,"NODENAME",CSID))=CSID
|
---|
57 | Q
|
---|
58 | ;
|
---|
59 | CVMS(CPUINFO,TYP) ;-- for Cache for OpenVMS Platform
|
---|
60 | ;---------------------------------------------------------------------
|
---|
61 | ; input: TYP = type of system information requested
|
---|
62 | ; 1 : cpu system information
|
---|
63 | ; 2 : operating system version information
|
---|
64 | ;
|
---|
65 | ; CPUINFO = array passed back by reference
|
---|
66 | ; : for TYP=1 see CPU(ARRAY) line tag above
|
---|
67 | ; : for TYP=2 CPUINFO(1)=os version
|
---|
68 | ;---------------------------------------------------------------------
|
---|
69 | ;
|
---|
70 | N DIR,FILE,LOG,TYPNM
|
---|
71 | ;
|
---|
72 | S TYPNM=$S(TYP=1:"CPU",TYP=2:"VER",1:"")
|
---|
73 | ;
|
---|
74 | S DIR=$ZU(12)
|
---|
75 | ;
|
---|
76 | ; cleanup log file
|
---|
77 | S LOG=DIR_"KMPDU"_TYPNM_".LOG"
|
---|
78 | O LOG:("R"):0 C LOG:("D")
|
---|
79 | ;
|
---|
80 | ; cleanup com file
|
---|
81 | S FILE=DIR_"KMPDU"_TYPNM_".COM"
|
---|
82 | O FILE:("R"):0 C FILE:("D")
|
---|
83 | ;
|
---|
84 | ; create com file quit on file creation error
|
---|
85 | Q:$$CREATE(FILE,TYP)<0
|
---|
86 | ;
|
---|
87 | ; run com file and create log file
|
---|
88 | I $ZF(-1,"",LOG,FILE)
|
---|
89 | C LOG
|
---|
90 | ;
|
---|
91 | ; parse log file
|
---|
92 | D PARSE(LOG,.CPUINFO,TYP)
|
---|
93 | ;
|
---|
94 | ; cleanup com file
|
---|
95 | O FILE:("R"):0 C FILE:("D")
|
---|
96 | ; cleanup log file
|
---|
97 | O LOG:("R"):0 C LOG:("D")
|
---|
98 | ;
|
---|
99 | Q
|
---|
100 | ;
|
---|
101 | CWINNT(CPUINFO,TYP) ;-- for Cache for Windows NT Platform
|
---|
102 | ;---------------------------------------------------------------------
|
---|
103 | ; input: TYP = type of system information requested
|
---|
104 | ; 1 : cpu system information
|
---|
105 | ; 2 : operating system version information
|
---|
106 | ;
|
---|
107 | ; CPUINFO = array passed back by reference
|
---|
108 | ; : for TYP = 1 see CPU(ARRAY) line tag above
|
---|
109 | ; : for TYP = 2 CPUINFO(1)=os version
|
---|
110 | ;---------------------------------------------------------------------
|
---|
111 | ;
|
---|
112 | N DATA,FILE,NODE,OUT,X
|
---|
113 | ;
|
---|
114 | S DATA="",OUT=0
|
---|
115 | ;
|
---|
116 | ; $zu(110) = computername
|
---|
117 | S (FILE,NODE)=$ZU(110)
|
---|
118 | S CPUINFO(NODE)=""
|
---|
119 | ;
|
---|
120 | ; cleanup all report files
|
---|
121 | I $ZF(-1,"DEL "_FILE_"*.TXT")
|
---|
122 | ;
|
---|
123 | S FILE=FILE_".TXT"
|
---|
124 | ;
|
---|
125 | ; send system reort to file
|
---|
126 | ; switches: /s => summary report
|
---|
127 | ; /a => all report
|
---|
128 | ; /f => send to file named 'computername.TXT'
|
---|
129 | I $ZF(-1,"WINMSD /s /f")
|
---|
130 | ;
|
---|
131 | S X="EOF1",@^%ZOSF("TRAP")
|
---|
132 | ; append *eof* line to report file
|
---|
133 | O FILE:("WA"):0 I $T U FILE W !,"*EOF*" C FILE
|
---|
134 | ;
|
---|
135 | ; read from report file
|
---|
136 | O FILE:("R"):0
|
---|
137 | ;
|
---|
138 | I '$T C FILE:"D" Q
|
---|
139 | ;
|
---|
140 | U FILE
|
---|
141 | ;
|
---|
142 | ; TYP=1 => cpu information
|
---|
143 | I TYP=1 D
|
---|
144 | .F R X Q:X["*EOF*" D Q:OUT
|
---|
145 | ..; type of cpu
|
---|
146 | ..I X["Hardware Abstraction Layer:" S $P(DATA,U)=$$STRIP^KMPDUTL4($P(X,"Hardware Abstraction Layer:",2)) Q
|
---|
147 | ..; number of processors
|
---|
148 | ..I X["NUMBER_OF_PROCESSORS=" S $P(DATA,U,2)=$P(X,"NUMBER_OF_PROCESSORS=",2) Q
|
---|
149 | ..; processor speed - no information available
|
---|
150 | ..; amount of memory
|
---|
151 | ..I X["Physical Memory (K)" D Q
|
---|
152 | ...R X
|
---|
153 | ...I X["*EOF*" S OUT=1 Q
|
---|
154 | ...I X["Total:" S $P(DATA,U,4)=$$STRIP^KMPDUTL4($$COMMA^KMPDUTL4($P(X,"Total:",2)))\1024 Q
|
---|
155 | ..S CPUINFO(NODE)=DATA
|
---|
156 | ;
|
---|
157 | ; TYP=2 => os version
|
---|
158 | I TYP=2 D
|
---|
159 | .F R X Q:X["*EOF*" D Q:OUT
|
---|
160 | ..; version of operating system
|
---|
161 | ..I X["OS Version Report" D
|
---|
162 | ...F I=1:1:2 R X I X["*EOF*" S OUT=1 Q
|
---|
163 | ...S DATA=X
|
---|
164 | ...R X I X["*EOF*" S OUT=1 Q
|
---|
165 | ...S DATA=DATA_" "_X
|
---|
166 | ...S CPUINFO(1)=DATA
|
---|
167 | ;
|
---|
168 | C FILE:"D"
|
---|
169 | ;
|
---|
170 | Q
|
---|
171 | ;
|
---|
172 | CREATE(FILE,TYP) ;-- function to create new com file
|
---|
173 | ;---------------------------------------------------------------------
|
---|
174 | ; input: FILE = name of file to create
|
---|
175 | ; TYP = type of system information requested
|
---|
176 | ; 1 : cpu system information
|
---|
177 | ; 2 : operating system version information
|
---|
178 | ;
|
---|
179 | ; returns: 1 successful file creation
|
---|
180 | ; -1 failure of file creation
|
---|
181 | ;---------------------------------------------------------------------
|
---|
182 | ;
|
---|
183 | N DIR,TYPNM
|
---|
184 | ;
|
---|
185 | S TYPNM=$S(TYP=1:"CPU",TYP=2:"VER",1:"")
|
---|
186 | ;
|
---|
187 | O FILE:("NWC"):0 Q:'$T -1
|
---|
188 | ;
|
---|
189 | U FILE
|
---|
190 | W "$! KMPDU"_TYPNM_".COM - Obtain System Configuration Information"
|
---|
191 | W "$!--------------------------------------------------------"
|
---|
192 | W "$! OIFO - CAPACITY PLANNING/KAK"
|
---|
193 | W "$! "_$P($T(+2)_";;",2,999)
|
---|
194 | W "$!--------------------------------------------------------"
|
---|
195 | W "$!"
|
---|
196 | ;
|
---|
197 | I TYP=2 D G TAGXIT
|
---|
198 | .W "$ write sys$output ""VERSION="" , f$getsyi(""VERSION"")"
|
---|
199 | ;
|
---|
200 | W "$ if f$getsyi(""CLUSTER_MEMBER"") .eqs. ""FALSE"" then goto NOT_CLUSTER"
|
---|
201 | W "$ CONTEXT = """""
|
---|
202 | W "$START:"
|
---|
203 | W "$ ID = f$csid(CONTEXT)"
|
---|
204 | W "$ if ID .eqs. """" then goto EXIT"
|
---|
205 | W "$ write sys$output ""NODE="" , f$getsyi(""NODENAME"",,ID)"
|
---|
206 | W "$ write sys$output ""TYPE="" , f$getsyi(""HW_NAME"",,ID)"
|
---|
207 | W "$ write sys$output ""CPU_CNT="" , f$getsyi(""ACTIVECPU_CNT"",,ID)"
|
---|
208 | W "$ write sys$output ""SPEED=n/a"""
|
---|
209 | W "$ write sys$output ""MEMSIZE="" , f$getsyi(""MEMSIZE"",,ID)"
|
---|
210 | W "$ goto START"
|
---|
211 | W "$NOT_CLUSTER:"
|
---|
212 | W "$ write sys$output ""NODE="" , f$getsyi(""NODENAME"")"
|
---|
213 | W "$ write sys$output ""TYPE="" , f$getsyi(""HW_NAME"")"
|
---|
214 | W "$ write sys$output ""CPU_CNT="" , f$getsyi(""ACTIVECPU_CNT"")"
|
---|
215 | W "$ write sys$output ""SPEED=n/a"""
|
---|
216 | W "$ write sys$output ""MEMSIZE="" , f$getsyi(""MEMSIZE"")"
|
---|
217 | TAGXIT ;
|
---|
218 | W "$EXIT:"
|
---|
219 | W "$ write sys$output ""*EOF*"""
|
---|
220 | W "$ exit"
|
---|
221 | W "$!"
|
---|
222 | ;
|
---|
223 | C FILE
|
---|
224 | Q 1
|
---|
225 | ;
|
---|
226 | PARSE(LOG,CPUARRY,TYP) ;-- parse log file data
|
---|
227 | ;---------------------------------------------------------------------
|
---|
228 | ; input: LOG = name of log file to parse
|
---|
229 | ; TYP = type of system information requested
|
---|
230 | ; 1 : cpu system information
|
---|
231 | ; 2 : operating system version information
|
---|
232 | ;
|
---|
233 | ; CPUARRY = passed back by reference
|
---|
234 | ; : for TYP=1 see CPU(ARRAY) line tag above
|
---|
235 | ; : for TYP=2 CPUINFO(1)=os version
|
---|
236 | ;---------------------------------------------------------------------
|
---|
237 | ;
|
---|
238 | N NODE,X
|
---|
239 | ;
|
---|
240 | S X="EOF",@^%ZOSF("TRAP"),NODE=""
|
---|
241 | K X S U="^"
|
---|
242 | ;
|
---|
243 | O LOG:("R")
|
---|
244 | U LOG
|
---|
245 | ;
|
---|
246 | I TYP=1 D
|
---|
247 | .F R X Q:X["*EOF*" I $E(X)'="$" I X["NODE=" D
|
---|
248 | ..I X["NODE=" S NODE=$P(X,"=",2)
|
---|
249 | ..F R X I $E(X)'="$" D Q:X["MEMSIZE="
|
---|
250 | ...; type of cpu
|
---|
251 | ...I X["TYPE=" S $P(CPUARRY(NODE),U)=$P(X,"=",2) Q
|
---|
252 | ...; number of processors
|
---|
253 | ...I X["CPU_CNT=" S $P(CPUARRY(NODE),U,2)=$P(X,"=",2) Q
|
---|
254 | ...; processor speed - no information available
|
---|
255 | ...I X["SPEED=" Q
|
---|
256 | ...; amount of memory in MB
|
---|
257 | ...I X["MEMSIZE=" S $P(CPUARRY(NODE),U,4)=$P(X,"=",2)/128 Q
|
---|
258 | ;
|
---|
259 | I TYP=2 D
|
---|
260 | .F R X Q:X["*EOF*" I $E(X)'="$" D
|
---|
261 | ..; version of operating system
|
---|
262 | ..I X["VERSION=" S CPUARRY(1)=$P(X,"=",2) Q
|
---|
263 | ;
|
---|
264 | C LOG
|
---|
265 | ;
|
---|
266 | S X="ERR^ZU",@^%ZOSF("TRAP")
|
---|
267 | Q
|
---|
268 | ;
|
---|
269 | EOF ;-- end of file condition for CVMS
|
---|
270 | S X="ERR^ZU",@^%ZOSF("TRAP")
|
---|
271 | C LOG
|
---|
272 | Q
|
---|
273 | ;
|
---|
274 | EOF1 ;-- end of file condition for CWINNT
|
---|
275 | S X="ERR^ZU",@^%ZOSF("TRAP")
|
---|
276 | C FILE:"D"
|
---|
277 | Q
|
---|
278 | ;
|
---|
279 | CVMSVER() ;-- returns version of Cache for OpenVMS operating system
|
---|
280 | ;
|
---|
281 | N VER
|
---|
282 | ;
|
---|
283 | D CVMS(.VER,2)
|
---|
284 | Q $S($D(VER(1)):VER(1),1:"")
|
---|
285 | ;
|
---|
286 | CWNTVER() ;-- returns version of Cache for Windows NT operating system
|
---|
287 | ;
|
---|
288 | N VER
|
---|
289 | ;
|
---|
290 | D CWINNT(.VER,2)
|
---|
291 | Q $S($D(VER(1)):VER(1),1:"")
|
---|