Como determinar o tamanho do bloco de apagamento Nand do SSD?

14

Recentemente, peguei um Crucial M500 240GB SSD (20nm NAND) e estou tentando descobrir a melhor maneira de particioná-lo. Atualmente, estou usando fdisk -cucomeçando no setor 2048.

Eu acredito que o nand page sizeé 16KB.

Não consigo encontrar em lugar algum o que nand erase block sizeé isso.

Alguém sabe a resposta para este ou conselhos gerais sobre o particionamento dessa série específica de SSDs?

Dacto
fonte
11
Pode ser necessário abrir a unidade e pesquisar no Google os números de peça nos chips NAND.
LawrenceC

Respostas:

7

Às vezes, essas informações são publicadas nas especificações do fabricante do SSD, mas outras vezes não existem, principalmente para cartões de memória CF ou SD. Além de usar o Google para procurar outra pessoa que fez a pesquisa, você pode tentar estimar isso usando o FlashBench. Faça o download aqui: https://github.com/bradfa/flashbench

Essa ferramenta faz leituras aleatórias em um SSD e plotará uma tabela mostrando os tempos de leitura. (Você já deve ter feito algumas gravações no SSD, porque a leitura de páginas totalmente apagadas é simulada pelo chip do controlador.) Ao procurar pausas no tempo pelo tamanho do bloco, é possível inferir qual é o tamanho do bloco de apagamento. Aqui está uma amostra do README:

== Adivinha apagar tamanhos de blocos e páginas ==

''flashbench -a <device>''

Este é um teste simples de somente leitura, que faz pequenas leituras através de limites de vários tamanhos. Exemplo:

$ 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

Isso mostra os tempos de acesso para duas leituras de 1024 bytes em torno dos limites de dois blocos alinhados. A leitura no final de uma unidade de 128 MB leva cerca de 735 microssegundos, a leitura do último bloco desta unidade juntamente com o primeiro bloco do próximo leva cerca de 1080 microssegundos e a leitura dos dois primeiros blocos em uma unidade de 128 MB leva cerca de 780 microssegundos.

O número mais interessante aqui é o último, a diferença entre o segundo número e a média do primeiro e do terceiro é de 324 microssegundos. Todos esses números permanecem praticamente os mesmos para todas as unidades entre 4 MB e 128 MB.

No entanto, de 2 MB a 16 KB, a última coluna tem um valor muito menor. Isso indica que o que o cartão de memória faz em um limite de 4 MB não acontece em outros limites. O palpite aqui é que 4 MB é o tamanho do bloco de apagamento, também chamado de tamanho do segmento ou da unidade de alocação. Essa eliminação do tamanho do bloco precisará ser usada em outros testes após este.

Da mesma forma, os limites de 16 e 8 KB são especiais. A explicação lógica para isso é que o cartão tem páginas de 8 KB, mas pode usar acessos de vários planos para ler duas páginas de 8 KB simultaneamente.

Alguns cartões mostram apenas um padrão claro usando acessos com determinados tamanhos de bloco, outros cartões não mostram nenhum padrão, o que significa que os números precisam ser determinados de forma diferente.

Além disso, os cartões que nunca foram totalmente gravados podem mostrar um comportamento diferente, porque os tempos de acesso nos segmentos pré-apagados são diferentes daqueles que foram gravados.

Greg Kennedy
fonte
2

Outra tentativa é alinhar um limite que é uma multiplicação de qualquer tamanho de bloco prático.

Com esse conceito, é mais comum alinhar no limite de 1 MB; portanto, não importa se o tamanho do bloco é de 4 ou 16kb; tudo isso será múltiplo de 2 e abaixo de 1 milhão; portanto, o alinhamento nesse limite será adequado a todos.

No entanto, a aplicação desse conceito depende do que você está alinhando; perder 1 MB no início de um dispositivo de armazenamento em massa é totalmente aceitável e perder várias vezes em um cenário diferente.

Manuel Arwed Schmidt
fonte
1

O tamanho do bloco de apagamento não afeta o alinhamento e o M500 suporta a coleta de lixo, portanto, o desempenho não é um problema. Consulte a segunda página deste PDF no site da micron, que ajudará a determinar o tamanho do bloco de apagamento com base no NAND usado no seu M500.

no que diz respeito ao conselho de alinhamento, confira este fantástico post de superusuário .

Aqui está a captura de tela da página: insira a descrição da imagem aqui

G Koe
fonte
2
Então, neste caso, onde neste diagrama o tamanho do bloco de apagamento seria fornecido?
Hbogert # 25/16