WinDivert学习文档之八-————Performance

8. Performance
        使用WinDivert将网络流量重定向到/从用户应用程序返回会导致性能开销,例如复制数据包数据和用户/内核模式上下文切换。在高负载(1Gbps)下,这些开销可能非常大。以下技术可用于减少开销(按重要性排序):

        选择性筛选:仅选择用户应用程序感兴趣的网络流量子集。不匹配的流量将继续使用默认路径,而不会产生额外的开销。
        批处理模式:WinDivertRecvEx()和WinDivertSendEx()函数支持批处理,允许一次接收/发送多个数据包。这可以显著减少与用户/内核模式上下文切换相关的开销。
多线程:可以将包处理分散到多个线程上,确保用户应用程序不会成为瓶颈。也就是说,有时生成过多的线程会降低性能。
        小缓冲区:与小缓冲区相比,大缓冲区通常会产生更多的开销。一般来说,缓冲区大小应该尽可能准确地反映预期的使用情况。
        简单过滤器:目前WinDivert不优化过滤器编译,所以它是由用户应用程序来确保过滤器是简单的/优化的。
        重叠I/O:这允许用户应用程序在进行接收/发送操作的同时执行其他任务,这可能会提高某些应用程序的性能。单个线程也可以同时启动多个接收/发送操作。然而,使用重叠的I/O可能会很棘手,重要的是,传递给WinDivertRecvEx()或WinDivertSendEx()的所有缓冲区(包括overlapped结构)在操作完成之前不会被用户应用程序修改。
        队列长度/大小/时间:如果这些值太小,则可能会在高负载下丢弃一些数据包。这些值可以使用WinDivertSetParam()函数来控制。
        exe示例程序可用于试验不同的批处理大小和线程数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

jyl_sh

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

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

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

打赏作者

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

抵扣说明:

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

余额充值