Mercurial > illumos > onarm
view usr/src/cmd/cmd-inet/usr.lib/in.dhcpd/tests/test_tnf.nawk @ 0:c9caec207d52 b86
Initial porting based on b86
author | Koji Uno <koji.uno@sun.com> |
---|---|
date | Tue, 02 Jun 2009 18:56:50 +0900 |
parents | |
children | 1a15d5aaf794 |
line wrap: on
line source
{ # # Copyright 2005 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # # CDDL HEADER START # # The contents of this file are subject to the terms of the # Common Development and Distribution License, Version 1.0 only # (the "License"). You may not use this file except in compliance # with the License. # # You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE # or http://www.opensolaris.org/os/licensing. # See the License for the specific language governing permissions # and limitations under the License. # # When distributing Covered Code, include this CDDL HEADER in each # file and include the License file at usr/src/OPENSOLARIS.LICENSE. # If applicable, add the following below this CDDL HEADER, with the # fields enclosed by brackets "[]" replaced with your own identifying # information: Portions Copyright [yyyy] [name of copyright owner] # # CDDL HEADER END # #ident "@(#)test_tnf.nawk 1.2 05/06/08 SMI" if (first_time == 0 && ($1 == "probe" || match($1, "---"))) next; else first_time = 1; time = $1; thread = $5; type = $7; val = pval = ""; for (i = 8; i <= NF; i++) { if (pval == "cip:") val = val " " sprintf("%x", $i); else val = val " " $i; pval=$i } if (match(type, "_end")) { type = substr(type, 1, match(type, "_end") - 1); if (int(start[thread "" type]) == 0) { printf("Warning: missing match line %d: %s\n", NR, $0); next; } total[type]++; alltotal++; elapsed = time - start[thread "" type]; vchar = ""; if (longest[type] < elapsed) { longest[type] = elapsed; vchar = "*"; } if (verbose) { printf("\t\top: %s thread: %d elapsed %f%s%s\n", type, thread, elapsed, val, vchar); } average[type] = (average[type] + elapsed)/total[type]; averagedepth[type] = (averagedepth[type] + depth[type])/total[type]; allaverage= (allaverage + alldepth)/alltotal; depth[type]--; alldepth--; start[thread "" type] = 0; } else { if (match(type, "_start")) { type = substr(type, 1, match(type, "_start") - 1); } start[thread "" type] = time; depth[type]++; if (maxdepth[type] < depth[type]) maxdepth[type] = depth[type]; alldepth++; if (allmaxdepth < alldepth) allmaxdepth = alldepth; } } END { printf("\n"); for (types in total) { printf("op: %d %s: avg: %8.8f worst: %8.8f\n", total[types], types, average[types], longest[types]); printf(" avg concurrency: %8.8f greatest concurrency %8.8f\n\n", averagedepth[types], maxdepth[types]); } printf("Totals: avg concurrency: %8.8f greatest concurrency %8.8f\n", allaverage, allmaxdepth); }