Known unknowns

Linux存储IO栈梳理(四) -- 通用块层

学习Linux内核存储栈中的通用块层(block layer)。 1. 背景 Linux存储IO栈梳理(二) – Linux内核存储栈流程和接口 中简单带过了一下通用块层,并在 Linux存储IO栈梳理(三) – eBPF和ftrace跟踪IO写流程 中追踪IO写流程时追踪到对应的io调度处理相关堆栈,本篇来具体看下通用块层的对应流程。 另外,想起来之前看过的极客时间课程,回头看了下存...

MIT6.824学习笔记(二) -- RPC和线程

MIT6.824(2020)学习笔记,Lecture 2 - RPC和线程。 1. 背景 MIT6.824(2020)学习,本篇继续学习:Lecture 2 - RPC和线程。 说明:本博客作为个人学习实践笔记,可供参考但非系统教程,可能存在错误或遗漏,欢迎指正。若需系统学习,建议参考原链接。 2. Why Go 课程选择Go来完成实验,并做了一些和其他语言(主要是C++)的对比,...

MIT6.824学习笔记(一) -- 课程介绍 及 MapReduce

MIT6.824(2020)学习笔记,此为第一篇。 1. 背景 有几个点促使自己近期行动起来: TODO列表里,有一项是把Go和Rust捡起来能熟练使用,之前学过用过但是实践少,久一点不用就生疏了; 梳理学习LevelDB时,就把 goleveldb 和 leveldb-rs 放到TODO里了,准备通过工业级项目提升Go和Rust水平。但精力有限,死磕在LevelDB上太久的...

Linux存储IO栈梳理(三) -- eBPF和ftrace跟踪IO写流程

跟踪Linux存储IO写流程。 1. 背景 Linux存储IO栈梳理(二) – Linux内核存储栈流程和接口 中,我们跟踪了读取的IO调用栈,本篇跟踪下写入操作时的IO调用栈。 环境说明:同上一篇一样,本地CentOS8.5环境只追踪到中断调用栈,先起ECS进行实验了:Alibaba Cloud Linux 3.2104 LTS 64位(内核版本:5.10.134-16.1.al8....

Linux存储IO栈梳理(二) -- Linux内核存储栈流程和接口

梳理学习Linux内核存储栈相关流程和接口。 1. 背景 LevelDB的学习梳理暂告一段落(还有不少东西没完结),继续看Linux存储IO栈。 上一篇:Linux存储IO栈梳理(一) – 存储栈全貌图 中,看了一下总体存储协议栈,本篇看下VFS和文件系统相关的内核代码逻辑。 主要参考下面文章,并结合内核代码梳理学习: read 文件一个字节实际会发生多大的磁盘IO? 7...

LevelDB学习笔记(七) -- 布隆过滤器

LevelDB学习笔记,本篇学习其布隆过滤器实现。 1. 背景 继续学习梳理LevelDB中具体的流程,本篇来看下布隆过滤器实现。 之前学习记录中虽然有涉及但未展开: LevelDB学习笔记(二) – 读写操作流程里面的读写流程,没有展开说明 LevelDB学习笔记(五) – sstable实现里提到filter block是基于布隆过滤器实现的。 主要参考如下文章并映证Leve...

LevelDB学习笔记(六) -- LRU缓存

LevelDB学习笔记,本篇学习其LRU缓存实现。 1. 背景 继续学习梳理LevelDB中具体的流程,本篇来看下LRU缓存实现。 说明:本博客作为个人学习实践笔记,可供参考但非系统教程,可能存在错误或遗漏,欢迎指正。若需系统学习,建议参考原链接。 2. LevelDB缓存说明 LevelDB中使用的缓存(cache)主要用于读取场景,使得读取热数据时尽量在缓存中命中,减少读取ss...