首页 > 解决方案 > eMMC 随机写入耗时较长

问题描述

我正在分析将 1 MB 写入 eMMC 需要多长时间。它应该在电源故障期间发生,因此时间很关键。

我发现写入可以在 40 毫秒内完成,这很好。
然而随机(几百分之一)它需要超过 200 毫秒,这很糟糕。

为什么会发生这么长的写入时间。是Linux,还是eMMC正在做一些家务。我怀疑 eMMC,但我一直找不到任何关于此的文章。任何参考将不胜感激。

在启动其他任何东西之前,我在我的 init 脚本中运行这个测试脚本,因此该脚本与所有资源都是单独的

dd bs=4096 count=128 if=/dev/zero of=/tmp/e2
t=0
count=0
while [ $t -lt 20 ]
do
t=$(time dd if=/tmp/e2 of=/rootfs/data/test-nvram bs=4M 2>&1)
t=$(echo $t | awk /real/'{print $9}' | tr -d 's.' )
echo $count $t
count=`expr $count + 1`
done

我也尝试直接写入/dev/mmcblk0p1并得到相同的结果,因此文件系统似乎无关紧要。在整个系统上执行 lttng 似乎表明 CPU 正在等待来自 eMMC 的中断。

我的设置是:ARMv7 LS1021A 双核,1GHz
Linux 内核 4.14.34
eMMC:Micron MTFC8GAKAJCN-4M IT

标签: linux-kernelstorageflash-memory

解决方案


推荐阅读