This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] PROCESSOR-SDK-AM62X:CPSW:广播速率限制:突发行为

Guru**** 2484615 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1549471/processor-sdk-am62x-cpsw-broadcast-rate-limit-burst-behavior

器件型号:PROCESSOR-SDK-AM62X


工具/软件:

您好、

我们在自动化产品中将 AM62x 与处于开关模式的 Linux 搭配使用(通过 devlink 开发参数...)。 使用 tc 工具、可以为硼铸通信和/或多种广播通信设置速率限制。

根据我们的观察、cpsw HW 执行非常简单(严格)的速率限制。 是否可能允许某种突发行为? 典型的拓扑是一条线、采用严格的速率限制机制、可能会产生很大的破坏性、尤其是在启动阶段。 (自动化协议有时会做一些奇怪的事情。)

例如、当设置为 1000pps 时、cpsw-hw 将只允许每 1ms 发送一个广播数据包。

谢谢、

1 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jan、  

    使用 tc 工具、可以为背景广播流量和/或多点广播流量设置速率限制。

    我们已经看到其他客户使用  https://lore.kernel.org/all/20220412102929.30719-1-grygorii.strashko@ti.com/中提供的示例 对广播或多播流量执行速率限制。 虽然我个人没有测试这些示例、但它们可能是您的起点。

    根据我们的观察、cpsw HW 执行了非常简单(严格)的速率限制。 是否可以允许某种突发行为?

    下面显示了使用不同 tc 配置的另一种方法、其中速率可限制为 10Mbits/sec、并允许突发 20k。 您还可以将其作为使用特定用例进行实验的起点。  

    tc qdisc add dev eth0 ingress
    tc filter add dev eth0 parent ffff: u32 match u32 0 0 police rate 10mbit burst 20k

    如果您有其他后续问题、敬请告知。

    -道林

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [quote userid=“576780" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1549471/processor-sdk-am62x-cpsw-broadcast-rate-limit-burst-behavior/5962285

    下面显示了使用不同 tc 配置的另一种方法、其中速率可限制为 10Mbits/sec、并允许突发 20k。 您还可以将其作为使用特定用例进行实验的起点。  

    全屏
    1.
    2.
    tc qdisc 添加 DEV eth0 入口
    tc 过滤器添加 dev eth0 父项 FFff:u32 匹配 u32 0 警察速率 10Mbit 突发 20k
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    如果您有其他后续问题、敬请告知。

    [/报价]

    尊敬的 Daolin:

    感谢您的答复。 恐怕建议的 tc 命令将不起作用、因为驱动程序只允许限制数据包速率、而不使用突发参数。 您提到的提交消息会提示这一点。 我还事先通过代码一位 (am65-cpsw-qos.c)、仅评估 pkts_rate。 驱动器   在 CPSW_NU_CPSW_NU_ALE_I0_ALE_PORTCTL0_N 寄存器中设置字段 I0_REG_P0_RST_BCAST_LIMIT。

    是否可以更改测量间隔? 我们构建自己的固件、因此可以为内核打补丁。 目前、它似乎绑定到 1ms 的间隔。

    从技术参考手册中:

    “Broadcast Packet Rate Limit — 每个预分频脉冲将加载此字段
    馈入端口广播速率限制计数器。 端口计数器
    随着每个数据包的接收或发送而递减、具体取决于
    模式是发送模式还是接收模式。 如果计数器递减
    为零、则后续数据包的速率受限、直到下一次预分频
    电流。 此时非零值会启用广播速率限制
    字段。“

    是否有可能改变预分频器脉冲频率、或者这是否会与所有 ALE 操作一团糟?

    目前、当客户遇到相关的网络问题时、我们会告诉他们禁用广播速率限制。

    如果集成 CPSW 交换机的未来迭代实施更复杂的速率限制方案(桶漏电等)、那会很好

    谢谢、

    1 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jan、  

    我还在代码中预先挖掘了一个位 (am65-cpsw-qos.c)、仅对 pkts_rate 进行了评估。 驱动程序   在 CPSW_NU_CPSW_NU_ALE_I0_ALE_PORTCTL0_N 寄存器中设置字段 I0_REG_P0_R0_BCAST_LIMIT。

    您能否指出 am65-cpsw-qos.c 代码中的哪个部分仅表示仅评估 pkts_rate 而不是突发? 驱动程序中的哪个位置会修改 PORTCTL0_N 寄存器?

    我担心建议的 tc 命令将不起作用、因为驱动程序只允许数据包速率受到限制、并且不使用 BURST 参数。

    我可以问一下、您是否有任何方法来测试突发参数是否会产生影响?  

    使用 tc 工具有两种变体、我在上一条消息中分享了该工具。 第一个变体显示在提交消息中、我们以前没有对其进行广泛评估。 第二种变体使用“burst"参数“参数、而不是“pkts_burst"参数“参数。 这是我们使用进行了一些第一级评估、以表明可实现入口速率限制。 但是、我们尚未全面评估突发参数的工作原理。  这将有助于我们了解通常进行哪种测试来测试是否考虑了爆破。

    从软件开发团队关于 tc 工具第二种变体的反馈中、我们知道它实际上并不在 CPSW 硬件上执行入口速率限制。 但是、尽管硬件没有运行速率限制、但我们仍然发现、即使软件正在处理速率限制、目标上的 CPU 负载也显著降低。 这表明 CPSW 驱动程序甚至可能没有处理突发参数、可能是某个更高级别的 Linux 驱动程序正在处理该参数。 然而、这只是猜测、因为我们尚未进一步研究这一点。

    此外、为了澄清一下、您是否在谈论数据包入口或出口的速率限制?

    -道林

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否指出 am65-cpsw-qos.c 代码中仅表示 pkts_rate 得到评估而不是暴冲? 驱动程序中哪个位置正好修改 PORTCTL0_N 寄存器?

    在 am65_cpsw_qos_clslower_policer_validate 函数中、最后有一项检查、它只允许 rate_pkt_ps 经过、而在 am65_cpsw_qos_configure_clsflower 中 仅允许 rate_pkt_ps 从警察处获取(不使用 pks_burst)。

    当在 cpsw_ale_rx_rateLimit_bc 中设置 pkts_rate 时 、实际寄存器会按如下方式确定:

    	[ALE_PORT_BCAST_LIMIT]	= {
    		.name		= "bcast_limit",
    		.offset		= ALE_PORTCTL,
    		.port_offset	= 4,
    		.shift		= 24,
    		.port_shift	= 0,
    		.bits		= 8,
    	},

    [quote userid=“576780" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1549471/processor-sdk-am62x-cpsw-broadcast-rate-limit-burst-behavior/5965768

    第二种变体使用“burst"参数“参数、而不是“pkts_burst"参数“参数。 这是我们使用进行了一些第一级评估、以表明可实现入口速率限制。 但是、我们尚未全面评估突发参数的工作原理。  这将有助于我们了解通常进行哪种测试来测试是否考虑了爆破。

    从软件开发团队关于 tc 工具第二种变体的反馈中、我们知道它实际上并不在 CPSW 硬件上执行入口速率限制。 但是、尽管硬件没有运行速率限制、但我们仍然发现、即使软件正在处理速率限制、目标上的 CPU 负载也显著降低。 这表明 CPSW 驱动程序甚至可能没有处理突发参数、可能是某个更高级别的 Linux 驱动程序正在处理该参数。 然而、这只是猜测、因为我们尚未进一步研究这一点。

    此外、为了澄清一下、您是否在谈论数据包入口或出口的速率限制?

    [/报价]

    我错过了第二个命令未卸载到 cpsw 交换机 HW(并且没有尝试,因为我认为它会被 cpsw 驱动程序拒绝)。 在这种情况下、它根本不应进入 cpsw 驱动程序、并将由内核的其他部分处理。 基于软件的入口速率限制 可能 对我们有效、但我必须通过我们的产品管理进行验证。

    我们只需要入口速率限制。

    谢谢、

    1 月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jan、  

    对延迟的回复表示歉意。  

    在这种情况下、它根本不应该进入 cpsw 驱动程序、而是由内核的其他部分处理。 基于软件的入口速率限制 可能 对我们有效、但我必须通过我们的产品管理进行验证。

    如果它可以帮助您了解一些其他信息、我们通过简单设置使用第二个命令进行了一些测试、并发现当该命令未用于速率限制时、CPU 负载可降至约 4%负载、而负载为~90%。 您应该记住、CPU 负载当然会因您的设置和您正在运行的应用程序而异、我们通过非常简单的设置实现了这些数字。

    -道林