
Linux
文章平均质量分 82
尚先生的博客
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言的数组长度能用变量指定吗?
C89即ANSI C,ANSI:美国国家标准学会(American Natinal Standards Institute)C90即ISO C,ISO:国际标准化组织(International Standard Organization)ANSI C 和 ISO C是完全相同的标准,ANSI C最终版本于1989年被批准,故叫C89。ISO C最终版本于1990年被批准,故叫C90。必须是自动变量,即:不能使用static、extern关键字修饰。转载 2024-03-30 19:40:37 · 974 阅读 · 0 评论 -
Valgrind Memcheck 源码分析
Valgrind是用于构建程序动态分析工具的重量级插桩框架。目前Valgrind内置的工具,可用于检测内存管理和线程竞争等等过程中产生的问题,更快速、更准确和更详细地分析所需的程序。其中,Memcheck是valgrind应用最广泛的工具。它是一个重量级的内存检查器,能够发现C或者C++在开发过程中绝大多数导致程序崩溃或者不可预知的行为的内存相关的错误,比如:使用未初始化的内存、使用已释放内存、内存访问越界等。转载 2024-03-14 14:54:15 · 376 阅读 · 0 评论 -
【Linux 创建临时文件 API】编程中的瞬息之光:临时文件的艺术与智慧 tmpnam,tmpfile,mkstemp,mkdtemp等函数解析...
因此,当 str 不为 NULL 时,我们需要确保这个笔记本(数组)有足够的空间来容纳这个路径名,至少要有 L_tmpnam 长度的空间,这个长度是在 stdio.h 文件中定义的常量。在这个过程中,我们不难发现,tmpnam 函数像是我们的记忆,每次调用它都会生成一个新的名字,但如果不将其记录下来,旧的记忆就会被新的覆盖。临时文件,尽管它们的生命周期短暂,但正确和智慧地使用它们,可以在确保效率和安全性的同时,大大简化程序的复杂性。存储方面,应当将临时文件放置在适当的目录中,如系统的临时文件夹。转载 2024-02-29 22:13:40 · 245 阅读 · 0 评论 -
linux之Oops原理及解析
什么是Oops?从语言学的角度说,Oops应该是一个拟声词。当出了点小事故,或者做了比较尴尬的事之后,你可以说"Oops",翻译成中国话就叫做“哎呦”。“哎呦,对不起,对不起,我真不是故意打碎您的杯子的”。看,Oops就是这个意思。在Linux内核开发中的Oops是什么呢?其实,它和上面的解释也没什么本质的差别,只不过说话的主角变成了Linux。当某些比较致命的问题出现时,我们的Linux内核也会抱歉的对我们说:“哎呦(Oops),对不起,我把事情搞砸了”。转载 2024-02-27 15:45:59 · 1268 阅读 · 0 评论 -
C语言--backtrace调用栈信息解决程序崩溃问题总结
有上面的认识后那我们就只需要得到此次libadd.so的加载地址然后用0x7f85839fa5c6这个地址减去libadd.so的加载地址得到的结果再利用addr2line命令就可以正确的得到出错的地方;当这些换到Linux上的C/C++环境时情况将变的稍微复杂一些,通常在这种情况下是通过拿到出问题时产生的core文件然后再利用gdb调试来看到出错时的程序栈信息,这是再好不过的了,但当某些特殊的情况如不正确的系统设置或文件系统出现问题时导致我们没有拿到core文件那我们还有补救的办法吗?转载 2024-02-26 22:59:03 · 1120 阅读 · 0 评论 -
Arch64中va_list/va_start/va_arg/...的实现
可变参函数指的是一个可以接受可变个参数的函数转载 2024-01-22 22:48:14 · 380 阅读 · 0 评论 -
可见性、有序性、原子性
同样,写入数据的顺序也一样。程序不一定是按照顺序执行的,为了提高CPU的利用率,让CPU尽可能多的工作,CPU会在某些语句当中选择"乱序执行"。有,即便是只有单核CPU,在一些比较耗时的操作例如等待网络响应,等待IO等操作时,CPU也是处于待机阶段,如果在这段时间里,有其他线程可以把这个空闲时间利用起来,CPU的利用效率是特别高的,会比单线程执行更快。在修改数据的值时,会首先读一下要修改数据的原值,之后在执行修改操作前看看刚才读的值和内存中现在存储的值相不相同,如果不相同,返回false,不进行操作。原创 2023-12-27 23:37:40 · 495 阅读 · 0 评论 -
SCSI、ISCSI、iSER、NVMe、NVMe-oF、NVMe-oF over RDMA
SCSI、ISCSI、iSER、NVMe、NVMe-oF、NVMe-oF over RDMA原创 2023-03-03 21:35:58 · 2204 阅读 · 0 评论 -
Linux Flame Graphs
火焰图原创 2023-02-28 15:35:17 · 506 阅读 · 0 评论 -
Scons
在scons脚本调试中,输出是一个重要的环节,通过输出我们可以观察调试期间的步骤,便于定位问题转载 2022-11-29 00:15:18 · 480 阅读 · 0 评论 -
Scons环境搭建和编译原理概述及嵌入式开发常用模板
Scons是用python实现的一个类似makefile的软件构建工具。转载 2022-11-29 00:12:53 · 4378 阅读 · 0 评论 -
动态库基本原理和使用方法,-fPIC选项的来龙去脉
使用gcc生成so文件时,一般要加一个-fPIC选项转载 2022-11-25 19:07:01 · 915 阅读 · 0 评论 -
构建和安装rdma-core用户空间库
构建和安装rdma-core用户空间库原创 2022-11-11 21:32:04 · 1245 阅读 · 0 评论 -
CentOS7 编译源码升级内核
CentOS7 编译源码升级内核原创 2022-11-09 22:31:34 · 1473 阅读 · 0 评论 -
Linux 内核编译 LOCALVERSION 配置(分析内核版本号自动添加的“+“号)
Linux 内核编译 LOCALVERSION 配置(分析内核版本号自动添加的"+"号)转载 2022-11-06 22:33:31 · 1337 阅读 · 0 评论 -
CentOS7,非LVM根分区扩容
CentOS7,非LVM根分区扩容步骤转载 2022-11-06 15:33:42 · 358 阅读 · 0 评论 -
CentOS7扩容根分区(LVM)
CentOS7,LVM根分区扩容步骤转载 2022-11-06 15:30:56 · 550 阅读 · 0 评论 -
24. RDMA之Queue Buffer
Buffer,即缓冲区,是用来暂存数据、可以重复利用的存储空间;RDMA中的Queue指的是SQ、RQ、CQ或者是SRQ等等这些队列,其中储存着软硬件之间的任务信息,即WR(WQE)或者WC(CQE)。而Queue Buffer,即按照队列结构使用的缓冲区,指的就是上面这些队列在内存中的存在形式。转载 2022-11-01 22:02:17 · 1338 阅读 · 0 评论 -
23. RDMA之基于CM API的QP间建链
CM这一缩写有多重含义,它既可以指协议,也可以指RDMA网络中的一个管理角色,还可以指编程接口(API)。转载 2022-11-01 22:02:03 · 2595 阅读 · 4 评论 -
22. RDMA之基于Socket API的QP间建链
建链,即建立链接(或者连接)。在RDMA技术中,本端和对端的QP之间在建立连接之后才可以通过RDMA协议进行数据交换。我们可以认为建链是正式进行RDMA通信之前所必须进行的准备工作,在建链的过程中,两个节点间会通过某些方式交换一些用于之后的RDMA通信所必须的参数。转载 2022-11-01 22:01:49 · 1423 阅读 · 0 评论 -
21. RDMA之内存地址基础知识
RDMA技术实现的是对远程内存的直接读写,整个体系都是围绕着内存访问和管理所搭建的。转载 2022-11-01 22:01:20 · 1648 阅读 · 0 评论 -
20. RDMA之Pyverbs(Python Verbs)
Verbs API有多种实现,最基础也是最常见的Verbs API是基于C语言实现的,这套接口被集成在rdma-core,也就是用户态RDMA协议栈中。这些API以ibv_为前缀,比如ibv_create_qp(),ibv_reg_mr()等等。转载 2022-11-01 22:01:04 · 615 阅读 · 0 评论 -
19. RDMA之iWARP & Soft-iWARP
iWARP指的是基于TCP/IP协议栈的RDMA技术,最开始是由RDMA Consortium组织设计的一组协议,最终由IETF(Internet Engineering Task Force)进行了标准化。i转载 2022-10-31 23:03:11 · 1094 阅读 · 0 评论 -
18. RDMA之MPA(Marker PDU Aligned framing)
MPA的全称是Marker PDU(Protocol Data Unit) Aligned framing,其作为适配层,在基于消息的DDP和基于字节流的TCP协议间做转换。转载 2022-10-31 23:02:59 · 584 阅读 · 0 评论 -
17. RDMA之RDMAP(Remote Direct Memory Access Protocol)
RDMAP的全称为Remote Direct Memory Access Protocol,是iWARP协议栈中最靠近用户的一层。向上为中间件或者应用程序提供基于RDMA技术的服务,向下使用DDP(Data Placement Protocol)提供的零拷贝特性。转载 2022-10-31 23:02:41 · 622 阅读 · 0 评论 -
16. RDMA之DDP(Direct Data Placement)
Direct Data Placement,简称为DDP,是iWARP协议栈的核心成员。DDP协议在TCP/SCTP之上实现了了RDMA技术中的零拷贝,即在通信过程中,使接收端的硬件可以直接把收到的数据放置到用户空间的Buffer,从而避免多次在Buffer间的拷贝数据对CPU产生的开销。转载 2022-10-31 23:02:16 · 1417 阅读 · 0 评论 -
15. RDMA之RoCE & Soft-RoCE
Soft-RoCE就是把本来应该卸载到硬件的封包和解析工作,又拿到软件来做。其本身是基于Linux内核的TCP/IP协议栈实现的,网卡本身并不感知收发的数据包是RoCE报文,其驱动程序按照IB规范中的报文格式将用户数据封装成IB传输层报文,然后把报文整体当做数据填入Socket Buffer当中,由网卡进行下一步收发包处理。转载 2022-10-31 23:01:50 · 1839 阅读 · 0 评论 -
14. RDMA之Memory Window
Memory Window简称MW,中文就翻译成内存窗口吧。是一种由用户申请的,用于让远端节点访问本端内存区域的RDMA资源。转载 2022-10-31 23:01:39 · 516 阅读 · 1 评论 -
13. RDMA之用户态与内核态交互
Verbs API分为用户态和内核态,分别以ibv_和ib_作为前缀。转载 2022-10-31 23:01:23 · 1367 阅读 · 0 评论 -
12. RDMA之Verbs
Verbs直译过来是“动词”的意思,它在RDMA领域中有两种含义:1) 由IB规范所描述的一组抽象定义,规定了各厂商的软硬件在各种Verbs下应该执行的动作或者表现出的行为,IB规范并未规定如何编程实现这些Verbs,在这种含义下,Verbs是与操作系统无关的。转载 2022-10-31 23:01:06 · 1068 阅读 · 0 评论 -
11. RDMA之Shared Receive Queue
全称为Shared Receive Queue,直译为共享接收队列。转载 2022-10-31 23:00:42 · 651 阅读 · 0 评论 -
10. RDMA之Completion Queue
CQ意为完成队列,它的作用和WQ(SQ和RQ)相反,硬件通过CQ中的CQE/WC来告诉软件某个WQE/WR的完成情况。转载 2022-10-30 17:13:01 · 1066 阅读 · 0 评论 -
9. RDMA之Queue Pair
QPC全称是Queue Pair Context转载 2022-10-30 17:08:55 · 1741 阅读 · 0 评论 -
8. RDMA之Address Handle
AH全称为Address Handle转载 2022-10-30 17:03:14 · 318 阅读 · 0 评论 -
7. RDMA之Protection Domain
PD全称是Protection Domain,意为"保护域"。转载 2022-10-30 16:54:03 · 364 阅读 · 0 评论 -
6. RDMA之Memory Region
MR全称为Memory Region,指的是由RDMA软件层在内存中规划出的一片区域,用于存放收发的数据。转载 2022-10-30 16:46:09 · 441 阅读 · 0 评论 -
5. RDMA基本服务类型
RDMA领域称其为“服务类型”转载 2022-10-30 16:34:36 · 1207 阅读 · 0 评论 -
4. RDMA操作类型
RDMA独有的操作:WRITE和READ。转载 2022-10-30 16:23:41 · 393 阅读 · 0 评论 -
3. RDMA基本元素
Work Queue简称WQ,是RDMA技术中最重要的概念之一。WQ是一个储存工作请求的队列,为了讲清楚WQ是什么,我们先介绍这个队列中的元素WQE(Work Queue Element,工作队列元素)。转载 2022-10-30 16:06:54 · 972 阅读 · 1 评论 -
2. 比较基于传统以太网与RDMA技术的通信
通过对比一次典型的基于TCP/IP协议栈的以太网和RDMA通信的过程,直观的展示RDMA技术相比传统以太网的优势转载 2022-10-30 15:46:02 · 451 阅读 · 0 评论