当前位置: 首页 > news >正文

郴州市住房建设局门户网站域名免费注册

郴州市住房建设局门户网站,域名免费注册,一家专门做开网店的网站,网站建设平台简介问题背景: 为了分析udp数据通信中端到端的延迟,我们需要对整个通信链路的每个阶段进行监控,找出延迟最长的阶段. udp接收端有2个主要路径 1.数据包到达本机后,由软中断处理程序将数据包接收并放入udp socket的接收缓冲区 数据接收流程 2. 应用程序调用recvmsg等a…

问题背景:
为了分析udp数据通信中端到端的延迟,我们需要对整个通信链路的每个阶段进行监控,找出延迟最长的阶段.

udp接收端有2个主要路径
1.数据包到达本机后,由软中断处理程序将数据包接收并放入udp socket的接收缓冲区
在这里插入图片描述

数据接收流程
2. 应用程序调用recvmsg等api将数据从socket缓冲区读出
在这里插入图片描述

应用程序读取数据流程
2和1之间可能由于调度等造成延迟,我们写一个bcc程序对指定接收端口和延迟大于某个值的情况进行监控

bcc程序原理
我们在流程1放入udp缓冲区时(udp_unicast_rcv_skb),记录此skb的时间

然后在流程2读取udp缓冲区时(__skb_recv_udp)时取出1中记录的skb时间,并与当前时间做差值得到延迟.

#!/usr/bin/python3
# @lint-avoid-python-3-compatibility-imports
#
# udplatency    Trace long udp recvmsg delays.
#               For Linux, uses BCC, eBPF.
#
# This script traces high delays between skb being
# ready to in recv queue and them recvmsg on CPU after that.
#
# USAGE: udplatency [-d dport] [-l lat]import argparse
import ctypes as ct
from time import strftime
from bcc import BPFbpf_text = '''
# include <linux/ip.h>
# include <linux/netfilter.h>
# include <net/ip.h>
# include <uapi/linux/bpf.h>struct data_t {u64 ts;u64 lat;
};BPF_PERF_OUTPUT(events);
BPF_HASH(recv_lat, struct sk_buff*);int kprobe__udp_unicast_rcv_skb(struct pt_regs *ctx, struct sock *sk, struct sk_buff* skb)
{struct udphdr *udp_hdr = (struct udphdr *)(skb->head + skb->transport_header);u16 dst_port = bpf_ntohs(udp_hdr->dest);if (dst_port == DST_PORT) {u64 ts = bpf_ktime_get_ns();recv_lat.update(&skb, &ts);}return 0;
};int kretprobe____skb_recv_udp(struct pt_regs *ctx)
{struct sk_buff* skb = (struct sk_buff*)PT_REGS_RC(ctx);struct udphdr *udp_hdr = (struct udphdr *)(skb->head + skb->transport_header);u16 dst_port = bpf_ntohs(udp_hdr->dest);if (dst_port == DST_PORT) {struct data_t data = {};u64 *tsp = recv_lat.lookup(&skb);if (tsp != 0) {Home = bpf_ktime_get_ns() - *tsp;}recv_lat.delete(&skb);if (data.lat >= LAT_NS) {bpf_probe_read_kernel(&(data.ts), sizeof(*tsp), tsp);events.perf_submit(ctx, &data, sizeof(data));}}return 0;
}
'''class EventData(ct.Structure):_fields_ = [("ts", ct.c_ulonglong),("lat", ct.c_ulonglong)]def print_event(cpu, data, size):event = ct.cast(data, ct.POINTER(EventData)).contentsprint("%-8s ts:%d lat: %dms\n" % (strftime("%H:%M:%S"), event.ts, event.lat / 3000000))parser = argparse.ArgumentParser(description="Track udp recv latency")
parser.add_argument("-d", "--dport", type=int, required=True,help="udp dst port")
parser.add_argument("-l", "--lat", type=int,help="report latency > ns, default is 3000000")
args = parser.parse_args()lat_ns = 3000000if args.lat:lat_ns = args.latbpf_text = bpf_text.replace('DST_PORT', str(args.dport))
bpf_text = bpf_text.replace('LAT_NS', str(lat_ns))# initialize BPF
b = BPF(text=bpf_text)b["events"].open_perf_buffer(print_event)
while True:try:b.perf_buffer_poll()except KeyboardInterrupt:exit()
http://www.dinnco.com/news/57417.html

相关文章:

  • 有域名之后怎么做网站怎么开个人网站
  • 做网站做小程序推广优惠活动推广文案
  • 做商城网站的流程介绍营销网站的建造步骤
  • ui网页设计师职责能力唐山百度搜索排名优化
  • 如何做网站计数器比较经典的营销案例
  • 网站建设进度表 下载宁波抖音seo搜索优化软件
  • 制作网站设计的公司黄页引流推广网站入口
  • 申请免费个人网站空间谷歌推广
  • 建立公司网站需要什么微信推广怎么弄
  • c 网站开发的书籍企业查询网站
  • 网站基础建设强化属地管理责任免费观看短视频的app软件推荐
  • b站推广网站2023年app推广30元一单
  • 网站推广见效快的方法seo教育
  • 个人业务网站免费制作竞价网
  • 上海 网站工作室交换友链
  • 自己有主机怎么做论坛网站磁力珠
  • 手机微信网页版登录网站seo优化多少钱
  • 眼科医院网站设计怎么做6seo建设招商
  • 莱芜吧莱芜贴吧seo修改器
  • seo发外链网站搜多多搜索引擎入口
  • 网站怎样投放广告位百度明星人气排行榜
  • 做网站 租服务器吗黑帽seo培训
  • 建设项目经济评价网站教育培训机构官网
  • 做网站的软件叫什么百度网盘app手机版
  • 企业网站建设总结抖音怎么推广
  • 网站开发与推广最近新闻
  • 韩国化妆品网站模板seo基础知识培训
  • 怎样把网站做的高大上深圳全网信息流推广公司
  • 淮安做网站.哪家网络公司好网络营销的种类
  • 如何将域名和网站绑定域名海外广告投放公司