暂无个人介绍
## Intro workqueue 是 Linux 中非常重要的一种异步执行的机制,本文对该机制的各种概念,以及 work 的并行度进行分析,以帮助我们更好地**使用**这一机制;对 workqueue 机制并不陌生的读者也可以直接跳到第四节,即 "Concurrency" 小节,了解 workqueue 机制中 work 的并行度 以 v2.6.36 为界,workqueue 存在两个不
多年来容器化实践告诉我们,优化后的容器镜像搭配 P2P 网络等技术可以有效降低容器部署启动的时间,并可保障容器持续稳定运行,相关背景细节可以参考[“容器技术之容器镜像篇”](https://mp.weixin.qq.com/s/s4lFGbKlXuer8mlE8kqQOA)、[“让容器应用管理更快更安全,Dragonfly 发布 Nydus 容器镜像加速服务”](https://mp.weixin
## 背景信息 1. 什么是 virtiofs? virtiofs 是一种用于在 host/guest 之间共享文件的文件系统,由 Redhat 开源,它使得不同 guest 之间能够以快速、一致、安全的方式共享同一个 host 目录树结构,目前广泛应用于 Kata Container 作为容器的 rootfs。 2. 什么是 DAX? DAX (Direct Access) 最初是针对于
传统的 block throttle 的语义是,cgroup 不能超过用户配置的 IOPS/BPS,此时所有 cgroup 会自由竞争 IO 资源;那么其存在的问题就是,如果用户配置的 IOPS/BPS 过高,所有 cgroup 之间就会完全自由竞争 IO 资源,从而无法保证 QoS,而如果用户配置的 IOPS/BPS 过低,又无法充分发挥 block 设备的性能 Facebook 的 Shao
block throttle 是 block QoS 的重要组成部分,也是最早的一个 QoS,其功能是限制每个 cgroup 的 IOPS/BPS 上限。 ### Group Hiererchy 每个 blkdev 会为每个 block group 创建一个对应的 throttle group ![](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.
每个 request queue 会维护一个 struct queue_limits 结构来描述对应的块设备的硬件参数,这些参数描述了硬件存储单元的组织方式,会影响 block layer 的很多行为,其中部分参数在 `/sys/block//queue/` 下导出 ```c struct request_queue { struct queue_limits limits; ... } `
有点标题党了,本意是想把对内核锁机制的一些实现细节记录下来,但多少反映了锁机制实现时的一些准则。本文讨论的锁机制主要指基于计数器的锁机制例如 spinlock、mutex,不包括 RCU 这类锁机制。 ### parallesim 在讨论各种锁机制之前,有必要讨论系统的并行度,即有哪些潜在的竞争场景 1. 中断上下文与进程上下文对共享资源的访问,由于中断是异步进行的,因而中断与进程是并发执行
DM (Device Mapper) IO polling 新特性[1]目前正瞄准 v5.13 窗口。有了该特性的支持,DM 设备开始正式支持 io_uring 的 polling 模式,从而为 Linux 的高性能存储栈补上了另一块拼图。 > 注 > 1. io_uring 是 Linux 的新一代高性能异步 IO 框架,由 block 子系统的维护者 Jens Axboe 亲自
互斥是指对共享资源的排他性访问,同步是指对进程执行的先后顺序作出妥善安排 Linux 内核中的各种锁机制实际上都是实现“互斥”的语义 ### design principle of locking #### parallesim 在讨论各种锁机制之前,有必要讨论系统的并行度,即有哪些潜在的竞争场景 1. 中断上下文与进程上下文对共享资源的访问,由于中断是异步进行的
x86-TSO (Total Store Ordering) 是论文 *x86-TSO: A Rigorous and Usable Programmer’s Model for x86 Multiprocessors* 提出的一种 memory model,这是论文作者根据 Intel/AMD specification 的阅读总结,提出的一种总结性的内存模型 虽然 Intel/AMD 官
### Concept #### what is memory model? memory model 的概念通常限定在 multi-processor 架构下讨论 在 multi-processor 架构下,多个处理器之间需要实现信息传递(同步)操作,通常有两种机制用于实现这一操作。 一种是使用 message-passing 机制,在该机制下每个处理器自己有一个 l
## Intro ### memory reordering 在介绍 memory barrier 之前,首先需要介绍 memory reordering memory reordering 是指指令实际执行的顺序与代码编写时的顺序不一致,即指令发生重排,通常在以下两个步骤发生 1. compiler reordering (compile time) 2. CP
计算、存储、网络构成了云计算的基本组件。Linux 中的 IO 栈主要分为 Filesystem 与 Block 两层,前者包括 VFS 与各种类型的文件系统(包括 Ext4、XFS 等),描述了数据的组织形式、提供管理数据的接口;而后者包括通用块层 (generic block layer) 与各种类型的块设备驱动(包括 SCSI、NVMe、Virtio 等),主要实现了数据在非易失性存储(HD
## segment segment 的概念实际来自 DMA controller,DMA controller 可以实现一段内存物理地址区间与一段设备物理地址区间之间的数据拷贝,segment 就描述 DMA 数据传输过程中的一段连续的内存空间,也就是说 DMA controller 可以将内存中一个 segment 中的数据拷贝到设备,或将设备中的数据拷贝到 segment 中 s
## Concept ### introduction to DISCARD DISCARD 的概念其实来自 SSD 设备。我们知道由于 flash 存储介质的特性,SSD 设备中的一个 block 只支持 write、erase 操作,而不支持 overwrite 操作。对于一个已经被 write 过的 block,如果需要向这个 block 写入新的数据,就必须先对该 block
# quota 介绍 ## project quota 介绍 quota 子系统用于限制磁盘的使用量。 从限制的主体进行分类,quota 包含 user quota、group quota 与 project quota 三部分。顾名思义,user quota、group quota 限制的主体分别是 user、user group,而 project quota 限制的主体则是