自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 基于fallocate为文件打洞

【代码】基于fallocate为文件打洞。

2024-04-17 21:45:43 233 1

原创 交叉编译fio(ARM64)

安装交叉编译工具链配置编译make。

2024-03-24 09:36:31 267

原创 将Android APP安装到sm8550 HDK的NVMe SSD

sdcard/Android/data// 或 /storage/emulated/0/Android/data//:用于存储可被用户或者设备上其他App访问的非私有数据。/sdcard/Android/data//cache/:外部缓存目录,也用于临时存储,但存储在外部存储上。/data/data//cache/:内部缓存目录,用于临时存储数据。/sdcard/Download/等等。

2024-01-26 20:31:09 580

原创 非root权限下run qemu-kvm

管理物理机时可能不想将root权限赋予某个user,但user有运行qemu的需求,因此需要在user 权限下运行qemu-kvm。

2023-10-24 11:02:37 272

原创 YCSB and TPC-C on MySQL(避免重复load)

Select Operating System 选择 Source CodeSelect OS version 选择 All Operating Systems选择带有boost的版本。

2023-10-19 21:30:37 371

原创 Linux内核编译-ubuntu22.03-Linux-6.6

https://www.kernel.org/http://mirrors.163.com/kernel/tar xvzf linux-6.6.tar.xzsudo apt install gcc make libncurses5-dev openssl libssl-dev build-essential pkg-config libc6-dev bison flex libelf-dev dwarves -ymake menuconfigvim .configCONFIG_SYSTEM_TRUST

2023-10-18 10:59:33 508

原创 使用QUME搭建ZNS SSD

QEMU从 1.6 版开始支持模拟 NVMe 命名空间。但是仅从QEMU 6.0 版本开始支持模拟分区命名空间。

2023-10-15 12:01:13 1026 7

原创 VScode远程root权限调试

尝试诸多办法无法解决的情况下,允许远程登陆用户直接以root身份登录。

2023-10-11 14:33:40 1202 1

原创 VScode函数跳转开启

2023-04-20 09:38:21 293

原创 Oneplus9Pro变砖后修复解锁刷回lineage18

开启USB调试,开启OEM模式(需要翻墙后使用谷歌账号登录1加账号)通过apply update就可刷新的zip包进去。按下音量下 + 音量上 ,连接表格出现一个条目。5.刷回lineage18(linux环境下)出现这个界面(下面显示是uocked)user type 选择others。然后选择进入recovery模式。

2023-03-07 10:13:13 821 1

原创 西数ZN540如何修改sector size

因需要在ZN540上挂载F2FS,故需要两块盘。一块传统SSD一块ZNS SSD。对于ZN540,信息如下由于其扇区大小为4KiB,而自己服务器上没有逻辑扇区为4KiB的盘,例如三星883:所以当用883做传统盘的时候,格式化mkfs.f2fs会报错:因为ZN540不支持分区,如果使用ZN540的传统块接口来挂载则会报空间不足:因此,要么把三星883的逻辑扇区大小改为4KiB,要么把ZN540改为512B。

2023-03-01 09:40:47 1247 2

原创 Android非root模式下访问/proc/fs/f2fs/下文件

Android非root模式下访问/proc/fs/f2fs/XXX/下文件

2022-11-02 08:45:22 883 1

原创 NVMe Zoned Namespaces (ZNS) SSDs

分区命名空间(ZNS) ssd代表了主机软件和基于闪存的ssd之间的一种新的功能划分。ZNS SSD将其容量划分为zone,每个zone可以按任意顺序读取,但必须按顺序写入。这些特性允许ZNS SSD改善其内部数据放置,从而通过更高的写吞吐量、更低的QoS和更大的容量获得更高的性能。...

2022-07-27 10:39:38 4039 1

原创 NVM Express Zoned Namespace Command Set Specification revision 1.1b

NVM Express Zoned Namespace Command Set Specification revision 1.1b

2022-07-27 10:35:02 1393

原创 filebench 读写process

define processFilebench进程表示和操作系统进程,包含一个或多个线程。接着,每个Filebench线程代表一个操作系统控制线程,并包含一组flowops。下面的示例说明如何指定流程、线程和流程集合。进程实体对应操作系统进程。define process命令用于实例化给定的进程实体,该进程实体可能生成一个或多个相同的进程副本。每个进程由一个或多个线程组成。而线程则由一组定义线程应该做什么的操作(flowops)组成。线程还可以分配一个内存区域,然后某些flowops将其用作I/O的缓冲

2021-12-09 11:24:03 924

原创 filebench工作负载描述语言

== Workload Model Language==Filebench使用综合应用程序模型描述,可用于派生分析模型和重建应用程序的足迹;允许预测和描述,但大大减少了时间和成本。该语言可以准确地表示应用程序的工作负载,从而方便预测、建模和测量系统性能。综合基准测试是通过使用语言中描述的模型在测试系统上生成负载来实现的,其方式类似于实际应用程序在系统上运行时的方式。系统的性能可以在负载产生期间进行测量。对于基准测试,模型是通过动态地重新创建正确数量的进程(或线程)、内存占用和I/O,以及在实际应用程序中看

2021-12-09 11:22:44 942

原创 Mobibench使用

mobibench源码:https://github.com/ESOS-Lab/MobibenchAndroid 常见应用的包名应用名称:学习强国 包名: cn.xuexi.android应用名称:手机淘宝 包名: com.taobao.taobao应用名称:支付宝 包名: com.eg.android.AlipayGphone应用名称:菜鸟裹裹 包名: com.cainiao.wireless应用名称:钉钉 包名: com.alibaba.android.rimet应用名称:QQ 包名:

2021-10-21 15:33:15 1729 9

转载 linux 同步IO: sync、fsync与fdatasync

传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘I/O都通过缓冲进行。当将数据写入文件时,内核通常先将该数据复制到其中一个缓冲区中,如果该缓冲区尚未写满,则并不将其排入输出队列,而是等待其写满或者当内核需要重用该缓冲区以便存放其他磁盘块数据时,再将该缓冲排入输出队列,然后待其到达队首时,才进行实际的I/O操作。这种输出方式被称为延迟写(delayed write)(Bach [1986]第3章详细讨论了缓冲区高速缓存)。延迟写减少了磁盘读写次数,但是却降低了文件内容的更新速度,使得欲

2021-10-06 15:59:55 379

原创 在linux上交叉编译ioctl程序到android

在ubuntu上交叉编译ioctl程序到arm64的android手机上这里NDK用的是r22及以上的版本1.安装NDK从下面的链接下载NDK,并解压https://developer.android.google.cn/ndk/downloads/这里下载了 android-ndk-r22b,解压到/home/tan/960_all/android-ndk-r22b2. 将上一篇博客中的test.c文件放在linux服务器上#include <stdio.h>#include

2021-09-06 20:49:56 337

原创 adb如何查看Android的版本号和api号

adb 查看Android版本号和SDK版本号获取系统版本:adb shell getprop ro.build.version.release获取系统api版本:adb shell getprop ro.build.version.sdk

2021-09-06 20:28:57 8261

原创 用户态调用F2FS的ioctl以启动FG_GC

19年文章“Reinforcement Learning based Background Segment Cleaning for Log-structured File System on Mobile Devices”中提到可以用ioctl来调用前台段清理,所以记录一下怎么调用。1.对分区/dev/sda4进行格式化,并挂载到/data上。2.因为ioctl是对文件系统中的文件进行的I/O控制,所以需要在文件系统中创建一个文件。这里创建:mkdir /data/test_qwj/190.txt

2021-09-06 19:58:28 825

原创 华为hikey960源码编译与烧录(linux-4.19)

HiKey960 开发板是 Google Android 官方提供支持的开发板。Google 有提供为这块开发板编译内核的文档,地址为 https://source.android.com/source/devices#960hikey ,描述了 HiKey960 开发板编译内核的方法。HiKey960 有 3GB RAM 的配置,HiKey960 板子如下图:1.准备工作下载安装NDK交叉编译工具Android NDK https://developer.android.com/ndk/dow

2021-06-24 09:19:35 1110 1

原创 filebench负载测试文件系统性能手册

一、安装filebenchhttps://github.com/filebench/filebench/wikihttps://www.cnblogs.com/xuyaowen/p/filebench.htmlhttps://www.pianshen.com/article/6501303418/二、负载选择https://github.com/filebench/filebench/wiki/Predefined-personalities我主要是选择webserver fileserver

2021-05-25 17:05:51 943 1

原创 TPCC负载测试文件系统性能手册

一、安装TPCChttps://www.hi-linux.com/posts/38534.htmlhttps://imysql.com/2014/10/10/tpcc-mysql-full-user-manual.shtmlhttps://www.cnblogs.com/xuanzhi201111/p/4148434.html二、安装配置MySQL1.下载安装sudo apt install mysql-serversudo apt install libmysql++-dev2.修改用户

2021-05-25 16:43:28 680

原创 Ubuntu 18.04上编译Linux内核以及f2fs.ko的使用

一、编译过程https://blog.csdn.net/qq_36290650/article/details/83052315二、开启启动界面选择修改/etc/defults/grub文件注释掉GRUB_TIMEOUT_STYLE修改GRUB_TIMEOUT=5三、重启后选择高级选项后,选择自己的内核四、编译f2fs进入文件夹f2fs-5.4修改Makefile:KERNAL_DIR=/usr/src/linux-5.4PWD=/home/qwj/f2fs-5.4然后编译sud

2021-05-25 16:25:02 645

转载 F2FS之总体结构

总体介绍F2FS全称为Flash Friendly File System,是专门为flash设备设计的一个日志结构型文件系统(Log-structured File System, LFS)。相对于传统的日志结构型文件系统,F2FS在wandering tree和gc的高时间开销等问题,有一定的改进和优化。wandering tree问题: 传统的LFS,在文件数据被更新或者写入到日志的末端的时候,指向文件数据保存地址的直接指针指针会被更新(flash设备的异地更新特性),同时指向这个直接指针的间接指

2021-04-13 16:33:10 978

原创 F2FS之磁盘NAT和SIT布局及相关函数分析

NAT和SIT数据简介关于NAT和SIT简介部分请参考https://blog.csdn.net/u011649400/article/details/106955060https://blog.csdn.net/u011649400/article/details/102490983SIT的实际磁盘布局SIT区域的实际构图如上所示。以f2fs_sit_block为单位进行存储,共有2blocks个f2fs_sit_block,其中blocks=sit_info->sit_blocks,即

2021-04-03 16:19:39 1278

原创 F2FS之write_checkpoint

F2FS需要在特定的时刻将Checkpoint的数据写入到磁盘中。Checkpoint的时机CP是一个开销很大的操作,因此合理选取CP时机,能够很好地提高性能。CP的触发时机有:前台GC(FG_GC) FASTBOOT UMOUNT DISCARD RECOVERY TRIM 周期进行因此F2FS有几个宏表示CP的触发原因:#define CP_UMOUNT 0x00000001#define CP_FASTBOOT 0x00000002#define CP_SYNC 0x00000004

2021-04-02 11:32:45 1101

原创 F2FS之读取最新的checkpoint块

在F2FS文件系统中为了读取最新的CP块给超级块对象中的sbi->ckpt,是调用int get_valid_checkpoint(struct f2fs_sb_info *sbi)函数 。int get_valid_checkpoint(struct f2fs_sb_info *sbi){ struct f2fs_checkpoint *cp_block; struct f2fs_super_block *fsb = sbi->raw_super;//磁盘超级块 struct pag

2021-04-02 09:47:33 454

原创 虚拟内存区域:vm_area_struct

https://zhuanlan.zhihu.com/p/195100327

2021-03-30 15:03:54 203

原创 深入理解Linux高端内存

参考资料:https://www.jianshu.com/p/0b8e1879729a

2021-03-30 11:17:44 69

转载 用户态和内核态的内存分配

用户态内存分配C语言中,在用户态分配内存空间可以使用malloc() ,函数原型如下:void *malloc(size_t size);1参数:size – 内存块的大小,以字节为单位。返回值函数返回一个指针 ,指向已分配大小的内存。如果请求失败,则返回 NULL。在用户态分配的空间需要使用free() 回收。内核态内存分配在内核态可以使用kmalloc()、vmalloc()、kzalloc()、vzalloc()分配内存,区别如下:void * kmalloc(size_t si

2021-03-02 16:40:05 969

原创 基于Android系统的hikey 960 开发板中使用blktrace(linux自带)分析I/O信息

blktrace是一柄神器,很多工具都是基于该神器的:ioprof,seekwatcher,iowatcher,这个工具基本可以满足我们的对块设备请求的所有了解。在将Q版本Android 刷入hikey 960 开发板后,本文讲述如何在系统中安装并使用blktrace。一、blktrace简介:一个I/O请求进入block layer之后,可能会经历下面的过程:Remap: 可能被DM(Device Mapper)或MD(Multiple Device, Software RAID) remap到其

2021-01-18 20:34:19 855 8

原创 NVMe 相关知识

(NVMe)协议。这些新协议利用了多队列SSD (MQ-SSD)的概念,其中多个主机端I/O请求队列(在软件中)直接暴露给SSD控制器。直接将请求队列暴露给SSD控制器有两个好处:(1)不再需要操作系统软件堆栈来管理I/O请求;而且(2)SSD可以比OS做出更有效的I/O请求调度决策,因为SSD确切地知道它的内部资源中哪些是可用的,哪些正在忙于处理其他请求。因此,协议消除了操作系统软件栈,使mq - ssd能够提供比传统ssd更高的性能。不幸的是,虽然OS软件栈的消除带来了显著的性能改进,但我们在本文中指

2020-12-16 20:00:43 592

原创 TLC Flash 笔记

TLC flash在每个flash单元中存储三个具有不同编程延迟的位,即LSB(最低有效位)、CSB(中央有效位)和MSB(最高有效位)。wordline单元中相同类型(编程延迟)的位构成页面。因此,TLC flash中的页面有三种不同的类型:LSB、CSB和MSB。按照惯例,一个wordline内的三种不同类型的页面被逐页单独编程,并且在完全编程(所有三页都被编程了)字行之前可以阅读页面。许多现有的研究表明,这三种类型的页面具有显著不同的程序延迟。通常,对于25nm的TLC flash, LSB、CSB和

2020-12-16 19:58:04 2304

原创 MLC Flash 笔记

如图所示,当第一个位(即最小有效位(LSB))被编程时,NAND闪存控制器迅速形成一个阈值电压(Vth)分布,因为它只需要形成两个Vth分布,这两个Vth分布被一个很大的电压边界所分隔。另一方面,当第二位(即,最重要的位(MSB))被编程,NAND闪存控制器花费更多的时间,因为它需要在同一Vth窗口中以更细粒度的方式表示四个Vth分布之一。因此,当一个MSB页面被编程时,LSB页面已经编程时,一个NAND存储系统经历一个显著的折痕延迟。例如,在最近的2X-nm MLC NAND设备中,MSB页面的程序延迟.

2020-12-16 19:56:26 497

原创 SSD 写请求执行流程

1、SSD写流程在上图中,我们说明了传统SSD中的写请求执行工作流。当来自主机的写请求到达SSD的主机接口时,后者首先将请求放入设备级I/O队列(简称I/O队列)中,然后将请求分割成页大小的子请求(事务,transaction),每个子请求都有一个特定的LPA(逻辑页面地址)。然后这些子请求被发送到SSD控制器进行地址转换,这是FTL的一个重要功能,它将LPA转换为PPA(物理页面地址)。写子请求的地址转换也称为页面分配。页面分配通过两个原语为子请求选择空闲页面,PLAlloc原语分配通道ID、芯片ID

2020-12-16 19:55:07 1331 2

原创 SATA 与 PCIe

SATA(接口协议)上跑的是AHCI(命令层和应用层协议)AHCI:一个命令队列(固定深度32)PCIe(接口协议)为三层:事务层,数据链路层,物理层, 事务层的DATA为上层的数据(命令层,NVMe层)PCIe SSD 接口形态开始于AIC(Add In Card) 现在逐步加入M.2和U.2。 消费者:M.2 企业级:U.2 AICNVMe跑在PCIe上(原配), 作为命令层和应用层协议,理论上适配任何接口协议多个命令队列2-8,16-128,深度2-4KSSD逻辑块(最小传输单位)大

2020-12-16 19:52:54 2168

原创 Solid State Disk(SSD)结构细分+高级指令+并行优化

1、结构如图2所示,SSD主要由主机接口、SSD控制器和闪存芯片阵列三部分组成。主机接口支持主机系统和SSD控制器之间的通信,并维护设备级I/O队列,HIL以循环方式从主机队列中获取I/O请求,插入设备队列中。SSD控制器,通常包含一个嵌入式处理器和DRAM,负责处理I/O请求和管理SSD资源,通过执行一组flash翻译层(FTL)功能。、地址转换、垃圾收集和损耗均衡。SSD控制器还通过闪存芯片控制器与闪存芯片阵列通信。由多个闪存芯片组成的闪存芯片阵列通过通道连接到闪存控制器,提供物理存储容量。闪存芯片

2020-12-16 19:15:11 3550 5

原创 ext2文件系统super.c源码分析(Linux 2.6.24)

关于linux2.6.24版本的ext2文件系统的源码,super.c也是第三大的文件,欢迎指正!/* * linux/fs/ext2/super.c * * Copyright (C) 1992, 1993, 1994, 1995 * Remy Card (card@masi.ibp.fr) * Laboratoire MASI - Institut Blaise Pascal * Universite Pierre et Marie Curie (Paris VI) * * fro

2020-11-10 14:24:01 801

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除