diff --git a/404.html b/404.html index 3a41776b..455026b9 100644 --- a/404.html +++ b/404.html @@ -86,16 +86,16 @@
存储
+存储
+存储
+事件和事件队列
+DAOS API 函数可以在阻塞或非阻塞模式下使用。 这是通过传递给每个 API 调用的指向 DAOS 事件的指针来确定的:如果 NULL 表示操作将被阻塞。 操作完成后会返回。 所有失败情况的错误码都将通过API函数本身的返回码返回。 如果使用有效的事件,则该操作将以非阻塞模式运行,并在内部调度程序中调度该操作以及将 RPC 提交到底层堆栈后立即返回。 如果调度成功,则操作的返回值为success,但并不表示实际操作成功。 返回时可以捕获的错误要么是无效参数,要么是调度问题。 当事件完成时,操作的实际返回代码将在事件错误代码 (event.ev_error) 中提供。 必须首先通过单独的 API 调用创建要使用的有效事件。 为了允许用户一次跟踪多个事件,可以将事件创建为事件队列的一部分,事件队列基本上是可以一起进行和轮询的事件的集合。 事件队列还在内部为所有 DAOS 任务创建一个单独的任务调度程序以及一个新的网络上下文。 在某些网络提供商上,网络上下文创建是一项昂贵的操作,因此用户应尝试限制在 DAOS 之上的应用程序或 IO 中间件库中创建的事件队列的数量。 或者,可以在没有事件队列的情况下创建事件,并单独跟踪。 在这种情况下,对于阻塞操作,将使用内部全局任务调度程序和网络上下文来代替为事件队列创建的独立任务调度程序和网络上下文。 事件完成后,它可以重新用于另一个 DAOS API 调用,以最大限度地减少 DAOS 库内事件创建和分配的需要
+DAOS Task API 提供了一种以非阻塞方式使用 DAOS API 的替代方法,同时在 DAOS API 操作之间构建任务依赖树。 这对于使用 DAOS 并需要构建彼此之间具有依赖关系(N-1、1-N、N-N)的 DAOS 操作计划的应用程序和中间件库非常有用
+要利用任务 API,用户需要创建一个调度程序,其中可以创建 DAOS 任务作为其中的一部分。 任务 API 足够通用,允许用户混合 DAOS 特定任务(通过 DAOS 任务 API)和其他用户定义的任务,并在这些任务之间添加依赖关系
+有关如何在客户端库中使用 TSE 的更多详细信息,请参阅 TSE 内部文档(https://github.com/ssbandjl/daos/blob/master/src/common/README.md)以获取更多详细信息
++ +
+以DAOS用户态文件系统dfuse为例
+在初始化客户端库中初始化事件队列, 关联全局网络上下文, 设置调度器
+启动文件系统中注册了SLAB, 绑定事件队列和事件, 参考: daos_event_init
+开启轮训线程dfuse_progress_thread, 参考daos_eq_poll
+文件系统执行写
+客户端写数据:xb/write.c -> write(fd, direct_write_buf, BUF_SIZE)
+write -> dfuse_cb_write 回调写 src/client/dfuse/fuse3
+
封装ev, 并将ev传下去: dfs_write(oh->doh_dfs, oh->doh_obj, &ev->de_sgl, position, &ev->de_ev)
+
+
|
+
+
|
与tse结合构造task, 调度task
+网络回复后, 在轮训线程中trigger到, 拿到ev和task, 逐层向上级执行回调函数, 最终执行业务回调
+
+
|
+
+
|
DAOS客户端API_事件和事件队列及任务调度引擎: https://github.com/ssbandjl/daos/tree/master/src/client/api
+博客: https://logread.cn | https://blog.csdn.net/ssbandjl | https://cloud.tencent.com/developer/user/5060293/articles
+weixin: ssbandjl
+公众号: 云原生云
++ +
+ +存储
+TSE 是一个通用库,用于创建具有函数回调的通用任务,可选地添加这些任务之间的依赖关系,并将它们安排在一个引擎中,该引擎按照插入它们的依赖关系图确定的顺序执行这些任务。任务依赖图是调度程序的组成部分,允许用户创建多个任务并以非阻塞方式进行。
+TSE 不是 DAOS 特定的,但曾经是 DAOS 核心的一部分,后来作为独立 API 被提取到 common src 中。API 是通用的,允许在没有任何 DAOS 特定功能的引擎中创建任务。DAOS 库确实提供了一个构建在 TSE 之上的任务 API。有关这方面的更多信息,请参见此处(https://github.com/ssbandjl/daos/blob/master/src/client/api/README.md)。此外,DAOS 在内部使用 TSE 来跟踪和处理与 API 事件关联的所有 API 任务,并且在某些情况下,调度与单个 API 任务相对应的多个飞行中的“子”任务,并添加对该任务的依赖以进行跟踪所有那些飞行中的“子”任务。DAOS 库中的 Array API 和具有多个副本的对象更新就是一个例子。
+调度程序 API 允许用户创建通用调度程序并向其添加任务。在创建调度器时,用户可以注册一个完成回调,以便在调度器完成时调用。
+添加到调度程序的任务不会自行进行。必须在调度程序上显式调用进度函数 (daos_sched_progress) 才能在引擎中的任务上取得进展。用户可以在他们的程序中偶尔调用这个进度函数,或者可以派生一个重复调用进度函数的线程。
+任务 API 允许创建具有通用主体功能的任务并将它们添加到调度程序。一旦在调度程序中创建了一个任务,如果没有用户对任务调度函数的显式调用,它就不会被实际调度运行,除非它是任务依赖关系图的一部分,在这种情况下,显式调度调用只需要图中的第一个任务。创建任务后,用户可以为任务注册任意数量的依赖项,这些依赖项需要在计划运行之前完成。此外,用户将能够在任务上注册准备和完成回调:
+任务 API 上的其他几个功能可以支持:
+有关该功能的更多详细信息,请参见此处DAOS 代码中的 TSE 头文件(https://github.com/ssbandjl/daos/blob/master/src/include/daos/tse.h)
++ +
+
+
|
+
+
|
DAOS公共模块: https://github.com/ssbandjl/daos/tree/master/src/common
+DAOS内部组件: https://github.com/ssbandjl/daos/blob/xb/docs_xb/DAOS%E5%86%85%E9%83%A8%E7%BB%93%E6%9E%84.md
+博客: https://logread.cn | https://blog.csdn.net/ssbandjl | https://cloud.tencent.com/developer/user/5060293/articles
+weixin: ssbandjl
+公众号: 云原生云
++ +
+ +https://logread.cn/post/study/summary/
+P99 CONF 大会(P99分位数, 极致)是面向工程师和由工程师举办的跨行业虚拟活动,以低延迟、高性能设计为中心, 突出低延迟、高性能分布式计算所需的工程挑战和创造性解决方案
P99大会: https://www.p99conf.io/on-demand/
Mochi 项目是阿贡国家实验室、洛斯阿拉莫斯国家实验室、卡内基梅隆大学和 HDF 集团之间的合作。 该项目的目标是探索一种软件定义的存储方法,用于组合存储服务,为极端规模的科学应用程序提供新级别的功能、性能和可靠性
Mochi(麻薯): https://mochi.readthedocs.io/en/latest/
linux内核文档: https://www.kernel.org/doc/html/latest
+linux内存管理: https://www.kernel.org/doc/gorman/html/understand/
centos_内核编译: https://wiki.centos.org/HowTos
linux内核makefile和官方文档: https://www.kernel.org/doc/html/latest/kbuild/makefiles.html
https://docs.kernel.org/kbuild/makefiles.html
@@ -240,6 +244,9 @@bpftrace:
官方教程,指南: https://github.com/iovisor/bpftrace/blob/master/docs/reference_guide.md
动态调试: https://www.kernel.org/doc/html/v4.14/admin-guide/dynamic-debug-howto.html
+中国Unix操作系统: http://blog.chinaunix.net/os.html
+函数调用栈: https://ivanzz1001.github.io/records/post/linux/2017/10/18/linux-function_callstack_part1
+linux内核: https://ivanzz1001.github.io/records/post/kernel/2020/03/31/kernel_intro_part1
华为存储: https://e.huawei.com/cn/material/MaterialList?id={A246BE8A-D1A6-4AA6-852F-16AD3C4BC7AA}
存储技术最前线: nvme, ceph, spdk, 虚拟化汇总
@@ -249,6 +256,7 @@存储随笔《NVMe专题》大合集: https://memory-logger.blog.csdn.net/article/details/76136138
闪存和存储: https://www.techtarget.com/searchstorage/resources/Flash-memory-and-storage
+存储之道: https://blog.51cto.com/alanwu/category4
redis_rocksdb_leveldb_scylladb_raft: https://youjiali1995.github.io/categories/
ceph博客: https://ceph.io/en/news/blog
ceph专栏(黑桃): https://ivanzz1001.github.io/records/categories/#ceph
+ceph专栏(): https://www.dovefi.com/post/
+ceph专栏(知乎): https://www.zhihu.com/column/c_1661407683897901056
+ceph管理手册(红帽): https://access.redhat.com/documentation/en-us/red_hat_ceph_storage/1.3/html/administration_guide/index
项目计划: https://daosio.atlassian.net/wiki/spaces/DC/pages/4836661105/Roadmap
设计文档: https://daosio.atlassian.net/wiki/spaces/DC/pages/4806836263/Resources
@@ -281,6 +292,8 @@tvp文章: https://cloud.tencent.com/developer/article/1820349
rdma mellanox ofed驱动编译安装部署: https://github.com/opencurve/curve-meetup-slides/blob/9d17e0eb42df2bee0ec8c7a6c6aaf95a340028f5/PrePaper/2023/CurveBS%20RDMA%26SPDK%20%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97.md
智东西公开课: https://apposcmf8kb5033.pc.xiaoe-tech.com/
+分布式数据库: https://www.zhihu.com/column/c_1165316856901668864
+单元测试框架对比: http://www.throwtheswitch.org/comparison-of-unit-test-frameworks
https://logread.cn/post/study/summary/
博客: https://logread.cn | https://blog.csdn.net/ssbandjl
@@ -455,6 +468,14 @@