emmc 性能優化



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

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.

discard nodiscard

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章