- 博客(138)
- 资源 (13)
- 收藏
- 关注
翻译 (翻译)Linux中的IS_ERR()宏
它涵盖了-1到-4095,这些数字是用来表示error code的,不是小于4096或非NULL(0)。0-4294963201(0xfffff001)都被认为是没有错误的,在你的代码中,IS_ERR用于检查class_create是否成功创建了ebbcharClass。如果你想知道宏定义展开后是什么,就用gcc 的-E选项编译你的文件,这样只会做预处理。它会包含所有的头文件和宏的展开式。宏定义本身并是不是执行的东西,而是一种“查找和替换”的东西。测试所提供的指针是否应被视为错误值。它不检查指针是否有效。
2023-03-02 14:31:32
512
原创 #define IS_ENABLED(CONFIG_XXX)和#ifdef CONFIG_XXX
IS_ENABLED(CONFIG_XXX)判断y和m为真,也就是无论编译进内核还是模块都为真,只有n为假。所以#ifdef CONFIG_XXX只能判断是不是设置为y,也就是编译进内核,如果是m或者n则为假。
2022-12-16 14:33:54
1554
转载 Linux内存逆向映射(reverse mapping)技术的前世今生
本文来自于微信公众号Linux阅码场一、前言数学大师陈省身有一句话是这样说的:了解历史的变化是了解这门学科的一个步骤。今天,我把这句话应用到一个具体的Linux模块:了解逆向映射的最好的方法是了解它的历史。本文介绍了Linux内核中的逆向映射机制如何从无到有,如何从笨重到轻盈的历史过程,通过这些历史的演进过程,希望能对逆向映射有更加深入的理解。二、基础知识在切入逆向映射的历史之前,我们还是简单看看一些基础的概念,这主要包括两个方面:一个是逆向映射的定义,另外一个是引入逆向映射的原因。1、什么是逆向映射(re
2022-10-19 19:58:41
1020
原创 OpenEuler 22.03安装桌面
官方也有提供安装桌面的方式,但是看起来很复杂,手敲的太多容易出错,这里可以先把文件cp到另一台电脑上修改,修改完在cp回去。5.设置gdm自动启动。6.设置图形界面登录。
2022-10-09 10:48:06
3092
转载 从pfn_to_page/page_to_pfn看linux SPARSEMEM内存模型
本文以arm64架构为背景。一 背景计算机中的物理内存本来是没有没有页/page的概念的,Linux为了各种冠冕堂皇的理由,硬生生的将计算机中的物理内存以page为单位划分成一个一个的小方块,称作页框,每个页框有一个编号叫做PFN;有了PFN,就能够计算出这个页框对应的物理地址,有了物理地址CPU就能够通过总线访问到对应的内存。
2022-09-15 11:42:09
985
转载 如何学习 Linux 内核网络协议栈
部门来了新的小伙伴,领导说要让我做一个关于Linux内核网络协议栈的Presentation,于是有了此文。为什么是文字而不是PPT呢?因为我真的不喜欢PPT!
2022-07-29 19:34:06
398
转载 一个 TCP 接收缓冲区问题的解析
在Linux内核中,有两条路径处理收到的报文快速路径(fastpath)和慢速路径(slowpath)。正如其名,快速路径处理。
2022-07-29 19:14:02
2131
转载 一个 TCP 发送缓冲区问题的解析
在实验环境中,Phase1阶段创建的sk_buff,其skb->len=1024,skb->truesize=4372(4096+256,这个值的详细来源请看sk_stream_alloc_skb)这样看上去,这个sk_buff也容纳不下14480啊。再继续看内核的实现,再skb_copy_to_page_nocache()拷贝之前,会进行sk_wmem_schedule()...
2022-07-29 19:11:18
2012
原创 切换Mellanox网卡工作模式
在网上查了很久,最简单的方式:1.安装工具包:2.查询当前设备PCIE信息:可以看到网卡的两个port都是Infiniband模式3.查询设备配置信息:可以看到配置信息中是IB(1):4.设置工作模式:5.确认修改:可以看到port1 已经修改为ETH模式:6.重启PC后可以看到网卡信息:......
2022-07-06 09:32:52
5562
1
原创 Linux代码比对工具meld
Ubuntu20.04下安装meld的时候报错:解决方法: 功能和beyond compare差不多,非常好用!
2022-07-05 18:08:31
1770
2
原创 Linux下PCIE设备分析软件
LeCroy的PCIE分析软件是一款免费的软件,可以查看当前系统的PCIE设备,还可以对寄存器进行读写操作,在Linux下使用方法如下:1.下载软件,下载地址:Teledyne LeCroy - PCI Express Analysis Software2.安装:需要注意的是安装选项需要手动增加PCIE的选项。3.在应用程序中找到TeleScanPE软件,运行后如下图,可以看到PCIE的设备,以及设备详细信息:4.如果更换了内核,则软件会无法使用,估计是因为软件使用了内核驱动的原因,所以需要卸载后重新
2022-07-01 15:18:13
3709
原创 Windows下安装X710网卡驱动
需要在windows下使用Intel 的X710的网卡,网卡有4个port,每个port的速率为100Gbps,接口类型为光纤接口,尝试了很多种安装驱动的方式都失败,可能因为板载网卡也是intel的,所以每次安装后都显示安装了板载网卡的驱动,但是X710的驱动一直没有安装成功,失败的方式有:1.首选肯定是在设备管理器中选择自动安装驱动,结果windows找不到对应的设备驱动。2.在官网下载对应的网卡驱动安装包:Wired_driver_27.2_x64.zip,大小有37MB。3.因为自己没有安
2022-05-20 14:03:40
3948
2
转载 Linux 虚拟化网络技术 — 虚拟网络协议栈
前言本文通过 OpenStack Neutron L3 Agent 实现的 Linux 虚拟路由器来描述 Linux 的虚拟网络协议栈。Neutron L3 agent 概述Neutron L3 agent 服务,运行在 OpenStack 的网络节点上,实现了 3 层路由和 NAT 功能。利用 Linux Network Namespaces,可以创建多个具有重合 IP 地址段的虚拟路由器,每个虚拟路由器都具有自己的 namespace。L3 agent的配置Step 1. 在网
2022-05-13 16:48:04
413
转载 Linux 虚拟化网络技术 — 虚拟网线(Veth-pair)
虚拟网线(Veth-pair)Veth-pair 不是一个设备,而是一对设备,作为虚拟网线用于连接两个虚拟网络设备。veth pair 是根据数据链路层的 MAC 地址对网络数据包进行转发的过程来实现的,本质是反转通讯数据的方向,需要发送的数据会被转换成需要收到的数据重新送入内核网络层进行处理,从而间接的完成数据的注入。veth pair 在虚拟网络设备中是作为 “网线” 的存在,将 tap 之间,tap 与 Bridge 之间连接起来。veth pair 通常还与 Network namespace
2022-05-13 16:37:17
2951
转载 SR-IOV 网卡虚拟化技术
目录目录目录SR-IOV在 KVM 中启用 SR-IOV 网卡手动挂载 VF 到虚拟机指令方式挂载SR-IOV 的数据包分发机制SR-IOVSR-IOV(Single-Root I/O Virtualization,单根 I/O 虚拟化)是 PCI-SIG 推出的一项标准,定义了一种 PCIe 设备虚拟化技术的标准机制,是 “虚拟通道” 的一种技术实现,用于将一个 PCIe 设备虚拟成多个 PCIe 设备,每个虚拟 PCIe 设备都具有自己的 PCIe 配置空间..
2022-05-13 16:30:52
2739
转载 启用 SR-IOV 解决 Neutron 网络 I/O 性能瓶颈
目录:目录目录:前文列表前言Neutron 的网络实现模型基于虚拟网络设备的虚拟机流量走向基于虚拟网络设备的性能瓶颈在 Neutron 中引入 SR-IOV 技术基于 SR-IOV 技术的虚拟机流量走向编辑Neutron 配置启用 SR-IOVSR-IOV 与 NUMA 亲和SR-IOV 与 VLAN tagSR-IOV 与安全组前文列表《SR-IOV 网卡虚拟化技术》前言该文章是基于「计算机系统应用」月刊文章《SR-I...
2022-05-13 16:07:10
2058
转载 Linux Kernel TCP/IP Stack — L2 Layer — Traffic Control(流量控制)的实现原理
基本概念QoS、Bandwidth 和 Traffic ControlQoS、带宽控制、流量控制的本质都是在网络设备(e.g. 主机、交换机、路由器等)的出口处使用一系列队列,对数据包进行排序以控制它们的发送顺序,并通过一系列策略控制收到的和发送的数据包是否应该被丢弃,同时还要对数据包的发送速率进行控制。三者的区别在于关注的点和应用场景不同:QoS:关注服务保障要求。带宽控制:关注每秒的流量速率。流量控制:关注流量的大小、形态等。队列队列是一种用于组织未能立即开始的任务或数
2022-05-13 15:17:26
607
转载 Linux Kernel TCP/IP Stack — L2 Layer — Traffic Control(流量控制)
tc CLI - Linux 流量控制工具TC(Traffic Control)是 Linux 操作系统的流量控制器,它利用 “队列规定” 建立处理数据包的队列,并定义队列中的数据包被发送的方式, 从而实现对流量的控制。示例:限制网卡 eth0 的速率为 10Mbpstc qdisc add dev eth0 root tbf rate 10mbit burst 10kb lat 400.0mstc -s qdisc ls dev eth0TC 的基本原理数据包从 I.
2022-05-13 14:35:33
480
转载 Linux Kernel TCP/IP Stack — L2 Layer — Linux Bridge(虚拟网桥)的基本操作
目录Linux bridge 的基本操作将 veth pair 连上 Bridge为 Bridge 配置 IP 地址将物理网卡接口设备挂靠 BridgeLinux Bridge 与虚拟机Linux Bridge 与容器Linux Bridge 的 MAC 地址行为Linux Bridge 常用指令Linux bridge 的基本操作创建 Bridge$ brctl addbr br0# or$ ip link add name br0 type br..
2022-05-13 11:32:53
1509
转载 Linux Kernel TCP/IP Stack — L3 Layer — 路由器子系统
目录文章目录目录Linux 作为一个路由器路由表项的类型route 指令ip route 指令添加默认路由添加静态路由删除静态路由操作示例Linux Kernel 路由子系统路由表发送数据时进行路由选择(选路)接收数据时进行路由选择(选路)路由查找Linux 作为一个路由器Linux 作为一个路由器只需要打开 ipv4.forward 特性即可。$ vim /etc/sysctl.conf...net.ipv4.ip_forward=1$ sysctl
2022-05-12 18:08:21
626
转载 自旋锁 spin_lock、 spin_lock_irq 以及 spin_lock_irqsave 的区别
能够停留下来认真读这篇文章的人大部分都已经了解了什么是自旋锁,至少知道自旋锁就是不停的询问资源有没有准备好的一把锁,这个从概念上很容易理解,当然他的内在也是很容易实现。为什么需要自旋锁很多时候我们并不能采用其他的锁,比如读写锁、互斥锁、信号量等。一方面这些锁会发生上下文切换,他的时间是不可预期的,对于一些简单的、极短的临界区完全是一种性能损耗;另一方面在中断上下文是不允许睡眠的,除了自旋锁以外的其他任何形式的锁都有可能导致睡眠或者进程切换,这是违背了中断的设计初衷,会发生不可预知的错误。基于两点,我
2022-04-23 21:12:32
707
转载 云网络丢包故障定位
引言本期分享一个比较常见的⽹络问题—丢包。例如我们去 Ping ⼀个⽹站,如果能 Ping 通,且⽹站返回信息全⾯,则说明与⽹站服务器的通信是畅通的,如果 Ping 不通,或者⽹站返回的信息不全等,则很可能是数据被丢包了,类似情况想必⼤家都不陌⽣。针对⽹络丢包,本⽂提供⼀些常见的丢包故障定位⽅法,希望能够帮助⼤家对⽹络丢包有更多的认识,遇到丢包莫要慌,且跟着⼀起来涨姿(知)势(识)……什么是丢包数据在 Internet 上是以数据包为单位传输的,单位为字节,数据在⽹络上传输,受⽹络设备,⽹络质量
2022-04-21 11:45:03
3772
转载 网卡VXLAN的offload技术介绍
1.1 offload技术概述首先要从术语offload说起,offload指的是将一个本来有软件实现的功能放到硬件上来实现,这样就可以将本来在操作系统上进行的一些数据包处理(如分片、重组等)放到网卡硬件上去做,降低系统CPU消耗的同时,提高处理性能。在neutron中,基于VXLAN的网络虚拟技术给服务器的CPU带来了额外的负担,比如封包、解包和校验等,VXLAN的封包和解包都是由OVS来完成的,使用VXLAN offload技术后,VXLAN的封包和解包都交给网卡或者硬件交换机来做了,那么网卡的VX
2022-04-08 17:28:45
2505
原创 Linux 上的/proc/sysrq-trigger的使用
.. include:: ../disclaimer-zh_CN.rst:Original: Documentation/admin-guide/sysrq.rst:翻译:黄军华 Junhua Huang <huang.junhua@zte.com.cn>:校译:司延腾 Yanteng Si <siyanteng@loongson.cn>.. _cn_admin-guide_sysrq:Linux 魔法系统请求键骇客=================..
2022-04-07 11:33:32
2410
原创 linux下设置CPU频率
cpufreq-set -c 0 -g powersave我们需要安装cpufrequtils。此软件是查看cpu当前频率以及修改频率、选择cpu、选择cpu运行方式的。注意,只支持某些可调节频率的cpu,如intel的笔记本cpu。可能可以超频 ,没敢实验,那位试试看好了。sudo apt-get install cpufrequtils使用方法cpufreq-info, cpufreq-selector, cpufreq-set。具体用法可以看man,或者在命令后加-h。比如..
2022-03-30 11:42:04
6146
转载 网卡VXLAN的offload技术介绍
1.1 offload技术概述首先要从术语offload说起,offload指的是将一个本来有软件实现的功能放到硬件上来实现,这样就可以将本来在操作系统上进行的一些数据包处理(如分片、重组等)放到网卡硬件上去做,降低系统CPU消耗的同时,提高处理性能。在neutron中,基于VXLAN的网络虚拟技术给服务器的CPU带来了额外的负担,比如封包、解包和校验等,VXLAN的封包和解包都是由OVS来完成的,使用VXLAN offload技术后,VXLAN的封包和解包都交给网卡或者硬件交换机来做了,那么网卡的VX
2022-03-17 16:14:00
2840
原创 使用ipftrace跟踪内核网络调用流程
因为ipftrace2是根据skb包中的mark进行跟踪,所以使用iptables设定需要跟踪的目标IP的数据包的mark标志:root@# iptables -t raw -A OUTPUT -d 8.8.8.8 -j MARK --set-mark 0xdeadbeefroot@# iptables -t raw -A PREROUTING -s 8.8.8.8 -j MARK --set-mark 0xdeadbeef准备开始跟踪:root@######### ipft -m ..
2022-03-11 18:02:16
1004
原创 浅谈数据中心网络泛洪技术
导语泛洪在数据中心网络中是一种常见现象,很多时候泛洪转发都是良性的,对网络无影响。以太网标准对网络设备的要求也是允许流量有短时间的泛洪,尤其是框式设备是不可避免的,只要在极短的时间内就结束泛洪,都是一种正常的网络现象。搞网络技术的人对泛洪这个概念应该不陌生,本质上是网络设备将从某个接口上收到的数据从除本接口之外的设备所有接口发送出去,之所以发生这样的情况是因为数据报文在网络设备转发表中无法找到与数据包目标地址一致的表项,此时就将数据包从所有接口发送出去,以期找到目标主机来接收数据包,可以理解为二层转
2022-03-11 11:03:26
4609
原创 Ubuntu20.04 编译替换kernel内核记录
1.下载kernel sorce code,从kernel.org上下载或在直接用git clone,或者在国内mirror上下载镜像。2.为了方便,用su切换到root权限,代码放在/usr/src/目录下,解压代码。3.配置config:a. 打开源码路径:cd /usr/src/linux-xxxxb. cp /boot/config-xxxxx .configc. make menuconfig-->load-->sav...
2022-03-08 15:36:55
2852
转载 一文彻底搞懂 TCP三次握手、四次挥手过程及原理
目录TCP 协议简述TCP包首部TCP 三次握手建立连接为什么需要三次握手?TCP 四次挥手关闭连接为什么连接的时候是三次握手,关闭的时候却是四次握手?为什么要等待2MSL?TCP 协议简述TCP 提供面向有连接的通信传输,面向有连接是指在传送数据之前必须先建立连接,数据传送完成后要释放连接。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。同时由于TCP协议是一种
2022-02-11 16:01:18
610
转载 windows设置CPU主频
方法如下:1、首先从“开始”菜单进入“控制面板”,在查看方式为大(小)图标的情况下点击电源选项;2、来到电源选项发现这里有三种模式,当前正在使用的是平衡模式,应更改平衡计划设置,这样才能立刻生效。在此以高性能为例,点击“更改计划设置”;3、来到编辑窗口后,点击“更改高级电源设置”,如图所示;4、来到电源选项窗口,在下方列表中依次展开“处理器电源管理--最大处理状态”,将其由100%设置为85%,点确定即可。将最大处理状态设置为85%后,大家可以通过任务管理器的数值进行对比
2021-11-24 16:12:08
4492
1
转载 Linux网桥实现分析
1.前言本文结合网络上关于Linux网桥的说明、Linux平台的代码阅读记录,整理的一篇总结性文档。由于时间仓促,分析可能存在不足之外,望大家见谅和指正。对于接触过Linux网络的童鞋,对网桥功能应该不陌生。概括来说,网桥实现最重要的两点:1.MAC学习:学习MAC地址,起初,网桥是没有任何地址与端口的对应关系的,它发送数据,还是得想HUB一样,但是每发送一个数据,它都会关心数据包的来源MAC是从自己的哪个端口来的,由于学习,建立地址-端口的对照表(CAM表)。2.报文转发:...
2021-11-17 10:08:47
2612
转载 Netfilter iptables 实现分析
1.前言Netfilter/iptables是Linux的第三代防火墙,在此之前有Ipfwadm和Ip chains两种防火墙。在网络数据包处理过程中,按照数据包的来源和去向,可以分为三类:流入的(IN)、流经的(FORWARD)和流出的(OUT),其中流入和流经的报文需要经过路由才能区分,而流经和流出的报文则需要经过投递,此外,流经的报文还有一个FORWARD的过程。Netfilter/iptables正是通过将一系列调用接口,嵌入到内核IP协议栈的报文处理的路径上来完成对数据包的过滤,修改...
2021-11-17 10:06:46
2246
转载 iptables的问题和改进方案
转自:DPDK and XDP - 云+社区 - 腾讯云iptables是一个配置Linux内核防火墙的命令行工具,它基于内核的netfilter机制。新版本的内核(3.13+)也提供了nftables,用于取代ip...https://cloud.tencent.com/developer/article/1484793iptables规则逐渐增加,遍历iptables效率变得很低,一个表现就是kube-proxy,他是Kubernetes的一个组件,容器要使用iptables和-j DNAT规则为服
2021-11-16 15:52:17
1465
转载 ethtool原理介绍和解决网卡丢包排查思路
前言之前记录过处理因为LVS网卡流量负载过高导致软中断发生丢包的问题,RPS和RFS网卡多队列性能调优实践,对一般人来说压力不大的情况下其实碰见的概率并不高。这次想分享的话题是比较常见服务器网卡丢包现象排查思路,如果你是想了解点对点的丢包解决思路涉及面可能就比较广,不妨先参考之前的文章如何使用MTR诊断网络问题,对于Linux常用的网卡丢包分析工具自然是ethtool。更新历史2020年06月22日 - 初稿阅读原文 - https://wsgzao.github.io/post/ethto
2021-11-10 15:17:20
2336
3
原创 实用技术论坛
1.蜗蜗科技2.深入浅出BPF:深入浅出 eBPF | 专注于 Linux 内核技术eBPF (Linux/Kernel/XDP/BCC/BPFTrace/Cillium)深入浅出 Linux 内核 BPFhttps://www.ebpf.top/
2021-11-10 14:11:28
846
TeleScanPE_linux安装包
2022-07-01
System V Application Binary Interface :abi.pdf
2021-06-15
Intel Software Developer's Manual
2020-11-30
usb3.0_spec.pdf
2020-10-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人