<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[DatenLord的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/DatenLord</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; DatenLord]]></copyright><item><title><![CDATA[一次RDMA用户态驱动调试的复盘]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/142212104</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/142212104</guid><author>DatenLord</author><pubDate>Fri, 13 Sep 2024 15:35:41 +0800</pubDate><description><![CDATA[在达坦科技实习期间，笔者开发了一个RDMA用户态驱动，用于与达坦科技自研的BlueRDMA进行交互。整个驱动分为内核态和用户态两个部分，内核部分做的仅仅是将必要的内存空间暴露给用户态，例如将bar空间上的csr(control status register)寄存器映射到了用户态，主要的操作由用户态驱动执行。用户态驱动申请了4个巨页，并分别指定这几个巨页为与硬件交互的Ringbuf。当用户态驱动需要向硬件发送信息（即描述符）时，只需要在内存上写入若干个描述符，然后修改csr寄存器中队列头指针的值。]]></description><category></category></item><item><title><![CDATA[Xline v0.7.0: 一个用于元数据管理的分布式KV存储]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/141689655</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/141689655</guid><author>DatenLord</author><pubDate>Thu, 29 Aug 2024 22:34:02 +0800</pubDate><description><![CDATA[现有的分布式KV存储大多采用Raft共识协议，需要两次RTT才能完成一次请求。当部署在单个数据中心时，节点之间的延迟较低，因此不会对性能产生大的影响。但是，当跨数据中心部署时，节点之间的延迟可能是几十或几百毫秒，此时 Raft 协议将成为性能瓶颈。Curp 协议就是为了解决这个问题而设计的。它可以在命令不冲突的情况下减少一个RTT，从而提高性能。因此，[Feature]CURP WAL (Write-Ahead-Log) 实现：我们设计了一个 Write-Ahead-Log 来保存 curp 的日志条目。]]></description><category></category></item><item><title><![CDATA[DatenLord前沿技术分享 No.40]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/141035105</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/141035105</guid><author>DatenLord</author><pubDate>Thu, 08 Aug 2024 19:55:13 +0800</pubDate><description><![CDATA[达坦科技始终致力于打造高性能 Al+ Cloud 基础设施平台，积极推动AI应用的落地。达坦科技通过软硬件深度融合的方式，提供高性能存储和高性能网络。为 AI 应用提供弹性、便利、经济的基础设施服务，以此满足不同行业客户对 AI+Cloud 的需求。和大家讨论Rust可以为IC design 和verification 带来的优势，以及更广泛的应用场景。将Rust应用于IC design和verification flow中，提高IC design和verification 的生产力和质量。]]></description><category></category></item><item><title><![CDATA[异步运行时IO问题分析]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/140701457</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/140701457</guid><author>DatenLord</author><pubDate>Thu, 25 Jul 2024 22:28:13 +0800</pubDate><description><![CDATA[一般来说，偶尔阻塞Runtime实际上不会对整体性能产生明显影响，例如Tokio实现了work stealing机制，如果一个worker thread被阻塞了，其他的worker threads能够从它的工作队列中偷取任务进行执行，这一定程度上缓解阻塞情况，这对于拥有较多核心的CPU产生的影响是较小的， 而 async-std 中会对阻塞时间较长的任务生成一个新线程，这同样缓解了runtime上偶尔阻塞的问题。persistent_task 是位于关键路径上的一个IO任务，它的优先级应当是最高的。]]></description><category></category></item><item><title><![CDATA[异步运行时IO问题分析]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/140701445</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/140701445</guid><author>DatenLord</author><pubDate>Thu, 25 Jul 2024 22:27:12 +0800</pubDate><description><![CDATA[一般来说，偶尔阻塞Runtime实际上不会对整体性能产生明显影响，例如Tokio实现了work stealing机制，如果一个worker thread被阻塞了，其他的worker threads能够从它的工作队列中偷取任务进行执行，这一定程度上缓解阻塞情况，这对于拥有较多核心的CPU产生的影响是较小的， 而 async-std 中会对阻塞时间较长的任务生成一个新线程，这同样缓解了runtime上偶尔阻塞的问题。persistent_task 是位于关键路径上的一个IO任务，它的优先级应当是最高的。]]></description><category></category></item><item><title><![CDATA[Xline社区会议Call Up：揭秘Xline 0.7版本更新]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/140701286</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/140701286</guid><author>DatenLord</author><pubDate>Thu, 25 Jul 2024 22:16:03 +0800</pubDate><description><![CDATA[为了更全面地向大家介绍Xline的进展，同时促进Xline社区的发展，我们将于召开。]]></description><category></category></item><item><title><![CDATA[Linux下RDMA驱动程序探索系列-2]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/140700937</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/140700937</guid><author>DatenLord</author><pubDate>Thu, 25 Jul 2024 22:02:34 +0800</pubDate><description><![CDATA[由于基本上所有RDMA网卡都是PCIe设备，因此在驱动程序入口执行后，首先要做的是初始化PCIe设备相关的操作，典型的就是调用pci_register_driver向Kernel注册自己所感兴趣的PCIe设备，提供probe回调函数，这样kernel在匹配到驱动所对应的硬件后，就会调用probe函数。这个ib_device_attr类型的结构体是一个拥有40多个字段的结构体，其中主要包含了设备所支持的各种极限参数，例如最大的QP数量、最大的MR数量、最大的PD数量等等这些东西。]]></description><category></category></item><item><title><![CDATA[规模弹性： 管理谷歌的TPUv4机器学习超级计算机（二）]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/139886804</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/139886804</guid><author>DatenLord</author><pubDate>Sat, 22 Jun 2024 19:10:07 +0800</pubDate><description><![CDATA[有趣的是，扭曲环显示出更好的恢复能力，在出现不可用 OCS 的情况下，4x4x8 的性能略有提高。这种平衡在普通环中是不可能实现的。这代表了与我们不同的设计点：与引入分组交换机相比，OCS 简化了 ICI 网络设计，因为它建立了专用物理通道，无需控制共享流量，同时较低的采购价格和待机功率也降低了运营成本[20]。例如，在一个 8x8x8 的环中，将一个数据包从源点（x = 1，y = 0，z = 0）路由到目的地（x = 5，y = 0，z = 0），在 X + 或 X - 方向上可以走 4 跳。]]></description><category></category></item><item><title><![CDATA[规模弹性： 管理谷歌的TPUv4机器学习超级计算机]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/139664482</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/139664482</guid><author>DatenLord</author><pubDate>Thu, 13 Jun 2024 21:19:49 +0800</pubDate><description><![CDATA[为了帮助解决碎片化问题，Borg Prime 还可以选择抢先处理正在运行的工作负载（例如，将多个子cube工作负载迁移到更少的cube中，或将多cube工作负载迁移到不同的 pod 中，以便容纳非常大的工作负载）。需要注意的是，由于连接的 ICI 和 OCS 具有相同的 {dim,index} 参数，如果一个 OCS 不可用，每个cube都会观察到一个具有相同 {dim,index} 参数的 ICI 链接断开。如果没有 TPUv4 基于 OCS 的可重构性，随着计算资源规模的扩大，作业可用性会迅速下降。]]></description><category></category></item><item><title><![CDATA[在 GPU 上实现全规模文件系统加速]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/139390451</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/139390451</guid><author>DatenLord</author><pubDate>Sun, 02 Jun 2024 13:40:26 +0800</pubDate><description><![CDATA[摘要
现代高性能计算和人工智能计算解决方案经常使用 GPU 作为其主要计算能力来源。这就为 GPU 应用程序的存储操作造成了严重的不平衡，因为每一个此类存储操作都必须向 CPU 发出信号并由 CPU 处理。在 GPU4FS 中，我们针对这种不平衡提出了一个彻底的解决方案：将文件系统的实现转移到应用程序中，并在 GPU 上运行完整的文件系统。这需要对从实际存储布局到文件系统接口的整个文件系统栈进行多次更改。此外，这种方法还能将 CPU 从文件系统管理任务中解放出来，从而更有效地利用 CPU。在我们的预极限实现]]></description><category></category></item><item><title><![CDATA[Xline社区会议Call Up｜在 CURP 算法中实现联合共识的安全性]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/139184628</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/139184628</guid><author>DatenLord</author><pubDate>Fri, 24 May 2024 21:14:58 +0800</pubDate><description><![CDATA[在 Xline 的 CURP 系统中，本文深入探讨了 RIFL作为基础设施，为 RPC 提供 Exactly-Once 语义的实现及相关问题的解决方案。本文讲解了Xline中重构后命令执行流程的新设计，以及我们是如何优化Xline的性能的。Xline的建设需要每一位对此感兴趣且愿意付出的你们的参与，我们期待你们的加入。为了更全面地向大家介绍Xline的进展，同时促进Xline社区的发展，我们将于。]]></description><category></category></item><item><title><![CDATA[Xline 0.7重构性能分析总述]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/139009845</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/139009845</guid><author>DatenLord</author><pubDate>Fri, 17 May 2024 17:24:56 +0800</pubDate><description><![CDATA[这个WAL的实现非常简单，整个存储使用多个WAL文件，log的追加的实现就是单个文件的追加，这样所有的log追加操作都是文件的顺序写入，效率很高，并且不存在写放大的现象。更致命的是，tokio的async模型使用的是一个小的固定线程池作为workers，由于Xline中使用的是同步锁，一旦一个worker线程持有这个锁的时间过长，那么就会导致其余的worker线程都进入休眠状态，这些worker线程不仅无法更新这个数据结构，它们也无法执行其他任务，形成了一个锁车队。这样就导致文件写入的高延迟现象。]]></description><category></category></item><item><title><![CDATA[达坦科技@了你，并邀请你参加2024开源之夏！]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/138666881</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/138666881</guid><author>DatenLord</author><pubDate>Fri, 10 May 2024 15:04:27 +0800</pubDate><description><![CDATA[同学们通过参与“开源之夏”的活动，在开源项目导师的指导下，不但可以丰富项目实践经验，提升项目开发的技能，而且可以与开源项目的开发者进行深度的交流，以一种最直接的方式了解开源，深入开源，为后续的学业方向提供参考，职业发展积累人脉。本项目需要为开源RDMA网卡blue-rdma编写对应的内核态及用户态驱动程序，从而使之能够支持对N卡或A卡显存进行访问的能力。达坦科技自开源之夏创办首期起每年参与，积极鼓励在校学生积极参与开源软件的开发维护，培养和发掘更多优秀的开发者。的方式，提供高性能存储和高性能网络。]]></description><category></category></item><item><title><![CDATA[常见设计模式及其Rust实现]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/138343742</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/138343742</guid><author>DatenLord</author><pubDate>Tue, 30 Apr 2024 13:58:02 +0800</pubDate><description><![CDATA[定义一个接口来创建几种不同种类的类，其中每个种类可能有若干相互依赖的组件。用户无需指定需要用哪些特定的组件。当需要创建一组相关或依赖的对象时，会使用这种方式。]]></description><category></category></item><item><title><![CDATA[Xline中区间树实现小结]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/138131714</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/138131714</guid><author>DatenLord</author><pubDate>Tue, 23 Apr 2024 16:38:42 +0800</pubDate><description><![CDATA[需要注意的是， 我们需要同时更新与最后一个节点有关节点的指针， 因为它的位置发生了变化。在petgraph的图实现中， 这个操作可能是很耗时的， 因为一个节点可能会连接多条边， 但是在我们的树用例中， 我们只需要更新这个节点的父亲/左孩子/右孩子总共3个节点， 因此这个操作是 O(1) 的， 这样就非常高效的解决了节点删除的问题。GhostCell 的设计概念是将对数据操作的权限和数据本身分开， 那么对于一种数据， 数据 T 本身是一个类型， 而它的权限同样也是是一个具体的类型， 记为 P_t。]]></description><category></category></item><item><title><![CDATA[Linux下RDMA驱动程序探索系列-1]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/137774896</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/137774896</guid><author>DatenLord</author><pubDate>Mon, 15 Apr 2024 11:42:41 +0800</pubDate><description><![CDATA[为了便于刚接触RDMA的读者阅读本系列文章，首先对RDMA的概念做一个简单的介绍。RDMA是Remote Direct Memory Access的缩写。在介绍RDMA之前，先简单介绍一下更为人所熟知的DMA技术，DMA技术的目的是为了解放CPU的算力，让硬件有能力绕开CPU自己去完成主存（Main Memory）和外设存储器之间的简单而枯燥的数据搬运工作。比较常见的DMA操作是连接在PCIe总线上的设备（如网卡、显卡等）自己主动发起对计算机主存的读写访问操作。]]></description><category></category></item><item><title><![CDATA[来get属于你的达坦科技令人心动的offer吧！]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/137411429</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/137411429</guid><author>DatenLord</author><pubDate>Fri, 05 Apr 2024 22:38:45 +0800</pubDate><description><![CDATA[达坦科技创始团队均来自谷歌、微软、阿里等知名科技公司，团队成员都是一群喜欢并勇于探索前沿技术的同学，大家因为对技术的热爱而聚到一起。2. 负责持续优化系统架构，提供高并发的数据请求分析的处理能力，提高系统的容灾容错能力，保证系统的可运维、高可用性、高可靠性。1. 负责大模型平台后端的开发研发，根据产品和项目计划按时完成功能模块的架构设计、编码、测试的全流程工作。4. 熟悉Linux操作，了解Shell脚本，有Linux下的多线程编程经验，有性能调优经验。]]></description><category></category></item><item><title><![CDATA[来get属于你的达坦科技令人心动的offer吧！]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/137411389</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/137411389</guid><author>DatenLord</author><pubDate>Fri, 05 Apr 2024 22:36:43 +0800</pubDate><description><![CDATA[达坦科技创始团队均来自谷歌、微软、阿里等知名科技公司，团队成员都是一群喜欢并勇于探索前沿技术的同学，大家因为对技术的热爱而聚到一起。2. 负责持续优化系统架构，提供高并发的数据请求分析的处理能力，提高系统的容灾容错能力，保证系统的可运维、高可用性、高可靠性。1. 负责大模型平台后端的开发研发，根据产品和项目计划按时完成功能模块的架构设计、编码、测试的全流程工作。4. 熟悉Linux操作，了解Shell脚本，有Linux下的多线程编程经验，有性能调优经验。]]></description><category></category></item><item><title><![CDATA[来get属于你的达坦科技令人心动的offer吧！]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/137411358</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/137411358</guid><author>DatenLord</author><pubDate>Fri, 05 Apr 2024 22:35:35 +0800</pubDate><description><![CDATA[达坦科技创始团队均来自谷歌、微软、阿里等知名科技公司，团队成员都是一群喜欢并勇于探索前沿技术的同学，大家因为对技术的热爱而聚到一起。2. 负责持续优化系统架构，提供高并发的数据请求分析的处理能力，提高系统的容灾容错能力，保证系统的可运维、高可用性、高可靠性。1. 负责大模型平台后端的开发研发，根据产品和项目计划按时完成功能模块的架构设计、编码、测试的全流程工作。4. 熟悉Linux操作，了解Shell脚本，有Linux下的多线程编程经验，有性能调优经验。]]></description><category></category></item><item><title><![CDATA[来get属于你的达坦科技令人心动的offer吧！]]></title><link>https://blog.youkuaiyun.com/DatenLord/article/details/137411329</link><guid>https://blog.youkuaiyun.com/DatenLord/article/details/137411329</guid><author>DatenLord</author><pubDate>Fri, 05 Apr 2024 22:34:17 +0800</pubDate><description><![CDATA[达坦科技创始团队均来自谷歌、微软、阿里等知名科技公司，团队成员都是一群喜欢并勇于探索前沿技术的同学，大家因为对技术的热爱而聚到一起。2. 负责持续优化系统架构，提供高并发的数据请求分析的处理能力，提高系统的容灾容错能力，保证系统的可运维、高可用性、高可靠性。1. 负责大模型平台后端的开发研发，根据产品和项目计划按时完成功能模块的架构设计、编码、测试的全流程工作。4. 熟悉Linux操作，了解Shell脚本，有Linux下的多线程编程经验，有性能调优经验。]]></description><category></category></item></channel></rss>