自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

技术札记

技术札记

  • 博客(185)
  • 资源 (1)
  • 收藏
  • 关注

原创 DPDK中的PMD全称是什么?本质是什么?(本质是Driver、是Polling的,异步的)

参考:https://en.wikipedia.org/wiki/Data_Plane_Development_Kithttps://developer.nvidia.com/networking/dpdk

2024-04-23 01:27:56 186

原创 关于Linux内核调试中几个工具kprobe、ftrace、ebpf关系的简单记录(本质是预留的nop)

最近和行业大佬探讨关于Linux内核中kprobe、ftrace、ebpf关系的一些,特此记录:

2024-04-23 01:14:23 83

原创 在Mac M1笔记本上跑大语言模型llama3的4个步骤?(install、pull、run、ask)

实操下来,因为ollma非常简单,只需要3个步骤就能使用模型,更多模型只需要一个pull就搞定。一台稍微不错的笔记本+网络,就能把各种大模型都用起来,快速上手吧。

2024-04-23 01:01:12 476

原创 编译Linux内核模块遇到/lib/modules/.../build: No such file or directory怎么办?以及kernel-devel和kernel-header作用?

那么就依赖/lib/module/uname−rbuild有相关的编译信息,比如所有的symbol等以及编译框架。libmodules(shell uname -r)/build是一个软连接,指向实际的内核源码。实际的内核源码在 /usr/src/kernels/uname−r而这个usrsrckernels(uname -r)就是kernel-devel的rpm安装后的内核信息。

2024-04-17 01:24:04 792 2

原创 MAC上如何将某个目录制作成iso格式磁盘文件,iso文件本质是什么?以及挂载到ParallelDesktop中?(hdiutil makehybrid )

ParallelsDesktop没有安装ParallelsTools的无法共享目录,可以通过ParallelsDesktop提供CD磁盘的方式共享进去。

2024-04-17 00:54:50 515

原创 Linux的3个debug rpm包有什么区别kernel-debuginfo-common、kernel-debuginfo、kernel-debug-debuginfo?(源码、库、库)

kernel-debug-debuginfo 是debug版本linux的debuginfo库,本质是库,同kernel-debuginfo。kernel-debuginfo-common 主要是编译linux的与架构无关的,本质就是源码。yum源列出的mirror上的rpm包:(注意yum本质只是一个包管理框架,包本质都是这些rpm包)kernel-debuginfo 主要是vmlinux、所有的ko等,会copy文件到。

2024-04-17 00:27:58 265 1

原创 git如何删除本地某个remote,以及如何重命名某个remote?(git remote rm origin、git remote rename mypriv origin)

实际工程场景中,假设本地仓库对应了2个remote,一个是你同事的叫做origin指针,是个是你的假设叫做mypriv。你远端的事从同事那边copy过来的。某次提交你push某个分支的时候本来想提交到mypriv,结果提交到默认的origin。此时产生了需求需要删除和你同事的,也就是origin。怎么处理?

2024-04-16 23:59:52 224

原创 git如何删除错误提交到remote的某个分支?(git push origin --delete featre/xxx_featre)

其实本质就是删除远端的一个分支,但是本地不删除。什么场景可能出现,假设你同事有一个remote的仓库叫做origin,你自己有一个remote仓库叫做mypriv,你是从他的仓库copy的仓库的。但是本地代码同时对应两个remote。为什么要同时关注2个remote?假设你有一个Tower的软件,他可以定期动态的fetch云端修改,只是不修改本地的HEAD,那么可以动态关注。并且还能同时push到多个仓库。

2024-04-16 23:51:36 162

原创 paralleldesktop中linux无gui版本如何安装paralleltools

安装工具提示mount -o exec,实际不行本质是需要挂载parallel的专用tools ios 然后执行安装脚本或者gui。

2024-04-16 09:49:09 343

原创 【1000个GDB技巧之】GDB中使用python脚本的方法以及4个注意事项(define、python、end、gdb.execute、to_string=True)

坑3:python代码必须定格严格按照table格式撰写(还有一个方法就是写成纯gdb文件然后import。坑4:gdb.execute代码中必须写to_string才能正确输出到返回值,进一步提供给gdb使用。坑2:gdb.execute执行后的输出结果包括$xxx 获取需要做转换。坑1:python和gdb的end都不值直接注释,需要另起一行。

2024-04-15 02:03:14 250 1

原创 【1000个GDB技巧之】GDB如何配置启动自动执行脚本以及.gdbinit的3种工程用法?(~/.gdbinit、source、define、end、set)

比如一些配置:以及一些常用的需要加载的。

2024-04-14 22:33:08 374 1

原创 【1000个GDB技巧之】GDB运行中如何动态更新内存的corefile?

场景 /proc/kcore包括了linux内存,但是在gdb试用中的时候,加载的可能支持某个快照。如何动态读取最新数据而不用退出重新加载,就使用GDB的core-file进行处理。站在GDB设计者的角度,面向对象的提供命令,提供core-file对于内存,提供symbol-file对于symbol。未更新前数据不会变化,更新core-file后会动态加载。

2024-04-14 21:42:21 143

原创 SecureCRT日志记录的7个经典配置记录与14个环境变量(%Y-%M-%D_%H_%S_session.log %t )

每次更换电脑、主机或者环境都需要配置一遍SecureCRT的参数。感觉就最近十年都已经设置过上百次了。其实设置没什么特别的,只是经过不断地打磨,主打的就是一个经济实用。经常忘记,特此记录。

2024-04-14 18:15:39 334 1

原创 【1000个GDB技巧之】如何在远端服务器打开通过vscode动态观测Linux内核实战篇?

(也可以直接在vscode中配置,忽略)主要步骤:在~/.ssh/config中添加服务端的host,以便vscode的remote中能够登录。

2024-04-14 10:22:58 916

原创 Linux内核中KASLR功能是什么?有什么作用?怎么破除?以及如何实操?(地址空间、layout random、kallsyms)

KASLR是一个什么技术点其实不重要,但重要的是有了KASLR这个功能后,造成内核中某个符号(函数 or 变量)在System.map中的地址和实际不一样了(实际: cat /proc/kallsyms),进一步带来了分析类似crash问题中的打印地址不准确问题。所以必须得知道这是什么?

2024-04-13 21:43:52 871

原创 ssh config如何配置用host名替代[email protected],以及如何配置通过跳板机登录?(~/.ssh/config、ProxyCommand、nc、免密配置)

懂的都懂,就不写前言后序了。作为一个简单记录。

2024-04-13 14:45:43 1187

原创 Linux如何安装kernel-debuginfo包以支持获取未压缩内核映像vmlinux?(yum | wget、rpm -ivh)

fill:#333;color:#333;color:#333;fill:none;8.6isos 下载镜像GA表示 普遍可用稳定版全量安装包括支持GNU模式进包括基础安装主要服务器命令行模式从网络安装BaseOS 包括源码独立包等x86_64/debug/Packages/安装包8.7...

2024-04-13 13:33:52 593

原创 阿里龙蜥操作系统AnolisOS中涉及的RHEL、RHCK、ANCK几个概念是什么以及什么关系?(OS和kernel)

举个例子:

2024-04-13 11:02:26 383

原创 kunit常用的20个判断宏(2真假、6大小、5指针、2字符串、2内存、2断言、2msg)

另外根据这个这些接口看Linux内核代码在5.x之后kunit修改挺多的。

2024-04-12 00:14:17 162

原创 Linux内核单元测试框架kunit的3个对象和N个函数和1个接口(kunit_suite, kunit_case[], func1(), struct kunit,kunit_run_tests)

这个kunit相当于是一个中间态的结构体,kunit内部每次执行前定义一个临时的kunit,然后进行执行。每次执行后,把结果更新到这个kunit中,并且使用的kunit的判断宏使用这个kunit里面的status根据判断结果存储进去。比如KUNIT_EXPECT_EQ(test, 1, 1),就会把OK的结果存入test的status中。这里相当于使用了结构化初始化,把所有需要运行的case,放到my_test_cases的数组中。然后执行完成后,把执行结果test存储到case的status中。

2024-04-11 23:39:52 696

原创 【微命令】git 如何修改某个分支的名字(git branch -m newbranch)

简要信息,快速记录。

2024-04-11 23:01:19 776 2

原创 awk命令如何根据某行某列数字进行数学计算后判断大于某个值才进行打印?

if ($5/1000 > 100} 表示第五列除以1000后大于100则执行后面的print。逻辑上就是超过100ms才进行打印。假设输出是dmesg的,并且有一行这样的输出。

2024-04-10 00:57:22 159

原创 Shell中2种常见的循环体for和while的使用模板

简要记录,快速取用。

2024-04-10 00:51:22 109 1

原创 常用的一些GCC参数的记录(不管更新)

经常需要配置各式各样的C语言的GCC参数,也老是忘记。特此归档记录在这里,以供未来取用。暂时只收集想到的用过的 更多以后更新和迭代。后文将以makefile中更新某个CLFAGS的方式记录。

2024-04-10 00:45:36 84

原创 C语言奇技淫巧之--用宏定义替换函数名的另外一种思路

比如内核有个kunit模块,然后我们自己实现了一个kunit接口类似的模块,如果内核加载了这个模块,自己的模块就需要都把函数替换一遍,优雅地做法就是上面的方式。上面的代码有点绕,要动态的来看,在编译预处理阶段将myfunc函数替换为_myfunc,那么通过-i参数假设看生成的预处理后的文件就会看到只有_myfunc,没有myfunc了。奇技淫巧的做法是,灵活利用C语言编译预处理,在预处理阶段就进行了替换,从而避免了某个函数各种名字的方式,不过这种类型仅限于微改变函数参数仅仅改变函数名字的场景。

2024-04-10 00:23:38 324 1

原创 git修改某个远端服务器的地址的方式以及4种remote(git remote set-url origin xxx、git remote -v)

假设本地有1个远端仓库,默认一般叫origin,原来对应的git url是:[email protected]

2024-04-10 00:11:23 409

原创 再谈Makefile和C的2种变量和3个空间和2种if的工程实践中的常见用法的模板

提笔简要记录方法。

2024-04-09 23:50:25 294 1

原创 C语言奇技淫巧之--“函数指针数组”的类型定义与结构化初始化某一个函数

错(这种定义方式可以定义非函数类型)# 对(函数类型的类型名直接就是在(*)里面enum {//注意一般是使用多个func,比如linux内核,但是很少用函数指针数组,尤其是还包括结构化初始化。

2024-04-09 23:33:33 367

原创 【DPU微知识】NVIDIA-BlueFiled DPU概念之:BFB是什么?

ipmitool工具使用rshim。bfb-install工具。

2024-04-03 08:47:18 866

原创 微知识-git rebase常用的3个场景和2个本质(git rebase -i [parent msgid]、s 压缩、r 修改msg)

git rebase -i xxxx 其中xxx是需要修改的commit的father , -i 是指交互式- 将pick 修改为r 表示修改commit msg- 其他的不要动git rebase的原理是,在交互式界面好比是输入命令,然后把所有需要操作的commit进行一些命令操作。然后在命令行指定的-i xxx 主要是让git rebase自动帮我们从某个commit开始把他的子节点遍历放上去。

2024-04-02 13:20:28 508 1

原创 拥塞控制算法系列之:Swift-谷歌2020年SIGCOM-包级别端到端TIMELY拥塞控制算法

核心要点:其他:参考:https://zhuanlan.zhihu.com/p/566563035https://baike.baidu.com/item/AIMD/10641459?fr=ge_ala

2024-04-01 02:01:36 713 1

原创 Mellanox特性系列之: ZTR(Zero Touch RoCE)技术 是什么?零接触 RoCE 技术,本质是使用RTT不用配置PFC和ECN水位等

如果需要,可以强制使用ZTR-RTTCC,即使RDMA-CM尚未同步状态。通过mlxreg命令来实现。完成上述步骤后,当使用RDMA-CM(RoCE CM)进行连接建立时,将自动使用ZTR-RTTCC。将ROCE_CC_LEGACY_DCQCN设置为0,从而启用ZTR-RTTCC算法。在更改配置后,重置网络设备或者重启主机以使更改生效。

2024-03-31 23:59:56 742

原创 【资讯】Linux 2024-03-10 发布 V6.8 版本--Git对象即将超过1000万

【代码】【资讯】Linux 2024-03-10 发布 V6.8 版本--Git对象即将超过1000万。

2024-03-30 09:34:01 214

原创 Git 中 fork 新仓库的 2 条命令和1个本质以及remote的4个操作(git remote add myrepo xxx.git、git push myrepo --all)

一个本质:remote的name就类比C语言的指针或者服务端的别名。

2024-03-30 08:14:03 764 2

原创 Makefile命令行指定参数传递到C语言文件的4个步骤、2类关键字和2种变量

使用在 命令参数,比如 echo 参数,GCC 参数使用在定义条件分支,比如 ifeq linux 或者 mac使用在定义 relase 或者 debug 发布使用在定义 C 语言cflags有某个功能宏定义开关,C语言根据场景判断是否有这种功能代码进行预编译区分(优势是能够节省代码段)核心:make ifeq 与 else ifeqc ifdef 与 else ifdef。并且ifdef = if defined。

2024-03-28 08:42:58 770

原创 VScode通过 SSH 编辑远程代码的2种方式之sftp(本地修改 push 远端)

很多办公场景的编译环境在云端服务器,并且云端服务器只有 terminal 没有 GUI,对于使用 IDE 工具很不方便,这种场景除了用 vim 等编辑器在远端 terminal 编辑,还可以使用 VScode + sftp 插件来使用本地 IDE 编辑远端,实际使用VScode 的 remote ssh 等方法进行操作。本文重点介绍 sftp 的场景。

2024-03-27 08:43:57 683

原创 【微命令】git 如何撤销已经 commit 的提交?(git reset HEAD~1)

其中HEAD表示最新的一次提交,~1 表示reset到HEAD-1的指针位置,也就是撤销掉第一个提交。这里如果要撤销多个,使用~x,比如撤销掉前面2次提交。此时 HEAD指针指向了最新的提交。

2024-03-21 00:36:53 116

原创 Linux系统服务管理程序systemd的2个命令3个类5个主要参数?

WantedBy=multi-user.target指定服务组。ExecStartPost=xxx启动后执行的命令。ExecStartPre=xxx启动前执行的命令。ExecStopPost=xxx停止后执行的命令。ExecReload=xxx重启时执行的命令。ExecStart=echo ls启动执行。ExecStop=xxx停止时执行的命令。system service 配置域。查看当前服务的状态是否启动等。指服务在哪些服务启动之后。

2024-03-21 00:28:20 718

原创 Linux中如何查看某个库所在的路径和位置的3个方法?(ldconfig locate rpm)

参数p是打印cache。查询rpm包并且显示rpm安装到的位置。基于rpm的系统方法。

2024-03-20 23:53:54 265

原创 Mellanox特性系列之:ASAP2 是什么?(本质OVS硬件卸载)

处理 NIC 硬件中的 OVS 数据平面来卸载 OVS。

2024-03-18 08:45:22 279

翻译版 拥塞控制算法系列之:Swift-谷歌2020年SIGCOM-包级别端到端TIMELY拥塞控制算法

翻译版 拥塞控制算法系列之:Swift-谷歌2020年SIGCOM-包级别端到端TIMELY拥塞控制算法

2024-04-01

Graphviz自动根据文件生成时间序列图脚本和示例demo文件

Graphviz自动根据文件生成时间序列图脚本和示例demo文件

2023-09-13

Graphviz自动根据文件生成时间序列图脚本和示例demo文件

Graphviz自动根据文件生成时间序列图脚本和示例demo文件

2023-09-13

Graphviz-创建年表yearline示例代码.py.zip

Graphviz-创建年表yearline示例代码.py.zip

2023-09-12

c语言函数调用关系图自动生成方法之使用egypt和gcc的-fdump-rtl-expand生成Graphviz

c语言函数调用关系图自动生成方法之使用egypt和gcc的-fdump-rtl-expand生成Graphviz

2023-09-07

代码块-一个简单的Linux内核模块c和makefile代码

代码块-一个简单的Linux内核模块c和makefile代码

2023-08-07

空空如也

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

TA关注的人

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