0%

原名: PolarFS: An Ultra-low Latency and Failure Resilient Distributed File System for Shared Storage Cloud Database

PolarFS是 PolarDB 的底层分布式文件系统。

极低延迟和高可用, 充分利用用户态网络/IO栈,激进使用新技术(现在看来都是平常的技术了),包括RDMA、NVMe和SPDK等。 写延迟接近本地SSD。

为了提高io吞吐,PolarFS还开发了ParallelRaft,打破Raft只能顺序提交的约束。

笔者注:整体来看,本篇都是一些当年的新技术的应用,如RDMA,SPKD,核心可以说是os-bypass和zero-copy等工程优化。 架构上没有什么特别的亮点。 当然开发的ParallelRaft笔者没关注,不予评价。

阅读全文 »

前言·

除了协程的上下文切换外,个人对flare协程库最感兴趣的地方就是协程调度算法了。本文简单分析fiber的调度算法。

最好先阅读下官方文档:https://github.com/Tencent/flare/blob/master/flare/doc/fiber-scheduling.md

阅读全文 »

前言·

本文分析 flare中,fiber是如何构造析构以及如何它的两种launch策略。

一些名词解释:

  • Fiber: flare对外的有栈协程调度实体
  • FiberDesc: flare内部,用于描述一个fiber任务的元数据结构,该结构不包含fiber运行起来时的stack
  • FiberEntity:flare内部,用于表示一个真正运行的Fiber的实体,可以理解为linux中的task struct。包含运行时的stack。
阅读全文 »

标题起得有点唬人,但问题出自公司内的一个陈年老bug,表象是"atomic 不原子"。根本原因是在给原子变量分配内存时出现了跨cacheline分配。具体见下面的例子:

阅读全文 »

背景·

公司内项目为了提升性能,做的其中一个优化是上了协程+io uring。 我们选择的协程库为 腾讯开源的flare。 本文分析flare的fiber是如何做上下文切换的,即用户态的context switch。

在flare中,一个用户态线程命名为fiber,所以本文也即分析fiber是如何做context switch的。

阅读全文 »

RDB 是redis持久化方式的一种。 本文介绍其实现原理,内容包括:

  • redis 保存 RDB和 加载RDB的方式,SAVE和BGSAVE的实现原理
  • RDB自动保存原理
  • RDB文件的组成部分
阅读全文 »