1bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang#!/usr/bin/awk -f 2bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang 3bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# Copyright (c) 2013 The Chromium OS Authors. All rights reserved. 4bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# Use of this source code is governed by a BSD-style license that can be 5bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# found in the LICENSE file. 6bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang 7bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# This script computes the intervals between the time instants of 8bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# contiguous SYN_REPORT packets, and count the number of packets 9bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# with time intervals greater than 1/60 seconds. 10bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# Note: this script is larged borrowed from adlr@'s timing test in shell. 11bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang 12bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# Usage: DISPLAY=:0 mtplot tools/awk_process_syn 13bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# Note: You need to press 'q' instead of ctrl-c to exit mtplot 14bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang# in order to print the count of large intervals. 15bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang 16bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang 17bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph HwangBEGIN { 18bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang previous = 0; 19bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang count_packets = 0; 20bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang count_large = 0; 21bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang} 22bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang 23bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang/SYN_REPORT/ { 24bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang if (previous == 0) { 25bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang previous = $3; 26bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang } else { 27bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang current = $3; 28bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang interval = current - previous; 29bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang previous = current; 30bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang count_packets++; 31bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang if (interval > 1.0 / 60) { 32bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang mark = "*****"; 33bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang count_large++; 34bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang } else { 35bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang mark = " "; 36bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang } 37bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang template = " %s interval: %.6f (%s)\n"; 38bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang printf(template, mark, interval, $0); 39bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang } 40bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang} 41bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang 42bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph HwangEND { 43bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang msg = "\nthe count of large intervals: %d out of %d packets\n\n" 44bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang printf(msg, count_large, count_packets); 45bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang} 46bd87c1f9d792ed619d3dc6287ad3e7a0d6702a9dJoseph Hwang 47