nfdump的性能分析

前言

本文主要对nfdump的性能分析做一个记录,看看这个工具是否存在性能瓶颈,如果存在,能否对性能瓶颈作出一定优化。
如有错误欢迎指出,谢谢!

netflow简介

netflow是思科在1996年开发的用于监测ip网络流状态的技术,由以下三个部分组成:

  • netflow exporter: 网络中支持netflow的路由器/交换机,负责将出入其接口的数据包统计为流,并将ip流汇聚为netflow数据,上报给一个或多个collector(上报使用的是UDP协议);
  • netflow collector: 负责接收和储存netflow数据,并进行预处理;
  • netflow analyzer: 对接收到的流量数据进行分析;

nfdump

nfdump是一个开源的netflow收集和处理工具,充当了netflow collector的角色,是netflow分析和图形化的Web前端NfSen的后端工具。

方法论

一点感悟

性能分析目标

一般来讲,性能分析的目标是改进用户体验以及降低运行成本,我这次性能分析自然也是为了找到nfdump的性能瓶颈在哪然后加以解决。

为了评估我们是否达到了这个目标,最好先确定一个量化指标,以表明我们是否已经达到性能优化指标,或者距离目标还有多远。常用的量化指标如延迟、速率、吞吐量、利用率、开销成本等……

由于对netflow还不是特别熟悉,经过一段折腾和猜测(可能在网络处理上有一些瓶颈?),我先暂定量化指标为吞吐量和CPU开销,具体评估如下:

主机1通过nfgen工具发送固定大小的netflow v9数据给主机2,经过测试发送可达网卡线速度(我使用的是X550 10G的网卡),主机2上开一个nfcapd用于接收netflow数据,主机2在满负载下的接收速率以及CPU占用率就作为我的量化指标。

实验评估

CPU负载分析

先确认CPU对它有无影响

在花时间使用分析工具之前,首先确定系统负载确实受限于CPU,例如使用mpstat工具:

我们在主机1线速度发送netflow数据的情况下,使用如下命令
mpstat -P ALL 1
运行结果如下图,可以看到CPU7被用户态时间占满,CPU6有一半的时间被软中断占满;其余基本是空闲状态。如果nfcapd不能自行扩展CPU核,那确实是受CPU影响。(但是可以看到sys时间很少,我还以为系统调用时间会用掉很多CPU呢)
mpstat测试结果这时候我想再开一个进程,继续测试:
在这里插入图片描述第二个进程监听的是另一个网卡(主机自带的);

然后采样nfcapd的CPU调用栈信息

这里我使用perf采样,并使用Flamegraph以使数据可视化,下面给出大致过程:

  1. 把火焰图源码clone下来,后面都要用到里面的脚本;
  2. 使用perf采样:
    sudo perf record -F 99 --call-graph dwarf -p 2112 -- sleep 10
    参考这个文章我使用了dwarf的栈回溯方式,2112是我运行着的nfcapd的PID;
  3. 利用火焰图的脚本进行数据处理、折叠、画图:
sudo perf script > out.perf
./stackcollapse-perf.pl out.perf > out.folded
./flamegraph.pl out.folded > out.svg

最后得到的out.svg就是我们要的火焰图了,横轴代表采样点,纵轴代表调用回溯,使用浏览器打开可以点击窄块看详细信息;
在这里插入图片描述从里面可以看到,系统调用什么的确实很少,肉眼可见的大部分都被用来处理netflow数据了(Process_v9),这个处理都干了些啥?解析netflow数据这么困难吗?

现存问题

  • exporter上报的netflow数据的大小?上报机制?是一直在将信息上报吗?
  • 一个collector是否和多个exporter连接?
  • 如何测试nfcapd的接收速率?
  • netflow数据以UDP报文上报,是什么格式?有加密吗?
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WuPeng_uin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值