9

Я недавно взял Crucial M500 240GB SSD (20 нм NAND), и я пытаюсь найти лучший способ его разбить. В настоящее время я использую fdisk -cu начиная с сектора 2048 .

Я считаю, что nand page size составляет 16 КБ.

Я нигде не могу найти, каков nand erase block size для него.

Кто-нибудь знает ответ на этот или общий совет по разделению этой конкретной серии SSD?

3 ответа3

5

Эта информация иногда публикуется в спецификациях производителя SSD, но в других случаях ее нет, особенно для карт памяти CF или SD. Если не использовать Google для поиска кого-то, кто проводил исследование, вы можете попытаться оценить его самостоятельно с помощью FlashBench. Загрузите его здесь: https://github.com/bradfa/flashbench

Этот инструмент выполняет случайное чтение на SSD и строит таблицу, показывающую время чтения. (Вы должны были уже сделать некоторые записи на SSD, потому что чтение стертых страниц часто моделируется микросхемой контроллера.) Просматривая разрывы времени по размеру блока, вы можете определить, какой размер блока стирания. Вот образец из README:

== Угадай стереть блок и размеры страницы ==

''flashbench -a <device>''

Это простой тест, предназначенный только для чтения, который выполняет небольшие операции чтения через границы разных размеров. Пример:

$ sudo ./flashbench -a /dev/mmcblk0  --blocksize=1024
align 134217728 pre 735µs       on 1.08ms       post 780µs      diff 324µs
align 67108864  pre 736µs       on 1.05ms       post 763µs      diff 300µs
align 33554432  pre 722µs       on 1.04ms       post 763µs      diff 294µs
align 16777216  pre 727µs       on 1.05ms       post 772µs      diff 302µs
align 8388608   pre 724µs       on 1.04ms       post 768µs      diff 299µs
align 4194304   pre 741µs       on 1.08ms       post 788µs      diff 317µs
align 2097152   pre 745µs       on 950µs        post 811µs      diff 171µs
align 1048576   pre 745µs       on 945µs        post 807µs      diff 169µs
align 524288    pre 743µs       on 936µs        post 799µs      diff 165µs
align 262144    pre 746µs       on 948µs        post 809µs      diff 171µs
align 131072    pre 737µs       on 935µs        post 804µs      diff 165µs
align 65536     pre 735µs       on 925µs        post 796µs      diff 159µs
align 32768     pre 735µs       on 925µs        post 800µs      diff 157µs
align 16384     pre 745µs       on 911µs        post 781µs      diff 148µs
align 8192      pre 785µs       on 808µs        post 725µs      diff 53.3µs
align 4096      pre 784µs       on 788µs        post 779µs      diff 5.85µs
align 2048      pre 787µs       on 793µs        post 789µs      diff 4.65µs

Это показывает время доступа для двух 1024-байтовых чтений вокруг границ выровненных блоков степени двух. Чтение в конце блока 128 МБ занимает около 735 микросекунд, чтение последнего блока этого блока вместе с первым блоком следующего занимает около 1080 микросекунд, а чтение первых двух блоков в блоке 128 МБ - около 780 микросекунд.

Самое интересное число здесь - последнее, разница между вторым числом и средним значением первого и третьего составляет 324 микросекунды. Все эти цифры остаются примерно одинаковыми для всех устройств от 4 МБ до 128 МБ.

Однако от 2 МБ до 16 КБ последний столбец имеет гораздо меньшее значение. Это указывает на то, что все, что делает карта памяти на границе 4 МБ, не происходит на других границах. Обоснованное предположение здесь состоит в том, что 4 МБ - это размер стираемого блока, также называемый размером сегмента или единицы выделения. Этот размер блока стирания нужно будет использовать в других тестах, следующих за этим.

Точно так же границы как 16 КБ, так и 8 КБ являются особыми. Логическим объяснением этого является то, что карта имеет 8 КБ страниц, но может использовать многоплоскостной доступ для одновременного чтения двух 8 КБ страниц.

Некоторые карты показывают четкий шаблон, используя доступ с определенными размерами блоков, другие карты не показывают никакого шаблона, что означает, что числа должны быть определены по-разному.

Кроме того, карты, которые никогда не были полностью записаны, могут демонстрировать другое поведение, поскольку время доступа к предварительно стертым сегментам отличается от времени записи.

0

Размер стираемого блока не имеет отношения к выравниванию, а M500 поддерживает сборку мусора, поэтому производительность не является проблемой. Пожалуйста, обратитесь ко 2-й странице этого PDF-файла с сайта micron, который поможет вам определить размер стираемого блока на основе NAND, используемого в вашем M500.

Что касается советов по выравниванию, пожалуйста, ознакомьтесь с этой фантастической записью суперпользователя.

Вот скриншот страницы:

0

Другая попытка состоит в выравнивании по границе, кратной любому практическому размеру блока.

С этой концепцией наиболее распространено выравнивание на границе 1 МБ, поэтому не имеет значения, если размер блока равен 4 или 16 КБ; все они будут мультипликаторами от 2 и ниже 1M, поэтому выравнивание по этой границе подойдет всем.

Однако применение этой концепции зависит от того, что вы выравниваете; потеря 1 МБ в начале запоминающего устройства является полностью приемлемой, в то время как потеря много раз в другом сценарии может быть невозможной.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .