自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(126)
  • 收藏
  • 关注

原创 linux内核故障注入

文章内容参考内核文档,链接如上。

2024-04-07 11:25:12 873

原创 `/sys/fs/cgroup/memory` 目录下文件的含义

目录下的这些文件是用于控制和监视 Linux 系统中的内存资源管理的参数和统计信息。: 对应 Kubernetes pod 的 cgroup。: 控制子进程是否继承其父进程的 cgroup 上下文。: 对应一个 KNP NMS Necho 代理的文件。: 对应一个 KNP NSS NetQ 代理的文件。: 控制是否启用了 cgroup 的安全行为模式。: 用于控制 cgroup 事件的注册和注销。: 对应一个基础设施 Kess 代理的文件。: 对应一个 KFS 代理的文件。: 对应一个基础设施代理的文件。

2024-03-27 14:57:01 945

原创 k8s中容器的调度与创建:CRI,cgroup

创建一个新的 IPC 命名空间(Inter-Process Communication Namespace),允许在其中隔离进程间通信的资源,如消息队列、共享内存和信号量。:创建一个新的挂载命名空间(Mount Namespace),允许在其中隔离文件系统挂载点,提供了独立的文件系统视图。命令会创建一个新的用户命名空间、PID 命名空间、网络命名空间、IPC 命名空间、UTS 命名空间和挂载命名空间,实现了多个方面的隔离,使得在新的命名空间中的进程能够有更好的隔离性。用于指定要创建的不同类型的命名空间。

2024-03-01 13:27:35 548

原创 deepflow本地部署过程

本地服务器配置,32C,48G内存整个过程需要配置k8s,安装helm, 安装grafana, 安装deepflow以及deepflow-ctl,以及部署demo在采用sealos进行ALL-IN-ONE部署之前,

2023-12-05 16:27:40 519

原创 可观测性项目开发与学习ing

总体来说,新版本的 HTTP 协议主要从性能、效率、安全性和稳定性方面对旧版本进行改进。HTTP/2 和 HTTP/3 引入了多路复用、头部压缩、优先级控制等功能,提高了性能和效率。HTTP/3 还引入了 QUIC 协议,进一步提高了连接建立速度和容错能力。选择使用哪个协议主要取决于具体需求和支持情况。

2023-11-28 13:50:58 1067

原创 Linux下使用python统计某个pid的进程的CPU利用率和MEM大小差值

【代码】Linux下使用python统计某个pid的进程的CPU利用率和MEM大小差值。

2023-11-09 17:07:24 163

原创 RCU初学参考资料

如果线程T在某时刻不再持有共享对象的引用,那么该线程T在此时就处于quiescent state。如果一个时间区间内,所有线程都曾处于quiescent state,那么这个区间就是一个grace period。具体实现时,可以在时间轴上划分出interval,每个interval内,每一个线程至少有一次quiescent state。那么当前interval删除的对象的内存可以在下一个interval结束时释放掉。如果某个线程卡死了,那么就等不到grace period了,最终导致内存都无法释放。

2023-11-01 21:25:38 176

原创 DDIO和DMA有什么区别

DDIO主要是针对CPU与网卡之间的优化,而DMA是一种更通用的数据传输机制。DDIO通过利用CPU的缓存来加速数据传输,而DMA则完全绕过CPU,直接进行内存与I/O设备之间的数据传输。这两者在硬件数据传输方面都有各自的优势和局限性。根据应用场景的不同,可以灵活选择使用DDIO或DMA。

2023-10-26 17:05:43 256

原创 Linux网络栈学习合集(自用)

内核 skb/sk_buff 详解 - Andy的文章 - 知乎讲的很好。

2023-10-01 17:30:58 145

原创 Understanding Host Network Stack Overheads论文阅读笔记

RPS 试图在 CPU 之间平衡收包,但是没考虑 数据的本地性问题,如何最大化 CPU 缓存的命中率。RFS 将属于相同 flow 的包送到相同的 CPU 进行处理,可以提高缓存命中率。以上配置完成后,aRFS 就会自动将 RX queue 数据移动到指定 CPU 的内存,每个 flow 的包都会 到达同一个 CPU,不需要你再通过 ntuple 手动指定每个 flow 的配置了。如果你的网卡驱动里对外提供一个 ndo_rx_flow_steer 函数,那就是支持 RFS。打开网卡的 ntuple 支持。

2023-09-24 19:20:54 120

原创 内核和用户空间中的TID,GID, PID,uid

当程序被绑定到对某个内核函数调用时,就可以使用它们。UID/GID应该比较明确,但对于那些以前没有接触过内核操作细节的人来说,还是需要解释一下。类似的,bpf_get_current_comm()返回的不是通常的进程名(可以通过ps命令查看),而是线程名。要获取关于eBPF中的进程信息,可以使用以下函数: bpf_get_current_pid_tgid()、

2023-09-24 15:31:03 620

原创 杂问题记录

PTP时间同步的具体原理 - 酷鲨科技的文章 - 知乎 https://zhuanlan.zhihu.com/p/571804924。两次同步,第二次网络传播时延,第一次是传输时延。PTP在Linux网络栈中的应用。时间同步机制与ebpf。

2023-09-21 00:14:30 89

原创 OVS-DPDK/虚拟化学习

DPDK加速的OVS与原始OVS的区别在于,从OVS连接的某个网络端口接收到的报文不需要openvswitch.ko内核态的处理,报文通过DPDK PMD驱动直接到达用户态ovs-vswitchd里。虚拟交换机是运行在通用平台上的一个软件层,可以连接虚拟机的网络端口、提供一套纯软件的路由交换协议栈的一个机制,帮助平台上运行的虚拟机实例(虚拟机之间、虚拟机与外部网络之间)。虚拟机的虚拟网卡对应虚拟交换机的一个虚拟端口,通用平台上的物理网卡作为虚拟交换机的上行链路端口。虚拟交换机的主要好处体现在扩展灵活。

2023-09-19 15:59:14 390

原创 qemu+docker在服务器上搭建linux内核调试环境

docker run -it --name linux_qemu qemu /bin/bash # 从qemu镜像启动一个容器linux_qemu,进入shell。另外,在vscode运行过程中,ssh远程服务器打开docker容器的那个命令行窗口不能关掉,否则vscode打开的docker会断联。

2023-09-18 19:50:34 457

原创 问题记录 MLNX_OFED_LINUX-5.4-3.6.8.1-ubuntu20.04-x86_64安装mlnx-ofed-kernel-dkms错误

root@zju-PowerEdge-R540:/home/zju/Downloads/MLNX_OFED_LINUX-5.4-3.6.8.1-ubuntu20.04-x86_64# ./mlnxofedinstall --upstream-libs --dpdkLogs dir: /tmp/MLNX_OFED_LINUX.1892101.logsGeneral log file: /tmp/MLNX_OFED_LINUX.1892101.logs/general.logBelow is the lis

2023-09-14 23:37:44 1734

原创 安装配置SPDK

SPDK需要DPDK的支持本文操作参考。

2023-09-14 21:32:55 317 1

原创 tcp_v4_connect函数的解析

它的成员变量包括目标地址(daddr)、源地址(saddr)、输出接口索引(flowi4_oif)、TOS/流量类别(flowi4_tos)、作用域(flowi4_scope)、协议(flowi4_proto)、标志(flowi4_flags)和 SELinux 安全标识符(flowi4_secid)等。它的主要作用是处理关闭的连接,并在适当的时间回收连接资源。总的来说**,TCP 协议栈的 death_row 对象是用于管理关闭的 TCP 连接,并实现连接的安全释放和资源回收。

2023-09-13 16:28:40 558

原创 shell脚本学习

这是一个IPv4的内核参数,用于设置反向路径过滤(Reverse Path Filtering,RP_Filter)的策略。将该参数的值设置为2表示严格模式,要求数据包的源IP地址必须从相应的网络接口转发回来。命令设置一系列网络参数,包括启用IPv4和IPv6的数据包转发功能、设置反向路径过滤的策略以及控制是否接受本地生成的数据包。:这是一个IPv6的内核参数,用于启用IPv6数据包的转发功能。将该参数的值设置为0表示不接受本地生成的数据包。是一种常见的约定,用于指示后面的参数都是命令的参数而不是选项。

2023-09-12 22:02:52 150

原创 设置数的某一位为0或1

【代码】设置数的某一位为0或1。

2023-09-06 14:34:25 37

原创 C++设计模式-更新中

这个类实现了单例模式。单例模式是一种设计模式,旨在确保一个类只有一个实例,并提供一个全局访问点来获取该实例。类确保只能通过单例实例来访问和操作类的方法和成员变量,从而实现了单例模式。

2023-09-05 21:09:23 468

原创 实习面试记录

在C++标准库中,vector和map都是基于模板类实现的容器。vector底层实现:vector是一个动态数组,它在内存中以连续的块存储元素。当需要添加或删除元素时,vector会根据需要自动重新分配内存空间,以保持元素的连续存储。通常情况下,vector会分配比实际需求大一些的内存空间,以避免频繁的重新分配开销。map底层实现:map是一个键-值对的关联容器,底层使用红黑树(Red-Black Tree)实现。红黑树是一种自平衡二叉搜索树,它具有良好的查找、插入和删除性能。

2023-09-04 16:21:16 602

原创 MySQL学习

图解数据库左连接、右连接、内连接、外连接、全连接的区别。

2023-08-30 14:46:09 51

原创 阿秀C++笔记-学习记录

4、在被调函数中,从ebp的位置处开始存放被调函数中的局部变量和临时变量,并且这些变量的地址按照定义时的顺序依次减小,即:这些变量的地址是按照栈的延伸方向排列的,先定义的变量先入栈,后定义的变量后入栈;3、在被调函数中,被调函数会先保存调用者函数的栈底地址(push ebp),然后再保存调用者函数的栈顶地址,即:当前被调函数的栈底地址(mov ebp,esp);1、调用者函数把被调函数所需要的参数按照与被调函数的形参顺序相反的顺序压入栈中,即:从右向左依次把被调函数所需要的参数压入栈;

2023-08-30 14:02:23 883

原创 dinic网络流算法CPP

【代码】dinic网络流算法CPP。

2023-08-28 20:54:48 144

原创 Java学习

Java8 以前永久代,受 jvm 管理,java8 以后元空间,直接使用物理内存。 描述的是 JAVA 方法执行的内存模型,每个方法在执行的时候都会创建一个栈帧, 栈动态扩展的容量不够会报 OutOfMemoryError 异常。 本地方法栈类似于虚拟机栈,只不过本地方法栈使用的是本地方法。 虚拟机栈是线程隔离的,即每个线程都有自己独立的虚拟机栈。用于存储局部变量表,操作数栈,动态链接,方法接口等信息。 记录的是正在执行的虚拟机字节码指令的地址,默认情况下,元空间的大小仅受本地内存限制。

2023-08-28 13:06:41 113

原创 量化开发学习入门-概念篇

网格交易法(Grid Trading)是一种基于价格波动和区间震荡的交易策略。它适用于市场处于横盘或震荡的情况下。。下面是网格交易法的主要步骤:确定价格区间:选择一个合适的价格区间作为网格的操作范围。这个价格区间可以根据历史价格走势、支撑阻力位、技术指标等进行确定。建立网格:在价格区间内,按照设定的间隔,建立多个买入和卖出水平(网格)。买入水平通常低于当前价格,卖出水平通常高于当前价格。下单执行:当价格触及网格订单设定的价格时,执行相应的买入或卖出操作。例如,当价格下跌到买入水平时,执行买入操作;

2023-08-22 16:02:30 392

原创 Linux存储学习笔记

存储IO路径》专题:Linux下的“快递之旅”https://mp.weixin.qq.com/s/mH6Q8AwueDjtVJZdbY6gPQ。Linux 存储系列|请描述一下文件的 io 栈?- tcpisopen的文章 - 知乎。深入学习 Linux 操作系统的存储 IO 堆栈 - KaiwuDB的文章 - 知乎。linux存储栈概览 - storagedoggy的文章 - 知乎。《linux开源存储全栈详解》

2023-08-22 13:50:46 400

原创 2023秋招笔试题记录-自用

因此对于长度为n的序列,最后的结果只有2种可能。小美定义一个 01 串的权值为:每次操作选择一位取反,使得相邻字符都不相等的最小操作次数。例如,"10001"的权值是 1,因为只需要修改一次:对第三个字符取反即可。一个仅包含’0’和’1’的字符串,长度不超过 2000。长度为 2 的子串中,有 2 个"00"的权值是 1。长度为 3 的 3 个子串权值都是 1。长度为 4 的 2 个子串权值都是 1。长度为 5 的 1 个子串权值是 1。总权值之和为 2+3+2+1=8。所有非空子串的权值和。

2023-08-21 17:45:12 3864

原创 C++多线程总结

std::mutex 是普通的互斥锁,提供三个简单的接口:lock/try_lock/unlock。try_lock() 如果成功获取锁,返回 true,否则返回 flase,不会阻塞地等待。std::mutex 不支持拷贝和移动,并且不支持递归使用。在 Linux 系统下,是对系统 pthread_mutex_t 简单的封装。__gthread_mutex_lock/try_lock/unlock 直接调用 pthread_mutex_lock/try_lock/unlock,没有其他特殊的操作。

2023-08-21 16:00:32 52

原创 计算给定的两个数组中的连续子数组排列种类数量

需要注意的是,该程序使用的是简化的排列组合计算公式,只考虑了连续子数组的长度,并未考虑元素的实际取值组合。现在有一个棘手的问题,给定了两个长度为n的数组,这两个数组均满足以下性质:1 到n恰好出现了一次,请你判断机器存储完所有的连续子数组时,一共存储了多少次。处理一个数组时,机器会存储数组的一些连续子数组。[1],[2],[3],[1,2],[2,3],[3,1],[1,2,3],[2,3,1]一共存储了8次。另外,该程序中使用了 Scanner 类来读取输入,请确保在运行该程序时提供合适的输入。

2023-08-17 07:29:58 208

原创 Verilog学习记录-自用

always语句块一定条件写完整,否则电平触发,综合生成锁存器。

2023-08-05 23:00:57 275

原创 ebpf开发问题汇总

用bpf_obj_get来获取MAP的描述符,然后用bpf_map_reuse_fd函数来在不同program之间复用。

2023-08-03 23:00:48 486

原创 面试知识点整理

当该进程访问数据已经被搬移到硬盘中的内存时,会触发缺页中断,随后。操作系统会把硬盘中的数据重新移回内存中新分配的内存页,并在页表中添加表项,以保证。内存页的虚拟地址不变。对于进程而言,此时数据所在的内存的虚拟地址没有变化,但物理。计算机的物理内存是有限的,所以操作系统在遇到内存不足时,会通过换页机制暂时把。某个进程未使用的内存中的数据搬移到硬盘上(地址很可能已经和原来不一样了。

2023-07-25 16:10:37 686

原创 CPP void **相关问题

在delete的过程中,编译器并不知道该void*指向的什么类型的变量,自然无法正确调用原类型的析构函数,因而只是简单地清空了一个指针。)&a:将vptr转化为(int64_t*)指针,也就是指向虚表的前八个字节的指针,也就是指向虚表第一个项(一个虚函数指针)的指针。)&a:对指向前八个字节的指针解引用,发现里面的内容是一根指针,指向虚表,这个指针也就是vptr,)&a:对指向虚表第一个项的指针解引用,得到指针指向的内容,也就是第一个虚函数指针。指针,指针指向a的内存空间的前八个字节。

2023-07-19 14:40:55 242

原创 TCP连接的开销

客户端发出SYNC包:客户端一般是通过connect系统调用来发出 SYN 的,这里牵涉到本机的系统调用和软中断的 CPU 耗时开销。服务器端用户进程唤醒:正在被accpet系统调用阻塞的用户进程被唤醒,然后从全连接队列中取出来已经建立好的连接。客户端处理SYN/ACK:客户端内核收包并处理SYN后,经过几us的CPU处理,接着发出ACK。SYN传到服务器:SYN从客户端网卡被发出,这是一次长途远距离的网络传输。服务端收到ACK:服务器端内核收到并处理ACK,然后把对应的连接。一次软中断CPU开销。

2023-05-22 23:34:08 83

原创 C++学习笔记

(up主郭郭wg笔记+现代C++教程)

2023-03-28 22:38:06 253

原创 P4 学习更新中......

bit tc;bit bos;bit ttl;

2023-03-24 16:07:34 368

原创 dell电脑win11删除和安装ubuntu双系统

win11+ubuntu双系统重装

2023-03-05 12:25:59 394

原创 安装dpdk-burst-replay

参考[How to run the pktgen](https://github.com/QMUL-EECS-Networks-Systems/ebpf-sketches/tree/main/pkt-generator)

2023-02-15 18:08:31 152

原创 编译DPDK出现[-Werror=implicit-fallthrough=]错误

解决编译中产生的 -Werror问题

2023-02-15 10:23:59 942

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除