emmc 性能优化

来源:互联网 发布:three.js 3d全景demo 编辑:程序博客网 时间:2024/05/16 08:08


好久没有更新了,加一篇。。。。

1.驱动方面

1.1内容点

位宽(决定了单次时序传输的最大位宽):

SPL阶段:4bit width(可以改为8bit width

Uboot阶段:8bit width

Kernel阶段:8bit width

时钟(决定了时序的快慢):

      SPL阶段:13M

      Uboot阶段:52M

      Kernel阶段:52M

总结:

通过调整为最大时钟和最大位宽可以将emmc的性能发挥到最大

另外修改emmcblock大小也可以提高访问的速度,但是block设置太大容易造成浪费,默认都是512Byte,这样可以减少系统文件的碎片化

 

1.2修改的地方

时钟:kernel/include/linux/mmc/card.h

位宽:kernel/include/linux/mmc/mmc.h

 

2.挂载参数方面

2.1mount参数(加粗的为推荐挂载参数)

 

loglevel的级别,测试IO性能时,将log级别设为1

nodelallocdelalloc

delalloc这是默认值,就是说把所有的block分配推后到真正要写数据的时候,当有sync调用的时候才会分配block.这样会造成写等待,因此为了提高性能挂载时需关闭delalloc.

discardnodiscard

discard向下级块设备通知块已释放,nodiscard不向下级块设备通知块已释放,通知的过程会降低IO性能

noauto_da_allocauto_da_alloc

noauto_da_alloc不使用延迟分配功能,而是在当时立刻确保块,2中类似

2.2修改方法

文件系统的挂载是在解析init.rc的时候进行的挂载./scx35/init.sc8830.rc

mount_all/fstab.sc8830

修改路径:device/sprd/scx35x/emmc/fstabxxx.sc8830

 

3.block层的一些参数

3.1内容点

max_sectors_kb

参数意义:决定了IO单次的最大数据请求量

可以通过修改MMC_QUEUE_BOUNCESZ的值进而修改max_sectors_kb

 

dirty_background_bytes

当脏页所占的内存数量超过dirty_background_bytes时,内核的pdflush线程开始回写脏页。

 

dirty_background_ratio(非阻塞)

参数意义:当脏页所占的百分比(MemFree + Cached - Mapped)达到dirty_background_ratio时内核的pdflush线程开始回写脏页。增大会使用更多内存用于缓冲,可以提高系统的读写性能。当需要持续、恒定的写入场合时,应该降低该数值。

 

dirty_bytes(阻塞)

当脏页所占的内存数量达到dirty_bytes时,执行磁盘写操作的进程自己开始回写脏数据。

 

dirty_ratio

参数意义:当脏页所占的百分比(所有内存)达到dirty_ratio时,进程pdflush会自己开始回写脏数据。增大会使用更多系统内存用于缓冲,可以提高系统的读写性能。当需要持续、恒定的写入场合时,应该降低该数值。

 

dirty_expire_centisecs

参数意义:用来指定内存中数据是多长时间才算脏(dirty)数据。指定的值是按100算做一秒计算。只有当超过这个值后,才会触发内核进程pdflushdirty数据写到磁盘。

 

dirty_writeback_centisecs

这个参数会触发pdflush回写进程定期唤醒并将old数据写到磁盘。每次的唤醒的间隔,是以数字100算做1秒。如果将这项值设为500就相当5秒唤醒pdflush进程。如果将这项值设为0就表示完全禁止定期回写数据。

3.2修改方法

路径:kernel/Documentation/laptops/laptop-mode.txt

393# kernel default dirty buffer age

394DEF_AGE=${DEF_AGE:-'30'} //dirty_expire_centisecs

395DEF_UPDATE=${DEF_UPDATE:-'5'}//dirty_writeback_centisecs

396DEF_DIRTY_BACKGROUND_RATIO=${DEF_DIRTY_BACKGROUND_RATIO:-'10'}////dirty_background_ratio

397DEF_DIRTY_RATIO=${DEF_DIRTY_RATIO:-'40'}//dirty_ratio

 

路径:system/core/rootdir/init.rc

write/proc/sys/vm/dirty_background_bytes 4194304  // dirty_background_bytes

0 0
原创粉丝点击