BRPC与UCX集成指南●有完善的配置功能,ucx_info可以dump配置信息 ●有性能测试工具 ●比较详细的文档2223 UCS ●是一些工具代码,例如 –链表 –hash table –epoll event loop – memory register cache –config file24 UCT ●特点是比较原始,开销小,但是没有很强的功能 ●是网络接口层,主要功能是网卡发现和远程内 socket代码不少地方需要文件句柄表示连接,使用句柄可以减少代码修改。例如 SocketOptions.fd为-1表示尚未连接。 ●UcpCm返回的文件句柄实际上是pipe的写端句柄 ●记得brpc的event dispatcher是边沿触发 ●写端句柄永远不会触发可读事件 ●写端句柄第一次epoll会返回可写,可写是brpc判断连接成功的措施 ●UcpCm从来不会写入pipe,如果pipe有可读字节,会打印错误,说明有地方遗漏了修 ●Socket通过关闭UcpCm返回的句柄来关闭连接。此举和Socket原来代码一样,减少了修 改。UcpCm检测到pipe读端可读,关闭UcpConnection。 ●以上修改实际上绕过了BRPC的Event dispatcher触发读写机制,UCX自己完成发送接收45 连接管理器UcpCm ●连接管理类 –全局唯一对象 –通过UcpCm * get_or_create_ucp_cm(void)获取0 码力 | 66 页 | 16.29 MB | 6 月前3
TGT服务器的优化性能问题主要体现在不能有效使用多CPU • 对多个socket connection,在单线程里做event loop多路复用。 • 多个target时,如果挂的设备多,一旦客户端请求量大,就会忙不过来。 • 开源界有尝试修改 • 例如sheepdog的开发者提交过一个patch,但是测试效果不理想,分析 原因,event loop依然是瓶颈对TGT的性能优化 • IO是使用多个epoll 线程,充分发挥多CPU能力 params 都在主线程,而target epoll 线程也要使用这些数据,多线程冲突,数据一 致性问题就来了对TGT的性能优化(续) • 为每一个target增加一把锁 • Target event loop (TEL)线程和管理面线程使用这把锁互斥 • TEL在运行时锁住这把锁,管理面只能等待,等TEL线程进入epoll wait状 态,会释放这把锁,管理面可以增删改target信息。0 码力 | 15 页 | 637.11 KB | 6 月前3
NJSD eBPF 技术文档 - 0924版本CacheStatus, filemap[ ] {fd, chuk, size, kernel file, ver} • update list map BFP_MAP_TYPE_PERF_EVENT_ARRAY • updata cache mapCurve社区介绍 • Curve 的成⻓离不开⼤家的⽀持和参与。⾮常欢迎社区⽤户参与社区共建,可以 通过贡献代码、丰富⽂档、提交issue、改进⽹站、交流分享等,提⾼⾃⼰专业0 码力 | 20 页 | 7.40 MB | 6 月前3
Curve元数据节点高可用用于存储集群拓扑的相关信息;二是etcd,用于存储文件的元数据信息。而etcd可以用于实现mds高可用,没必要引入其他组件。 使用etcd实现元数据节点的leader主要依赖于它的两个核心机制: TTL和CAS。TTL(time to live)指的是给一个key设置一个有效期,到期后key会被自动删掉。这在很多分布式锁的实现上都会用到,可以保证锁的实时性和有效性。CAS(Atomic Compare-and-Swap) sessions can participate in the election for the // same prefix, but only one can be the leader at a time. // // If the context is 'context.TODO()/context.Background()', the Campaign // will continue to be // mds t := time.Now() ctx, cancel := context.WithTimeout(context.Background(), time.Duration(int(timeout))*time.Millisecond) defer cancel()0 码力 | 30 页 | 2.42 MB | 6 月前3
Estimation of Availability and Reliability in CurveBScan read and write data successfully on the other two replicas. When two copies fail at the same time, the system cannot determine the failure reason because only minor number replica is written successfully replicas is R, and the data recovery Time in the case of failed disks is T. The Annual Failure Rate of disks is AFR, and the average running Time of disks is MTBF (Mean Time Before Failure). 𝐴𝐹𝑅 = 1 fails, up to 50 other disks will restore the data on that disk at the same time. According to this, the data recovery time T can be estimated. 𝐹𝐼𝑇 = 𝐴𝐹𝑅 24 ∗ 365 The probability of failure0 码力 | 2 页 | 34.51 KB | 6 月前3
Curve文件系统元数据管理uint32_t btime; /* birth / create time */ uint32_t ctime; /* status change time */ uint32_t mtime; /* modify time */ uint32_t atime; /* access time */ uint32_t uid; /* user0 码力 | 24 页 | 204.67 KB | 6 月前3
Open Flags 调研一个目录则会打开失败。 O_DIRECTORY : 。 O_NOFOLLOW 如果pathname是一个符号链接,则会打开失败(ELOOP) : 不更新Inode中的last access time(进程uid=文件uid或者进程在它的user namespace有CAP_FOWNER, 而文件的uid在这个namespace中有一个映射)。 O_NOATIME : 在进程执行exec系统 kernel that any currently cached file data (ie., data that the filesystem provided the last time the file was open) need not be invalidated. Has no effect when set in other contexts (in FDIRDEntryInfo dentry;© XXX Page 14 of 23 int flags; int magic; struct { int last_modified_time; } write_notify; int64_t offset; //current offset } FCFSAPIFileInfo; static int do_open(fuse_req_t0 码力 | 23 页 | 524.47 KB | 6 月前3
CurveFs 用户权限系统调研the maximum size of read requests will still be * limited by the kernel. * * NOTE: For the time being, the maximum size of read requests© XXX Page 11 of 33 * must be set both here *and* passed filesystem as "congested". This instructs the kernel to * expect that queued requests will take some time to complete, and to * adjust its algorithms accordingly (e.g. by putting a waiting thread * to resolution. Filesystems supporting only second resolution * should set this to 1000000000. */ unsigned time_gran; /** * For future use.© XXX Page 14 of 33 */ unsigned reserved[22]; }; 未实现任何权限检查的文件系统通常0 码力 | 33 页 | 732.13 KB | 6 月前3
CurveBS IO Processing Flowtend, etc in control plane. 2. Depending on libCurve, the application must be restarted every time the library is updated. To solve this problem, the CurveBS Client has been optimized to decouple0 码力 | 13 页 | 2.03 MB | 6 月前3
Curve核心组件之snapshotclone快照版本号 chunkSize uint32_t chunk的size segmentSize uint64_t segment的size fileLength uint64_t 卷的大小 time uint64_t 快照创建时间 status enum 快照的创建状态 Etcd中的快照元数据:快照的元数据和数据组织 • fileInfo 快照目的卷的卷名等信息 • chunkMap0 码力 | 23 页 | 1.32 MB | 6 月前3
共 10 条
- 1













