自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大隐隐于野

点滴记录,学习与分享。

  • 博客(580)
  • 收藏
  • 关注

原创 字节veRoCE传输协议

同时,在云网络的发展下,通用计算、存储等业务也对RDMA组网提出了更高的要求。且不支持多路径传输,易导致ECMP冲突进而造成带宽浪费。在 2% 丢包率下,veRoCE 的有效吞吐仍能达到网卡带宽的约 95.7% 左右,而 RoCEv2 在这一场景下因为丢包过多而通信中断。veRoCE注重兼容性和易用性,支持通用的verbs接口,消息语义与保序模型和RoCEv2一致,业务可以无缝切换。在此背景下,字节跳动推出自研高性能传输协议veRoCE,从源头解决RoCEv2的遗留问题,为大规模GPU集群通信提供更优解。

2025-12-25 09:30:40 345

原创 SMC-R透明加速TCP技术,在Redis场景下的应用实践

基于SMC-R的高性能、透明替换等优势,适用于网络通信占比高的场景,在Redis等高性能数据查询与处理的场景,SMC-R为应用提供无侵入式透明替换TCP协议栈的能力,无需应用二次开发和适配,即可为应用提升QPS(Queries Per Second),在Redis应用场景下(64字节、8线程)可提升至60%。在真实场景中,常常需要高性能但是并不通用的用户态协议栈,亦或是通用、更高性能更低时延的方案,但是基于传统以太网卡的方案很难有大幅度的提升,更多是基于硬件的红利,例如 100G/400G 网络。

2025-12-03 13:17:38 490

原创 SMC-R加速TCP实践

SMC-R是一种优雅的加速后端的方法,可以不改动代码加速应用。缺点是会走一次内核,性能和原生rdma应用差了一点,但是如果实现SMC-R是在纯用户态(猜测阿里的netAcc即是如此实现)则没有损耗。

2025-12-01 20:30:12 1015

原创 解读SMC-R:透明无感提升云上 TCP 应用网络性能

不过,完全兼容 socket 接口就意味着需要牺牲极致的 RDMA 性能 (因为用户态 RDMA 程序可以做到数据路径旁路内核与零拷贝,而 SMC-R 为了兼容 socket 接口,无法实现零拷贝),但这也换来兼容与易用,以及对比 TCP 协议栈的透明性能提升。其中,RoCE 作为在高性能与高成本中权衡的方案,在使用 RDMA 的同时兼容以太网协议,既保证了不错的网络性能,同时也降低了网络组建成本,因此倍受企业青睐,Linux 上游社区版本的 SMC-R 也因此使用。

2025-12-01 20:20:04 1077

原创 调整网卡队列深度

队列深度是网卡性能调优的重要参数。通过ethtool -g查看,ethtool -G设置。需结合实际业务场景进行测试调整,找到吞吐与延迟的最佳平衡点。

2025-11-20 18:33:47 145

原创 网卡中断聚合

在高速网络环境下,网卡每接收到一个数据包,理论上都要向 CPU 发送一次中断信号,通知操作系统有新数据需要处理。如果数据包很多(比如万兆网卡),中断次数会非常频繁,导致 CPU 负载过高,影响整体性能。中断聚合的作用是:将多个数据包的中断合并为一次,减少 CPU 响应中断的次数,从而提高系统性能和网络吞吐量。网卡中断聚合是一种通过减少中断次数来提升网络性能的技术,适合高吞吐量场景,但需要根据业务需求合理设置参数,避免影响实时性。

2025-11-20 18:32:50 95

原创 使能网卡 LRO(Large Receive Offload)

是一种网卡特性,可以在接收端将多个 TCP 包合并为一个更大的缓冲区,减少 CPU 处理包的次数,提高网络接收性能,常用于高吞吐量场景(如服务器、大文件传输等)。如果你有具体的网卡型号或使用场景,可以进一步说明,我可以帮你查更详细的设置方法!

2025-11-20 18:31:33 113

原创 RDMA拥塞控制之CNP

好的,下面详细解释**CNP(Congestion Notification Packet,拥塞通知包)**的原理,主要用于RDMA over Converged Ethernet v2(RoCE v2)环境下的数据中心无损以太网流控。- 源端RDMA栈收到带有ECN反馈的信息后,会生成一个特殊的**CNP包**(UDP端口4791,RoCE v2协议)。- **CNP**是RoCE v2专用的拥塞通知包,属于链路层/传输层之间的机制,只对RDMA流量生效。

2025-11-13 18:01:31 595

原创 Linux实例网络带宽使用率较高问题的排查与处理

使用sar来监控网络流量的命令格式如下。

2025-11-10 18:07:51 864

原创 从零开始理解和编写LLM中的KV缓存

简而言之,KV缓存存储中间的键值对(K)和值对(V)计算结果,以便在推理过程中(训练之后)重复使用,从而显著提高文本生成速度。:每个新标记都会添加到键值缓存中。请记住,虽然我在这里优先考虑的是代码的清晰度和可读性而非效率,但关键在于,实际应用中往往需要周全的优化,例如预先分配内存或应用滑动窗口缓存来有效管理内存增长。在下图(使用缓存)中,从键值缓存中检索先前计算过的键值,避免重复计算,从而加快生成速度。下一章会训练模型,你可以使用训练好的模型的键值缓存(但是,键值缓存仅用于推理阶段)来生成连贯的文本。

2025-11-10 14:38:59 1077

原创 Understanding mlx5 ethtool Counters

larger MTUlarger MTU。

2025-11-06 11:42:35 754

原创 lstopo 查看物理硬件拓扑

lstopo是(Hardware Locality)工具包中的一个命令行工具,用于展示和分析服务器的,特别是 CPU、内存、NUMA 节点、PCI 设备等的层级关系。

2025-11-04 20:01:23 297

原创 ethtool 中断聚合

你问的是(Interrupt Coalescing),这是网卡驱动层的一个重要性能调优手段。

2025-11-04 19:56:01 405

原创 tcp 丢包分析

网卡丢包:网卡驱动丢包:内核丢包:

2025-11-04 19:54:24 524

原创 find the suitable size for SST

【代码】find the suitable size for SST。

2025-11-04 16:15:07 151

原创 tcp large-receive-offload

这减少了 CPU 需要处理的数据包数量和相关的中断次数,从而降低了 CPU 开销。,由网卡驱动程序或硬件将多个传入的、符合 MTU 大小的网络数据包聚合成一个。是一种接收端性能优化技术。它的作用是在数据到达 CPU 的网络协议栈。(或者说,用户请求开启它,但操作并未成功)。请谨慎使用此类代码。请谨慎使用此类代码。

2025-11-03 20:34:52 387

原创 High-performance orphan child DAOS and Enakta Labs

DAOS is the now-unwanted parallel file system offspring of Intel, back in its Optane era, and now, with its high performance is being resuscitated by Enakta Labs and other members of the DAOS Foundation.We wrote about DAOS, the Distributed Asynchronous Obj

2025-11-03 13:06:22 867

原创 高性能“孤儿“DAOS与Enakta Labs的复兴之路

作为开源并行文件系统,DAOS必须在众多竞争产品中争夺关注度,包括Storage Scale(IBM大力发展的GFS)、Lustre等重量级产品,以及BeeGFS、Quobyte和VDURA的PanFS。由于DAOS是开源的,不存在厂商锁定问题,而且可以说它比竞争软件有更好的带宽和延迟数据,这意味着它能让昂贵的GPU集群保持更高的利用率。DAOS是英特尔在Optane时代开发的并行文件系统,如今这个"不受待见"的产品正凭借其卓越性能被Enakta Labs和DAOS基金会的其他成员重新激活。

2025-11-03 11:25:37 285

原创 mellanox网卡,rdma本地到本地流量,是否走卡?还是走内存拷贝?

通常情况下,RDMA(远程直接内存访问)是为了实现跨主机的高效数据传输而设计的。对于同一个Mellanox网卡上的RDMA本地到本地(local loopback)流量,这也正是RDMA在本地通信场景下依然具有性能优势的关键所在。2. RDMA本地回环(Loopback)的工作机制。1. RDMA的传统工作模式。

2025-10-30 18:35:49 322

原创 tcp问题排查

3、 内核缓冲区:netstat -nalp|grep 106831 |grep -v "0 0"4、 拥塞控制: ss -antim dst 6.108.207.5 dport 9006。

2025-10-30 14:30:21 127

原创 linux设置网卡队列深度

队列深度(Queue Depth)指的是网卡能够处理的数据包队列的长度。适当调整队列深度可以减少在网络流量高峰时因队列溢出而导致丢包,从而提高网络性能。的最大支持队列深度是4096,而当前设置的接收(RX)和发送(TX)队列深度是2048。命令来查看和设置网卡的硬件队列深度,也称为环形缓冲区(Ring Buffer)大小。命令查看网卡当前的环形缓冲区设置以及预设的最大值。命令来设置网卡的队列深度。请谨慎使用此类代码。请谨慎使用此类代码。请谨慎使用此类代码。请谨慎使用此类代码。请谨慎使用此类代码。

2025-10-29 14:27:16 417

原创 使用內置多種加速器的英特爾至強可擴展處理器實現性能升級

如果每次需要建立新功能時都可以利用已經內置於 CPU 的技術,而無需構建專門的工作負載解決方案,那將會是怎樣一番情景?有英特爾® 至強® 可擴展處理器,您就可以做到這一點。這些值得信賴且承擔著運行您所有工作負載之責的 CPU 憑藉可為多種新興工作負載帶來更高性能的內置英特爾® 加速引擎,將全力滿足數據中心不斷增長的需求。在本指南中,我們將探討這些專用的內置加速器如何為 AI、安全、科學計算、網絡、數據分析和存儲等當下要求嚴苛的工作負載提供有力支持。無論是將英特爾® 至強® 可擴展處理器用於處理本地工作負載,

2025-09-11 09:51:05 368

原创 spdk idxd driver

【代码】spdk idxd driver。

2025-09-11 09:49:47 347

原创 DapuStor 正式推出高达 64TB 的高容量 QLC eSSD

当主机 IO 写入小于 16 KB(例如 4 KB)时,FTL 会额外读取 12 KB 与 4 KB 合并,形成一个 16 KB 的 NAND 写入块,导致 4 倍的写入放大系数 (WAF),影响 SSD 的性能和耐用性。相反,当主机写入大小匹配或为映射粒度的倍数时(如图所示),IO 可以直接写入物理块,不会产生写入放大。虽然这需要更高级的上层管理,但它带来了显著的优势:在相同容量下,16 KB 映射版本所需的 DRAM 仅为 4 KB 版本所需 DRAM 的四分之一,突破了容量限制。

2025-09-10 16:03:51 835

原创 文件系统中的核心数据结构

代码语言:javascript。代码语言:javascript。代码语言:javascript。代码语言:javascript。代码语言:javascript。

2025-08-27 18:46:21 418

原创 linux io路径图

2025-08-27 13:46:00 480

原创 [论文笔记] WiscKey: Separating Keys from Values in SSD-Conscious Storage

WiscKey 的核心思想是将数据中的 Key 和 Value 分离,只在 LSM-Tree 中有序存储 Key,而将 Value 存放在单独的 Log 中。当 LSM-Tree 进行 compaction 时,只会对 Key 进行排序和重写,不会影响到没有改变的 Value,也就显著降低了写放大将 Value 分离后,LSM-Tree 本身会大幅减小,所以对应磁盘中的层级会更少,可以减少查询时从磁盘读取的次数,并且可以更好的利用缓存的效果。

2025-08-15 15:56:04 963 1

原创 使用jeprof定位内存泄漏

本文将介绍基于jeprof定位内存泄漏问题,支持缓慢内存泄漏场景、瞬间oom场景等。jeprof是jemalloc提供的一个内存优化的工具,jemalloc是facebook开源的内存管理工具,类似ptmalloc和tcmalloc,在多线程场景具有较好的性能。默认情况下编译jemalloc后并没有jeprof工具,需要在编译时添加参数,然后在编译目录的bin目录中就能找到jeprof程序。开启prof功能的jemalloc根据环境变量MALLOC_CONF和mallctl接口操作prof功能。

2025-08-07 13:53:11 941

原创 RocksDB关键设计详解

一般默认的Block Cache 中存储的值是未压缩的,而用户可以再指定一个 Block Cache,里面的数据可以是压缩的。章节里提到 “block 是数据存储和传递的基本单元”,RocksDB 的数据是一个 range 的 key-value 构成一个 Region,根据局部性原理每次访问一个 Region 的 key 的时候,有很多概率会访问其相邻的 key,每个 Region 的 keys 放在一个 block 里,多个 Region 的 keys 放在多个 block 里。

2025-07-31 16:08:30 930

原创 linux下比较高效的时钟TSC Ticker

TSC:适合高精度、低延迟的时间测量,直接依赖于 CPU 的特性。主要用于性能分析和时间测量。Ticker:适合系统级的时间管理,提供周期性中断,用于实现操作系统的调度和时间片管理。在选择使用 TSC 还是 Ticker 时,需要根据具体的应用需求和系统环境进行权衡。如果需要高精度和低开销的时间测量,TSC 是一个不错的选择;如果需要系统级的时间管理和调度,Ticker 是更合适的工具。

2025-07-31 15:39:33 476

原创 SkipList跳跃表原理及其优缺点详解

skiplist,翻译成中文,可以翻译成“跳表”或“跳跃表”,指的就是除了最下面第1层链表之外,它会产生若干层稀疏的链表,这些链表里面的指针故意跳过了一些节点(而且越高层的链表跳过的节点越多)。实际上,按照上面生成链表的方式,上面每一层链表的节点个数,是下面一层的节点个数的一半,这样查找过程就非常类似于一个二分查找,使得查找的时间复杂度可以降低到。在分析之前,我们还需要着重指出的是,执行插入操作时计算随机数的过程,是一个很关键的过程,它对skiplist的统计特性有着很重要的影响。也就是说,时间复杂度为。

2025-07-31 14:05:57 216

原创 TCMalloc 内存分配原理简析

为啥要介绍TCMalloc?因为golang的内存分配算法绝大部分都是来自TCMalloc,golang只改动了其中的一小部分。所以要理解golang内存分配算法,就要先了解下TCMalloc,为后面分析golang内存做一做功课。tcmalloc是google开发的内存分配算法库,最开始它是作为google的一个性能工具库perftools的一部分。TCMalloc是用来替代传统的malloc内存分配函数。它有减少内存碎片,适用于多核,更好的并行性支持等特性。

2025-07-29 18:25:31 775

原创 粘包拆包问题:如何获取一个完整的网络包?

本节课我们详细讨论了 TCP 中的拆包/粘包问题,以及如何通过应用层的通信协议来解决拆包/粘包问题。其中基于消息长度 + 消息内容的变长协议是项目开发中最常用的一种方法,需要我们重点掌握,例如开源中间件 Dubbo、RocketMQ 等都基于该方法自定义了自己的通信协议,下节课我们将一起学习如何设计高效、可扩展、易维护的自定义网络通信协议。

2025-07-29 17:49:38 672

原创 高性能内存分配器 jemalloc 基本原理

内存管理是每个高阶程序员的必备知识,万变不离其宗,jemalloc 的思想在很多场景都非常适用,在 Redis、Netty 等知名的高性能组件中都有它的原型,你会发现它们的实现思路都是类似的,申请大块内存,避免“细水长流”。趁热打铁吧,下节课我们将继续学习 Netty 是如何设计高性能的内存管理的。

2025-07-29 17:31:56 940

原创 Docker多主机网络连接:实现跨主机通信

默认情况下,Docker 使用桥接网络模式,将容器连接到一个共享网桥。然而,在分布式环境中,可能需要将容器连接到不同的主机上,并进行跨主机通信。Overlay 网络是 Docker 提供的一种内置网络插件,用于在跨主机环境中连接容器。为实现跨主机通信,Docker 提供了多种网络连接方式,包括 Overlay 网络、MacVLAN 网络和第三方网络插件。要创建 Overlay 网络,需要先在一个主机上作为 Swarm Manager 启动一个 Docker Swarm,然后在其他主机上加入 Swarm。

2025-07-24 09:51:24 436

原创 blktrace

blktrace是一个用于跟踪和分析 Linux 块设备 I/O 操作的工具。它允许用户捕获块设备的 I/O 请求,并提供详细的 I/O 活动信息。这对于性能分析、调试和优化存储系统非常有用。

2025-07-11 13:37:36 574

原创 bpftrace跟踪文件系统调用

/ 跟踪文件打开(包括创建)操作。// 跟踪文件状态检查操作。// 跟踪文件打开操作。// 跟踪文件读取操作。// 跟踪文件删除操作。

2025-07-10 10:53:15 358

原创 bpftrace统计mmap调用时延

要使用bpftrace统计mmap调用的时延,可以编写一个bpftrace脚本来跟踪mmap系统调用的进入和退出事件,并计算两者之间的时间差。以下是一个示例脚本,用于统计mmap。

2025-07-04 13:38:39 329

原创 关闭超线程

比较新的内核,通过Simultaneous Multithreading (SMT) 实现超线程管理。1. 查看smt的状态:1=>激活状态,0=> 关闭状态。2. 改变SMT状态。

2025-05-15 16:25:33 359

原创 编译器调优手段

编译器优化选项能够在编译阶段完成代码的优化,下面列举了常用的优化编译选项及其优化原理,在一些场景下能够大幅提高程序的运行性能。

2025-04-27 17:50:33 1496

空空如也

空空如也

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

TA关注的人

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