linux网络数据包的揭秘以及常见的调优方式总结

yuanjiangw yuanjiangw     2023-04-09     149

关键词:

 

https://mp.weixin.qq.com/s/boRWlx1R7TX0NLuI2sZBfQ

作为业务 SRE,我们所运维的业务,常常以 Linux+TCP/UDP daemon 的形式对外提供服务。SRE 需要对服务器数据包的接收和发送路径有全面的了解,以方便在服务异常时能快速定位问题。
以 tcp 协议为例,本文将对 Linux 内核网络数据包接收的路径进行整理和说明,希望对大家所有帮助。

Linux 数据包接收路径的整体说明

接收数据包是一个复杂的过程,涉及很多底层的技术细节 , 这里先做一下大概的说明 :
NIC (network interface card) 在系统启动过程中会向系统注册自己的各种信息,系统会分配专门的内存缓冲区,
NIC 接收到数据包之后,就会存放在内存缓冲区,通过硬件中断通知内核有新的数据包需要处理 .
内核从缓冲区取走 NIC 接收过来的数据,交给 TCP/IP 协议栈处理。
内核的 TCP/IP 协议栈代码进行处理后,更新协议的各种状态,然后交给应用程序的 socket buffer。
然后应用程序就可以通过 read() 系统调用,从对应的 socket 文件中,读取数据。

对内核数据包接收的路径做一下分层,总体可分为三层 :

  1. 网卡层面

    • 1.1 网卡接收到数据包

    • 1.2 将数据包从网卡硬件转移到主机内存中 .

  2. 内核层面

    • 2.1 TCP/IP 协议逐层处理

  3. 应用程序层面

    • 3.1 应用程序通过 read() 系统调用 , 从 socket buffer 读取数据

如下图 :

 

 

作为业务 SRE,我们所运维的业务,常常以 Linux+TCP/UDP daemon 的形式对外提供服务。SRE 需要对服务器数据包的接收和发送路径有全面的了解,以方便在服务异常时能快速定位问题。
以 tcp 协议为例,本文将对 Linux 内核网络数据包接收的路径进行整理和说明,希望对大家所有帮助。

Linux 数据包接收路径的整体说明

接收数据包是一个复杂的过程,涉及很多底层的技术细节 , 这里先做一下大概的说明 :
NIC (network interface card) 在系统启动过程中会向系统注册自己的各种信息,系统会分配专门的内存缓冲区,
NIC 接收到数据包之后,就会存放在内存缓冲区,通过硬件中断通知内核有新的数据包需要处理 .
内核从缓冲区取走 NIC 接收过来的数据,交给 TCP/IP 协议栈处理。
内核的 TCP/IP 协议栈代码进行处理后,更新协议的各种状态,然后交给应用程序的 socket buffer。
然后应用程序就可以通过 read() 系统调用,从对应的 socket 文件中,读取数据。

对内核数据包接收的路径做一下分层,总体可分为三层 :

  1. 网卡层面

    • 1.1 网卡接收到数据包

    • 1.2 将数据包从网卡硬件转移到主机内存中 .

  2. 内核层面

    • 2.1 TCP/IP 协议逐层处理

  3. 应用程序层面

    • 3.1 应用程序通过 read() 系统调用 , 从 socket buffer 读取数据

如下图 :

入门」全方位盘点和总结调优技术专题指南(代码片段)

...优化能力。适合人员Java相关的开发人员、系统架构师、数据库DB人员以及运维人员等。什么是调优调优手段就是让计算机的硬件或软件在正常地⼯作基础上,非常出色的发挥其应有的性能,并且将所承担的负担降低到最... 查看详情

深度学习篇--神经网络中的调优

...于模型训练速度,准确率方面至关重要,所以本文对神经网络中的调优做一个总结。二、神经网络超参数调优1、适当调整隐藏层数对于许多问题,你可以开始只用一个隐藏层,就可以获得不错的结果,比如对于复杂的问题我们... 查看详情

spark学习之路sparkcore的调优之shuffle调优

...了shuffle环节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。因此,如果要让作业的性能更上一层楼,就有必要对shuffle过程进行调优。但是也必须提醒大家的是,影响一个Spark作业性能的因素,主要还是代码开... 查看详情

关于linux性能调优中网络i/o的一些笔记(代码片段)

写在前面和小伙伴分享一些Linux网络优化的笔记,内容很浅,可以用作入门博文内容结合《Linux性能优化》读书笔记整理涉及内容包括常用的优化工具(mii-tool,ethtool,ifconfig,ip,sar,iptraf,netstat)使用Demo及对应的输出解释具体的调优策... 查看详情

关于linux性能调优中网络i/o的一些笔记(代码片段)

写在前面和小伙伴分享一些Linux网络优化的笔记,内容很浅,可以用作入门博文内容结合《Linux性能优化》读书笔记整理涉及内容包括常用的优化工具(mii-tool,ethtool,ifconfig,ip,sar,iptraf,netstat)使用Demo及对应的输出解释具体的调优策... 查看详情

tomcat调优总结(tomcat自身优化linux内核优化jvm优化)(代码片段)

Tomcat自身的调优是针对conf/server.xml中的几个参数的调优设置。首先是对这几个参数的含义要有深刻而清楚的理解。以tomcat8.5为例,讲解参数。同时也得认识到一点,tomcat调优也受制于linux内核。linux内核对tcp连接也有几个参数可... 查看详情

spark记录sparkcore的调优之开发调优(代码片段)

摘抄自:https://www.cnblogs.com/qingyunzong/p/8946637.html前言在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等... 查看详情

2021秋招最新java面试题|jvm剖析与常用的调优总结(代码片段)

...参数4.分析GC日志5.四种引用强引用软引用弱引用虚引用6.常见的JVM异常/错误1.什么是GCRootsGCRoots是一组活跃的引用;常用于判断对象是否被回收的可达性分析法中;可达性分析:通过一系列称为GCRoots的跟对象作为起始... 查看详情

spark学习之路sparkcore的调优之开发调优[转](代码片段)

前言在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等各种不同类型的计算操作,应用范围与前景非常... 查看详情

入门」全方位盘点和总结调优技术专题指南

...优化能力。适合人员Java相关的开发人员、系统架构师、数据库DB人员以及运维人员等。什么是调优调优手段就是让计算机的硬件或软件在正常地⼯作基础上,非常出色的发挥其应有的性能,并且 查看详情

揭秘spark应用性能调优

引言:在多台机器上分布数据以及处理数据是Spark的核心能力,即我们所说的大规模的数据集处理。为了充分利用Spark特性,应该考虑一些调优技术。本文每一小节都是关于调优技术的,并给出了如何实现调优的必要步骤。本文... 查看详情

hivesql调优-最常用的调优方式

...其它层面:让经常where的字段进行分区,合理的多分桶、数据使用压缩、建宽表的时候用列式的orc存储、开启严格模式:会产生笛卡尔积、orderby排序后未加limit、查询分区表时未指定列的HiveSQL语句直接执行出错开启列裁剪和分区... 查看详情

linux安装完后的调优(linux6)

1:关闭SELinux方法一: #sed-i‘s/SELINUX=enforcing/SELINUX=disabled/‘/etc/selinux/config#替换文本参数        #grepSELINUX=disabled/etc/selinux/config#查文本状态  &n 查看详情

自动调优工具aoe,让你的模型在昇腾平台上高效运行(代码片段)

摘要:当算子性能或者网络性能不佳时,可以使用AOE进行调优。本文就带大家了解自动调优工具AOE,让你的模型在昇腾平台上高效运行。本文分享自华为云社区《自动调优工具AOE,让你的模型在昇腾平台上高效运行》,作者:昇... 查看详情

系统稳定性-调优3.4常见binder相关异常调优总结

...nder对端处理超时,binder本端处理超时(导致主线程block)以及binder耗尽三类问题。无论是应用,Framework,Hal中间件,还是BSP驱动,熟悉这三类binder相关case的调试和分析,能够帮助我们快速地找到和解决问题。接下来按照问题复... 查看详情

spark学习之路sparkcore的调优之数据倾斜调优(代码片段)

摘抄自:https://tech.meituan.com/spark-tuning-pro.html数据倾斜调优调优概述有的时候,我们可能会遇到大数据计算中一个最棘手的问题——数据倾斜,此时Spark作业的性能会比期望差很多。数据倾斜调优,就是使用各种技术方案解... 查看详情

spark学习之路sparkcore的调优之数据倾斜调优(代码片段)

讨论QQ:1586558083目录调优概述数据倾斜发生时的现象数据倾斜发生的原理如何定位导致数据倾斜的代码某个task执行特别慢的情况某个task莫名其妙内存溢出的情况查看导致数据倾斜的key的数据分布情况数据倾斜的解决方案解决方... 查看详情

机器学习pythonsklearn包的使用示例以及参数调优示例

#coding=utf-8#!/usr/bin/envpython'''''【说明】1.当前sklearn版本0.182.sklearn自带的鸢尾花数据集样例:(1)样本特征矩阵(类型:numpy.ndarray)[[6.73.5.22.3][6.32.55.1.9] 查看详情