 NJSD eBPF 技术文档 - 0924版本关闭⽂件时会发送FLUSH请求和RELEASE请求FUSE⽂件IO读写流程FUSE的IO路径及瓶颈分析 • 对⽐测试 • ⽂件访问测试直接访问ext4 • 通过FUSE访问passthrough_ll底层ext4 • 内核调⽤延迟测试 • 与FUSE Daemon通讯120us左右,FUSE Daemon⼤概10us以内 • 瓶颈在/dev/fuse通讯开销基于FUSE可能的优化点 • 降低内核与libfuse通讯延迟 LD_PRELOAD重载⽂件系统系统调⽤ • vpp / f-stack / DirectFUSE • Kernel版本实现 • BentoFS 基于rust的实现采⽤LD_Preload⽅式瓶颈分析 • 环境 • FUSE daemon使⽤ passthrough_ll 调⽤底层ext4 • 进程共享内存通信延迟10us+ • others 开销 10us+ • fu0 码力 | 20 页 | 7.40 MB | 6 月前3 NJSD eBPF 技术文档 - 0924版本关闭⽂件时会发送FLUSH请求和RELEASE请求FUSE⽂件IO读写流程FUSE的IO路径及瓶颈分析 • 对⽐测试 • ⽂件访问测试直接访问ext4 • 通过FUSE访问passthrough_ll底层ext4 • 内核调⽤延迟测试 • 与FUSE Daemon通讯120us左右,FUSE Daemon⼤概10us以内 • 瓶颈在/dev/fuse通讯开销基于FUSE可能的优化点 • 降低内核与libfuse通讯延迟 LD_PRELOAD重载⽂件系统系统调⽤ • vpp / f-stack / DirectFUSE • Kernel版本实现 • BentoFS 基于rust的实现采⽤LD_Preload⽅式瓶颈分析 • 环境 • FUSE daemon使⽤ passthrough_ll 调⽤底层ext4 • 进程共享内存通信延迟10us+ • others 开销 10us+ • fu0 码力 | 20 页 | 7.40 MB | 6 月前3
 TGT服务器的优化多个target时,如果挂的设备多,一旦客户端请求量大,就会忙不过来。 • 开源界有尝试修改 • 例如sheepdog的开发者提交过一个patch,但是测试效果不理想,分析 原因,event loop依然是瓶颈对TGT的性能优化 • IO是使用多个epoll 线程,充分发挥多CPU能力 • 当前策略是每个target一个epoll线程,负责Initiator发过来的I/O • 好处是各target上的0 码力 | 15 页 | 637.11 KB | 6 月前3 TGT服务器的优化多个target时,如果挂的设备多,一旦客户端请求量大,就会忙不过来。 • 开源界有尝试修改 • 例如sheepdog的开发者提交过一个patch,但是测试效果不理想,分析 原因,event loop依然是瓶颈对TGT的性能优化 • IO是使用多个epoll 线程,充分发挥多CPU能力 • 当前策略是每个target一个epoll线程,负责Initiator发过来的I/O • 好处是各target上的0 码力 | 15 页 | 637.11 KB | 6 月前3
 PFS SPDK: Storage Performance Development Kit●发挥某些被操作系统屏蔽的功能,例如nvme write zero ●根据阿里《When Cloud Storage Meets RDMA》的说法 ●在100Gbps网络带宽时,内存带宽成为瓶颈 ●Intel Memory Latency Checker (MLC)测试得到的CPU内存带宽是 61Gbps10/17/22 3 RDMA可以减轻CPU负担 ●可以减少CPU操作网络通讯的开销0 码力 | 23 页 | 4.21 MB | 6 月前3 PFS SPDK: Storage Performance Development Kit●发挥某些被操作系统屏蔽的功能,例如nvme write zero ●根据阿里《When Cloud Storage Meets RDMA》的说法 ●在100Gbps网络带宽时,内存带宽成为瓶颈 ●Intel Memory Latency Checker (MLC)测试得到的CPU内存带宽是 61Gbps10/17/22 3 RDMA可以减轻CPU负担 ●可以减少CPU操作网络通讯的开销0 码力 | 23 页 | 4.21 MB | 6 月前3
 Curve核心组件之Client - 网易数帆130KCLIENT性能优化  发送RPC耗时较长  增加发送线程个数  在bthread协程中使用std::mutex/spinlock,在大量并发的情况下,会阻塞worker线程,也 存在瓶颈  std::mutex/spinlock 改成 bthread::Mutex  …… 128深度、4K随机写欢 迎 大 家 参 与 C U R V E 项 目 !  github主页:0 码力 | 27 页 | 1.57 MB | 6 月前3 Curve核心组件之Client - 网易数帆130KCLIENT性能优化  发送RPC耗时较长  增加发送线程个数  在bthread协程中使用std::mutex/spinlock,在大量并发的情况下,会阻塞worker线程,也 存在瓶颈  std::mutex/spinlock 改成 bthread::Mutex  …… 128深度、4K随机写欢 迎 大 家 参 与 C U R V E 项 目 !  github主页:0 码力 | 27 页 | 1.57 MB | 6 月前3
 Curve核心组件之chunkserver单深度fio测试chunkserver内部时延统计 Raft 日志落盘延迟 优化前性能分析:braft日志落盘时延占据了ChunkServer处理时延的50%以上,因此推断braft日志落盘存在瓶颈 ChunkServer性能优化主要是braft日志落盘优化,包括三个方面: 1、追加写改为覆盖写 2、写入时4KB对齐 3、改为O_DIRECT模式 How? Why?新版本ChunkServer性能优化0 码力 | 29 页 | 1.61 MB | 6 月前3 Curve核心组件之chunkserver单深度fio测试chunkserver内部时延统计 Raft 日志落盘延迟 优化前性能分析:braft日志落盘时延占据了ChunkServer处理时延的50%以上,因此推断braft日志落盘存在瓶颈 ChunkServer性能优化主要是braft日志落盘优化,包括三个方面: 1、追加写改为覆盖写 2、写入时4KB对齐 3、改为O_DIRECT模式 How? Why?新版本ChunkServer性能优化0 码力 | 29 页 | 1.61 MB | 6 月前3
 Curve文件系统空间分配方案文件空间的申请,具体由大文件,还是由小文件处理,可以参考如下策略,大小文件阈值为1MiB:© XXX Page 6 of 11 并发问题 如果所有的空间分配和回收全部由一个分配器来进行管理,那么这里的分配很有可能成为一个瓶颈。 为了避免整个问题,可以将整个空间,由多个分配器来进行管理,每个分配器管理不同的地址空间。比如,将整个空间划分为10组,每组空间都有一个空间分配器进行管理。 在申请空间时,如果没有附带期望地址0 码力 | 11 页 | 159.17 KB | 6 月前3 Curve文件系统空间分配方案文件空间的申请,具体由大文件,还是由小文件处理,可以参考如下策略,大小文件阈值为1MiB:© XXX Page 6 of 11 并发问题 如果所有的空间分配和回收全部由一个分配器来进行管理,那么这里的分配很有可能成为一个瓶颈。 为了避免整个问题,可以将整个空间,由多个分配器来进行管理,每个分配器管理不同的地址空间。比如,将整个空间划分为10组,每组空间都有一个空间分配器进行管理。 在申请空间时,如果没有附带期望地址0 码力 | 11 页 | 159.17 KB | 6 月前3
 Curve文件系统元数据持久化方案设计万条随机生成 inode 耗时 (MS) 内存 (KB) 顺序编码 13 5079 protobuf 序列化 81 4996 从对比结果来看,10 万条 inode 耗时相差不大(CPU 并不是瓶颈),内存 protobuf 消耗却更少,推介使用 protobuf 进行序列化 2、KVStore 将当前实现中的 MemoryDentryStorage 和 MemoryInodeStorage0 码力 | 12 页 | 384.47 KB | 6 月前3 Curve文件系统元数据持久化方案设计万条随机生成 inode 耗时 (MS) 内存 (KB) 顺序编码 13 5079 protobuf 序列化 81 4996 从对比结果来看,10 万条 inode 耗时相差不大(CPU 并不是瓶颈),内存 protobuf 消耗却更少,推介使用 protobuf 进行序列化 2、KVStore 将当前实现中的 MemoryDentryStorage 和 MemoryInodeStorage0 码力 | 12 页 | 384.47 KB | 6 月前3
共 7 条
- 1













