惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Hackread – Cybersecurity News, Data Breaches, AI and More
宝玉的分享
宝玉的分享
月光博客
月光博客
爱范儿
爱范儿
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Announcements
Recent Announcements
A
About on SuperTechFans
T
The Blog of Author Tim Ferriss
博客园 - 叶小钗
U
Unit 42
aimingoo的专栏
aimingoo的专栏
Y
Y Combinator Blog
Martin Fowler
Martin Fowler
N
Netflix TechBlog - Medium
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
大猫的无限游戏
大猫的无限游戏
J
Java Code Geeks
V
Visual Studio Blog
腾讯CDC
IT之家
IT之家

博客园 - 衡子

Ubuntu24.04更改SSH端口 记录安装过程 Azure CLI创建管理员用户 创建VMSS中的instance 创建不带公网IP的VM Azure LSv3系列VM 自动挂载NVMe本地磁盘 Azure AD访问Azure Storage Azure Linux VM使用Managed Identity获取Key-vault的Secret Azure AD SSO with Google Cloud Identity 通过VM SWAP OS DISK升级VM 通过API获取Azure KeyVault Securet Azure Front Door添加自定义域名 VM间网络PPS和带宽测试 Azure获取access token的方法 Windows Terminal的一些配置 安装hping Azure解除不再使用Directory的关联 使用VSCode Remote Containers功能实现开发环境统一 Azure AKS容器网络详解
VM间记录时延
衡子 · 2021-12-18 · via 博客园 - 衡子

记录时延采用Ping和SockPerf,分别采用下面的Bash命令记录到相关的文件中:

ping 10.2.1.5 -i 15 | while read pong; do echo "$(date): $pong" >> ping.txt; done &

while true; \
  do sockperf ping-pong \
  -i 10.2.1.5 -p 80 --tcp \
  --full-rtt -m 64 | awk '{print $0 " --- " strftime()}' >> sock.txt; \
  sleep 60; \
done &

对于获取到的文件,可以采用下面的脚本统计相关的数据:

Python脚本:

#!/usr/bin/env python
import sys

b=[0]*12
m=[0]*12
s=[0]*12

f = open(str(sys.argv[1]), 'r')
n = 0

for i in f:
    if 'ms' in i:
        a = float(i.split("time=")[1].split()[0])
        if a>=10:
            t=a/10
            if t>10:
                b[10]=b[10]+1
            else:
                b[int(a/10)]=b[int(a/10)]+1
        elif a>=1:
            m[int(a)]=m[int(a)]+1
        else:
            s[int(a*10)]=s[int(a*10)]+1
f.close()

for i in range(1,10):
    print i*0.1,'ms -', (i+1)*0.1, 'ms  --- ', s[i]

for i in range(1,10):
    print i,'ms -', i+1, 'ms  --- ', m[i]

for i in range(1,10):
    print i*10,'ms -', (i+1)*10, 'ms  --- ', b[i]
print '>100ms --- ', b[10]

Bash脚本:

#!/bin/bash

a=$(cat $1 | wc -l)
echo Total $a
a=$(cat $1 | awk -F 'ms' '{print $1}' | awk -F '=' '$4 >= 5' | wc -l)
echo bigger_5ms $a
a=$(cat $1 | awk -F 'ms' '{print $1}' | awk -F '=' '$4 < 5 ' | awk -F '=' '$4 >= 4' | wc -l)
echo between_4ms-5ms $a
a=$(cat $1 | awk -F 'ms' '{print $1}' | awk -F '=' '$4 < 4 ' | awk -F '=' '$4 >= 3' | wc -l)
echo between_3ms-4ms $a
a=$(cat $1 | awk -F 'ms' '{print $1}' | awk -F '=' '$4 < 3 ' | awk -F '=' '$4 >= 2' | wc -l)
echo between_2ms-3ms $a
a=$(cat $1 | awk -F 'ms' '{print $1}' | awk -F '=' '$4 < 2 ' | awk -F '=' '$4 >= 1' | wc -l)
echo between_1ms-2ms $a
a=$(cat $1 | awk -F 'ms' '{print $1}' | awk -F '=' '$4 <1 ' | awk -F '=' '$4 >= 0.9'| wc -l)
echo between_0.9ms-1ms $a
a=$(cat $1 | awk -F 'ms' '{print $1}' | awk -F '=' '$4 <0.9 ' | awk -F '=' '$4 >= 0.8' | wc -l)
echo between_0.8ms-0.9ms $a
a=$(cat $1 | awk -F 'ms' '{print $1}' | awk -F '=' '$4 <0.8 ' | awk -F '=' '$4 >= 0.7' | wc -l)
echo between_0.7ms-0.8ms $a
a=$(cat $1 | awk -F 'ms' '{print $1}' | awk -F '=' '$4 <0.7 ' | awk -F '=' '$4 >= 0.6' | wc -l)
echo between_0.6ms-0.7ms $a
a=$(cat $1 | awk -F 'ms' '{print $1}' | awk -F '=' '$4 <0.6 ' | wc -l)
echo smaller_0.6ms $a

echo ============================================

a=$(cat $2 | grep Summary | wc -l)
echo Summary_total $a
a=$(cat $2 | grep Summary | awk '$6 <= 40' | wc -l)
echo Summary_smaller_40us $a
a=$(cat $2 | grep Summary | awk '$6 <= 43' | awk '$6 > 40' | wc -l)
echo Summary_between_40us-43us $a
a=$(cat $2 | grep Summary | awk '$6 <= 46' | awk '$6 > 43' | wc -l)
echo Summary_between_43us-46us $a
a=$(cat $2 | grep Summary | awk '$6 <= 49' | awk '$6 > 46' | wc -l)
echo Summary_between_46us-49us $a
a=$(cat $2 | grep Summary | awk '$6 > 49' | wc -l)
echo Summary_bigger_49us $a

echo ===========================================

a=$(cat $2 | grep MAX | awk -F ' = ' '{print $2}' | awk -F ' --- ' '{print $1}' | wc -l)
echo MAX_total $a
a=$(cat $2 | grep MAX | awk -F ' = ' '{print $2}' | awk -F ' --- ' '{print $1}' | awk '$1 <= 50' | wc -l)
echo MAX_smaller_50us $a
a=$(cat $2 | grep MAX | awk -F ' = ' '{print $2}' | awk -F ' --- ' '{print $1}' | awk '$1 <= 75'  | awk '$1 > 50' |wc -l)
echo MAX_between_50us-75us $a
a=$(cat $2 | grep MAX | awk -F ' = ' '{print $2}' | awk -F ' --- ' '{print $1}' | awk '$1 <= 100'  | awk '$1 > 75' |wc -l)
echo MAX_between_75us-100us $a
a=$(cat $2 | grep MAX | awk -F ' = ' '{print $2}' | awk -F ' --- ' '{print $1}' | awk '$1 <= 200'  | awk '$1 > 100' |wc -l)
echo MAX_between_100us-200us $a
a=$(cat $2 | grep MAX | awk -F ' = ' '{print $2}' | awk -F ' --- ' '{print $1}' | awk '$1 <= 400'  | awk '$1 > 200' |wc -l)
echo MAX_between_200us-400us $a
a=$(cat $2 | grep MAX | awk -F ' = ' '{print $2}' | awk -F ' --- ' '{print $1}' | awk '$1 <= 1000'  | awk '$1 > 400' |wc -l)
echo MAX_between_400us-1000us $a
a=$(cat $2 | grep MAX | awk -F ' = ' '{print $2}' | awk -F ' --- ' '{print $1}' | awk '$1 <= 2000'  | awk '$1 > 1000' |wc -l)
echo MAX_between_1000us-2000us $a
a=$(cat $2 | grep MAX | awk -F ' = ' '{print $2}' | awk -F ' --- ' '{print $1}' | awk '$1 > 2000' |wc -l)
echo MAX_bigger_2000us $a

通过命令result.sh ping.txt sock.txt实现数据的统计。