首页
学习
活动
专区
工具
TVP
发布

深度技术专栏

专栏作者
6
文章
9680
阅读量
9
订阅数
用Rust实现RDMA
RDMA是常用于高性能计算(HPC)领域的高速网络,在存储网络等专用场景也有广泛的用途。RDMA最大的特点是通过软硬件配合,在网络传输数据的时候,完全不需要CPU/内核参与,从而实现高性能的传输网络。最早RDMA要求使用InfiniBand (IB)网络,采用专门的IB网卡和IB交换机。现在RDMA也可以采用以太网交换机,但是还需要专用的IB网卡。虽然也有基于以太网卡用软件实现RDMA的方案,但是这种方案没有性能优势。
王璞
2021-04-06
1.9K0
用BPF实现用户态tracing
BPF是最近Linux内核领域热门的技术。传统的BPF指的是tcpdump命令用于过滤网络包的工具,现在BPF已经得到极大的扩展,不再是Berkeley Packet Filter的缩写对应的简单的网络包过滤工具。 从Kernel 4.9之后,BPF已经成为一个完善的内核扩展工具,BPF在内核里运行一个sandbox,用于执行BPF的字节码(bytecode), 在执行BPF程序前,BPF的检查器会对BPF程序的字节码进行安全检查(比如,指针要先判断不为空后再访问,代码里不能有循环,等等),以保证BPF程序不会导致系统崩溃,因为BPF程序执行时是在内核态。 因此,BPF可以很安全地在内核态执行用户编写的程序,而且有安全保证,这比编写内核模块安全太多了。 正是因为BPF能保证安全,并运行在内核态,可以大大简化很多以前很复杂的事情,目前BPF已经应用于性能分析、网络、安全、驱动、区块链等等领域。
王璞
2020-07-14
2.9K0
垃圾回收机制与无锁化编程(Garbage Collection and Lock-Free Programming)
垃圾回收机制(GC)对大部分开发者来说应该不陌生,特别是Java开发者或多或少都跟GC打过交道。 GC的优点是实现对堆上分配的内存动态回收,避免内存泄漏。但是GC的缺点是对性能有一定影响,特别是stop the world问题, 而且GC什么时候回收内存是不确定的,开发者无法知晓。
王璞
2020-07-14
7460
无锁化编程场景下的垃圾回收机制(二)
上一篇Blog介绍了无锁化编程场景下的一种垃圾回收机制,Epoch-based Memory Reclaimation(EB)。 本篇介绍另一种无锁化编程场景下的垃圾回收机制,Hazard Pointer(HP)。HP也是一种确定型GC。
王璞
2020-07-14
7840
内存顺序(Memory Order)问题(一)
内存顺序,通俗地讲,是关于代码编译成机器指令后的执行顺序问题。内存顺序和编译器、硬件架构密切相关。那为什么会产生内存顺序问题呢?有两方面原因: 一方面,编译器为了优化程序性能,不会完全按照开发者写的代码的顺序来生成机器指令; 另一方面,在程序运行时,为了提高性能,CPU也不完全按照程序的指令顺序执行,比如体系结构里经典的Tomasulo算法。
王璞
2020-07-14
2.2K0
内存顺序(Memory Order)问题(二)
上一篇Blog介绍了内存模型,并介绍了两种内存顺序, memory_order_acquire(Acquire)和memory_order_release(Release)。 个人认为,这两种内存顺序是C++定义的六种内存顺序中最重要的两种, 只有理解了Acquire和Release的语义,才能更好理解其他四种内存顺序的语义。 更进一步,在实际使用场景中,Acquire和Release是最常见的两种内存顺序。
王璞
2020-07-14
1.1K0
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档