2021-05-17

本文档为Linux存储技术的学习笔记,覆盖存储固件升级、UFS/EMMC/T卡/memory外设、文件系统、IO性能及memory配置优化等内容。旨在为初学者提供指引,并为有经验的技术人员提供参考资料。
摘要由CSDN通过智能技术生成

Linux存储系列 个人学习笔记一

 

目录

Linux存储学习--前言

Linux存储学习--学习范围及相关框架介绍

Linux存储学习--相关知识点拓展


 

 

Linux存储学习--前言

 

个人之前项目有做过一些手机,平板存储模块及性能优化相关的工作,断断续续写过一些总结文档,由于公司项目保密协议相关要求,文档也只在内部进行了分享。目前基于以下几点做一个笔记和总结:

     1.个人申明:本人申明的博客内容会严格遵守相关公司的保密协议,相关技术内容都是来源于互联网的并结合本人理解进行记录,如果有涉及到隐私和侵权的之处请及时联系本人进行删除。       

     2. 抛砖引玉:Linux的各技术领域大神众多,本人属于新手边学习边总结,文中难免有错误和疑问的地方,希望路过大神帮忙指点和指正。

     3. 萌新入坑:存储对于操作系统来说是一个相对宽泛,内容涉及也比较多的模块,对于刚入门的师弟们往往有点迷失方向,希望该系列笔记能有一点引导作用。

Linux存储学习-- 学习范围及相关框架介绍

存储范围:不同公司,项目对存储模块的划分不同,相应存储模块开发工程师需要解决问题的范围也不同,简单说下个人之前遇到的划分:

   1. 存储固件升级 :包括各厂家主要是三星samsung,SK海力士hynix ,美光Micron等EMMC/UFS固件的本地工具升级及在线OTA。 这部分工作量和难度不大,但需要非常谨慎,毕竟固件升级失败对用户的影响的范围很大。

主要的工作任务也就是固件升级的流程代码的相关移植,适配,不同平台的归一化处理,本地OTA升级/降级压测等。也没遇到特别难搞的问题,另外需要主要不同厂家的固件检测和升级时间点不同,有的bootloader启动时候检测升级,有的平台是

必须要通过OTA进行固件升级。

   2.UFS/EMMC/T卡/memory外设:UFS/EMMC/T卡/memory 属于典型的外围块设备,通过外设总线适配器进行枚举挂载。其中UFS有一套协议,自身硬件接口MIPI协议也比较复杂,EMMC/T卡对应硬件接口和相关协议类似,所以有些平台EMMC/T卡的代码是耦合在一起的,增加复杂度,修改代码的时候特别要注意兼容。

      上面说到的UFS/EMMC/T卡都是基于flash的存储设备,更多来自于嵌入式设备,但真正学习的过程中发现,其中的很多概念,专业术语和PC X86上的概念是重合的,如果不区分开来,很容易迷糊,而且对比之后能更好的加深理解和记忆。比如:

      什么是扇区,块,磁道,磁面? 什么是SSD,HDD,HHD?硬盘接口协议IDE, PATA, ATA, SATA, SAS, SCSI,PCIe, FC区别? GPT和MBR区别?  什么是flash中的SLC,MLC,TLC有什么区别?什么是逻辑卷?  存储硬件的发展历史非常久远了,衍生出来的协议和概念非常之多,如果没有相关的硬件基础的积累,很难真正去读懂,理解相关驱动代码,而且后面要说的文件系统也是基于这些基础概念。

     外围存储器件涉及到的工作是相对比多也是比较杂的。linux官方,器件厂家及平台厂家都会不定期对UFS进行相关补丁升级,另外UFS/EMMC的休眠唤醒经常出现功耗问题。另外很多器件的稳定性也会导致不少稳定性相关问题。

  3. 文件系统:手机中常见文件系统如基于外存(flash,磁盘等)的ext4,  f2fs, sdcardfs及基于内存的proc, sysfs, tmpfs 以及用户态文件系统。

  4.  IO性能:包括IO数据读写的速度,数量,效率。

       4.1 现在流行的安兔兔跑分,可以直观反映系统 顺序/随机读写的速度。影响这个的方面非常多,需要排查各类系统优化方案。包括通过systrace排查各CPU限频设置,UFS读写相关的配置。

 比如UFS的HPB,TW,日志文件系统的nobarrier,order, writeback配置对应IO的相关读写速度影响较大。另外IO的调度器及调度方式也会有影响,以及IO落盘的方式:同步或异步也会有影响。

     4.2 系统在IO性能统计方面主要是pgpgin|pgpgout|pswpin|pswpout, 内存和磁盘及交换分区的数据交换会产生数据IO读写,特别是系统低内存场景,回收匿名内存页还是文件页会通过系统swappiness配置值的进行调整。对应使用了ZRAM技术的

系统更倾向于回收匿名页,毕竟文件页回收会增加IO负担,再次读写文件时也相对更耗时。系统自身的IO统计数据,但是如何进一步统计分析各进程的IO数据及IO系统中的overhead耗时和payload耗时 需要引入更多的埋点。

     4.3 overhead包括用户层,文件系统层,调度器层,驱动层的调度,蓄流/泄流IO合并等流程的耗时,payload主要是统计驱动层到硬件层之间的耗时。该统计能进一步定位整个IO子系统的效率优化点,特别对应iowait的来源及判断器件层的IO效率有很大的参考意义。

  5. memory: memory包括memory硬件DDR及系统的memory配置及优化,包括:系统开机内存大小,系统动态运行内存健康,系统内存泄漏,内存申请回收,内存查杀,内存规整,LMKD内存查杀方案等。 内存配置优化这块修改和方案非常多,当时也是在解决整机性能问题的时候移植了大佬的一些方案类似ZRAM。内存这块的水比较深,存储和内存相关,但是内存优化这块需要进一步拆分。

架构相关:

UFS协议框架:

   

EMMC/T/MMC演化过程:

EXT4文件系统磁盘布局:

F2FS文件系统布局:

Linux IO 框架:

 

Linux存储学习--相关知识点拓展

    1. Linux内核存储相关重要数据结构记录:

      链表,双向链表

      红黑树,B+树,目录索引,目录hash

      双向链表

   2.工作队列,散队列

   3.DMA传输

    

      

 

 

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值