首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Cilium系列-10-启用 IPv6 BIG TCP和启用巨帧

Kernel >= 5.10)•启用 IPv6 BIG TCP (需要 Linux Kernel >= 5.19)•禁用 Hubble(但是不建议, 可观察性比一点点的性能提升更重要)•修改 MTU...>= 5.1)•启用 Pod 的 BBR 拥塞控制 (需要 Kernel >= 5.18)•启用 XDP 加速 (需要 支持本地 XDP 驱动程序)•(高级用户可选)调整 eBPF Map Size•Linux...今天我们来调优 Cilium, 启用 IPv6 BIG TCP 允许网络协议栈准备更大的 GSO(发送)和 GRO(接收)数据包,以减少协议栈的遍历次数,从而提高性能和延迟....请注意,Cilium 假定 GSO 和 GRO 的默认内核值为 64k,只有在必要时才会进行调整,也就是说,如果启用了 BIG TCP,而当前的 GSO/GRO 最大值小于 192k,那么 Cilium...总结 本文调优 Cilium, 启用 IPv6 BIG TCP 允许网络协议栈准备更大的 GSO(发送)和 GRO(接收)数据包,以减少协议栈的遍历次数,从而提高性能和延迟.

23030

3.10内核TCP慢启动耗时问题分析——拥塞控制算法

命令ethtool -K eth1 gro off。...但是我们需要进一步搞清楚这里头的原因和逻辑,来确认最后是否能真的要靠关闭gro解决(gro本身是个优化,而且正如前面所说,所以直接关闭gro听起来也并不是一个最优解。...附上stap脚本:图片gro on时抓取结果:图片gro off时抓取结果:图片可以看到,在几乎同样的timestamp时,gro on时cwnd确实是要小的,这也是符合正常逻辑处理的,回包慢(频率小)...里实现的,通过内核模块的方式插入到内核中, 并通过内核协议栈提供的注册拥塞控制算法的方式将自己注册:图片可以看到,注册的就是一组cubic调用接口,这样在tcp协议栈需要调用时就通过指针的方式调用(题外话:Linux...tcp的优化岂不是太离谱儿了),所以也同时说明了这个commit的优化对整体tcp的性能是有改善的(毕竟我们默认都是gro on,gro本身就是一个优化机制,通过gro off才能优化这种现象本来也说不过去

1.9K80

Linux网络包接收过程的监控与调优

图1 Linux内核接收网络包过程 理解了Linux工作原理之后,还有更重要的两件事情。第一是动手监控,会实际查看网络包接收的整体情况。...# sysctl -w net.core.netdev_budget=600 如果要保证重启仍然生效,需要将这个配置写到/etc/sysctl.conf 3)软中断GRO合并 GRO和硬中断合并的思想很类似...硬中断合并是在中断发起之前,而GRO已经到了软中断上下文中了。...开启GRO的话,Linux就会智能进行包的合并,之后将一个大包传给协议处理函数。这样CPU的效率也是就提高了。...# ethtool -K eth0 gro on GRO说的仅仅只是包的接收阶段的优化方式,对于发送来说是GSO。 五 总结 在网络技术这一领域里,有太多的知识内容都停留在理论阶段了。

2.5K41

Linux内核调优参数对比与解释

全文概要 本文介绍了Linux系统性能优化点常见的内核参数含义及其调优方式,以供学习参考。 具体情况要具体分析,此处只是收集通常会利用到的一些参数的调整,做一些简单的对比和解释。...解决方法,关闭LRO/GRO功能,命令: 123 ethtool -k eth0 #查看LRO/GRO当前是否打开ethtool -K eth0 lro off #关闭GROethtool...-K eth0 gro off #关闭GRO ---- Kernel ---- 1 kernel.randomize_va_space=1 查询命令: 1 cat /proc/sys/kernel...fs.file-max=1048575 查询命令: 1 cat /proc/sys/fs/file-max 默认值:804894 作用:文件描述符的最大值 ---- 参考资料 ---- [1]Linux...内核高性能优化【生产环境实例】 [2]linux内核参数解释说明 [3]tcp_tw_reuse、tcp_tw_recycle 使用场景及注意事项 [4]linux内核调优参数对比和解释

6.4K10

Linux网络包接收过程的监控与调优

上一篇文章中《图解Linux网络包接收过程》,我们梳理了在Linux系统下一个数据包被接收的整个过程。...# sysctl -w net.core.netdev_budget=600 如果要保证重启仍然生效,需要将这个配置写到/etc/sysctl.conf 3)软中断GRO合并 GRO和硬中断合并的思想很类似...硬中断合并是在中断发起之前,而GRO已经到了软中断上下文中了。...开启GRO的话,Linux就会智能进行包的合并,之后将一个大包传给协议处理函数。这样CPU的效率也是就提高了。...# ethtool -K eth0 gro on GRO说的仅仅只是包的接收阶段的优化方式,对于发送来说是GSO。 五 总结 在网络技术这一领域里,有太多的知识内容都停留在理论阶段了。

1.6K10

Boost UDP Transaction Performance

作者:Toshiaki Makita 讲述内容 背景 提升网络性能的基本技术 如何提升UDP性能 作者介绍 Toshiaki Makita NTT开源软件中心的Linux内核工程师 NTT集团公司的技术支持...bytes = 1328 bits ,即10,000,000,000 / 1328 = 7,530,120) 即使在少于最短的报文的情况下,但仍具有挑战性 提升网络性能的基本技术 TSO/GSO/GRO...TSO/GSO用于发送报文时,将上层聚合的数据进行分割,分割为不大于MTU的报文;GRO在接受侧,将多个报文聚合为一个数据,上送给协议栈。总之就是将报文的处理下移到了网卡上,减少了网络栈的负担。...Tx Qdisc锁(_raw_spin_lock)的消耗比较严重 没有竞争,但出现了很多原子操作 在Linux netdev社区中进行优化 更多热点2 ?...slab内存申请和释放 在Linux netdev社区中进行优化 其他挑战 UDP服务器的环境为guest Hypervisor可能使CPU饱和或丢弃报文 总结 对于100字节的数据,可以达到几乎10G

1.3K10

不为人知的网络编程(十):深入操作系统,从内核理解网络包的接收过程(Linux篇)

相信这对你的工作将会有非常大的帮助(本文将以Linux为例,源码基于Linux 3.10,源代码参见:https://mirrors.edge.kernel.org/pub/linux/kernel/v3...接下来进入到napi_gro_receive中: //file: net/core/dev.c gro_result_t napi_gro_receive(struct napi_struct *napi..., struct sk_buff *skb){     skb_gro_reset_offset(skb);     return napi_skb_finish(dev_gro_receive(napi..., skb), skb); } dev_gro_receive这个函数代表的是网卡GRO特性,可以简单理解成把相关的小包合并成一个大包就行,目的是减少传送给网络栈的包数,这有助于减少 CPU 的使用量。...这个函数主要就是调用了netif_receive_skb: //file: net/core/dev.c static gro_result_t napi_skb_finish(gro_result_t

1.8K30

Linux Kernel 5.0 正式面向公众

Linus Torvalds 今日宣布:期待已久的 Linux 5.0 内核系列,终于在今天迎来了面向公众发布的版本更新。Linux 5.0 内核系列的开发工作,属于两个月前。...需要指出的是,Linux Kernel 5.0 只是一个引入适度改进的大版本,意味着并没有太多激动人心的地方。...其它值得留意变化包括:支持用户数据报协议(UDP)中的通用接收卸载(GRO)功能,cgroupv2 中的cpuset 资源控制器,以及支持能够运行多个 Android 实例的 binderfs 文件系统...当然,Linux Kernel 5.0 还更新了添加了许多驱动程序,以及无数的 bug 和安全修复。预计接下来几天内,各大 GNU / Linux 发行版都将迎来更新。...Linux Kernel 5.0 下载地址: https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.0.tar.xz

1.3K20

Linux BSP实战课(网络篇):数据包的接收过程

本文将介绍在Linux系统中,以一个UDP包的接收过程作为示例,介绍数据包是如何一步一步从网卡传到进程手中的。 网卡到内存 网络接口卡必须安装与之匹配的驱动程序才能正常工作。...10:驱动程序将内存中的数据包转换为内核网络模块可识别的skb格式,并调用napi_gro_receive函数。...11:napi_gro_receive函数会处理与GRO(通用接收处理)相关的内容,即将可合并的数据包进行合并,从而只需调用一次协议栈。...14:如果未启用RPS,napi_gro_receive函数会直接调用__netif_receive_skb_core函数。...在Linux中,每个socket都可以像tcpdump中一样定义过滤条件,不满足条件的数据包将被丢弃。 __skb_queue_tail函数用于将数据包放入socket的接收队列末尾。

30220
领券