Случайная запись eMMC занимает больше времени

#linux-kernel #storage #flash-memory

#linux-ядро #Хранение #флэш-память

Вопрос:

Я анализирую, сколько времени требуется для записи 1 МБ в eMMC. Предполагается, что это происходит во время сбоя питания, поэтому время имеет решающее значение.

Я обнаружил, что запись может быть выполнена за 40 мс, и это нормально.
Однако случайным образом (один из нескольких сотен) это занимает более 200 мс, что плохо.

Почему происходит такое длительное время записи. Это Linux, или это eMMC, который занимается домашним хозяйством. Я подозреваю, что eMMC, но я не смог найти никаких статей об этом. Любые ссылки будут оценены.

Я запускаю этот тестовый скрипт в своем сценарии инициализации перед запуском чего-либо еще, поэтому скрипт остается один со всеми ресурсами

 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>amp;1)
t=$(echo $t | awk /real/'{print $9}' | tr -d 's.' )
echo $count $t
count=`expr $count   1`
done
  

Я также пытался записать напрямую в /dev/mmcblk0p1 с тем же результатом, поэтому файловая система, похоже, не имеет значения. Выполнение lttng в полной системе, по-видимому, указывает на то, что процессор ожидает прерывания от eMMC.

Моя настройка: ARMv7 LS1021A двухъядерный, 1 ГГц
ядро Linux 4.14.34
eMMC: Micron MTFC8GAKAJCN-4M ЭТО

Комментарии:

1. Что говорится в техническом описании для наихудшего времени программирования?

2. В техническом описании абсолютно ничего не сказано. В среднем всего 40 мс.