Improving File System Performance of Mobile Storage Systems Using a Decoupled Defragmenter 对闪存存储的文件碎片化进行表征研究 碎片程度的定义 逻辑碎片程度 (DoFL):文件x分配的范围数与文件x所需最少范围数之比。 物理碎片程度 (DoFP):顺序访问文件x时的平均I/O并行度与闪存存储系统支持的最大I/O并行度之比。 实验设计 通过模拟一年和一周的工作负载,测量Ext4文件系统老化后的DoFL和DoFP值的变化,以了解逻辑和物理碎片在闪存存储中的相互作用。 结果与分析 根据实验 2024-03-17 论文阅读 #SSD #Fragmentation #Defragmentation #File System
We Ain’t Afraid of No File Fragmentation: Causes and Prevention of Its Performance Impact on Modern Flash SSDs 文件碎片分析实验 实验目的: 探究文件碎片对性能的影响,并分析主机端和设备端对性能的影响程度。 实验平台: 文件系统:ext4 实验方法: 在每次实验运行之前关闭page cache; 使用nr_requests参数来调整I/O队列深度,每个实验重复10次; 创建不同碎片程度的文件:DoF( actual number of extents to the ideal number of 2024-03-17 论文阅读 #SSD #Fragmentation
Excessive SSD-Internal Parallelism Considered Harmful 背景 随着过去十年内固态硬盘(SSD)容量的显著提升,SSD管理的基本单位也随之增大,旨在减轻管理负担。随着每个存储块包含的页面数和每个芯片的块数的增加,固态硬盘的闪存转换层(FTL)需要追踪更多的信息。因此,现代SSD倾向于在超级块(一个包含多个块的更大单位)级别处理写入请求,通过在所有可用通道和芯片上进行数据条带化来增强并行性并降低动态随机存取内存(DRAM)的使用。此外,SSD在超级块级别执 2024-03-14 论文阅读 #SSD #Parallelism #Superblock
SPDK NVMe API SPDK概述 SPDK是一个专为高性能存储设备开发的开源C库,它提供了一套高效的API和工具,用于直接访问诸如NVMe SSD等存储设备。SPDK通过在用户空间运行,避免了传统存储访问中的内核空间切换开销,从而实现低延迟和高吞吐量。 环境库 (env) SPDK依赖名为env的环境库来处理内存分配和PCI设备操作。在使用NVMe驱动之前,需要初始化env环境。 内存分配: env库提供了高效的内 2024-03-10 SPDK #SPDK #NVMe
使用FIO测试SPDK性能 前提 若在 FEMU 上进行测试,需调整 FEMU 以解决 NVMe 协议的 Admin 命令未实现的问题。以下方法仅为暂时屏蔽该问题。 1234567891011--- a/hw/femu/nvme-admin.c+++ b/hw/femu/nvme-admin.c@@ -999,6 +999,8 @@ static uint16_t nvme_admin_cmd(FemuCtrl *n, Nv 2024-03-04 SPDK #SPDK #FIO
11.RAII and smart pointer 一、资源管理与RAII原则 在C++编程中,资源泄漏是一个常见问题,尤其是在异常发生时。为了确保资源总是被正确释放,C++引入了RAII(Resource Acquisition Is Initialization)原则。 1.1 RAII原则 RAII是一种资源管理模型,确保使用对象自动管理资源。按照RAII原则,资源在对象构造时获取,在对象析构时释放。这样可以保证即使在发生异常的情况下资源也能 2024-02-12 C++ #C++ #RAII #smart pointer
10.Move Semantic 一、lvalues 和 rvalues 简介 lvalue(左值):具有持久存储地址的表达式或变量,可以位于赋值符号的左侧。 rvalue(右值):代表临时对象或无法标识的值,常出现在赋值符号的右侧,不能被赋值。 1.1 例子 1234567891011int val = 2; // 2 是 r-valueint *ptr = &val; 2024-02-12 C++ #C++ #std::move #Move constructor #Move assignment