Armazenamento e limites de entrada e saída

Discos, flash, gargalos de taxa e sobreposição finita de transferências e cálculo.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Uma leitura aleatória de 8 KiB pode demorar mais de 8 ms num disco que transfere a 160 MB/s. A taxa anunciada não inclui, por si só, o posicionamento necessário para cada pedido. Distingue a latência de um pedido, a taxa sustentada de bytes e o número de pedidos por segundo.

Disco magnético

Acessos aleatórios pequenos podem pagar procura e rotação em cada pedido. Uma leitura contígua amortiza esses custos por muitos bytes. IOPS, operações por segundo, e MB/s exprimem limites diferentes.

O prato gira; a cabeça posiciona-se na pista. Pistas à mesma distância do centro, em superfícies distintas, formam um cilindro. Cada pista contém setores.

tpedido=tfila+tprocura+trotac¸a˜o+ttransfereˆncia+tcontrolador.t_{\rm pedido}=t_{\rm fila}+t_{\rm procura}+t_{\text{rotação}}+t_{\text{transferência}}+t_{\rm controlador}.

Para RPM rotações/minuto, uma volta demora 60/RPM segundos. Com posição angular aleatória, a espera média é meia volta: 30/RPM. A 7200 RPM são 4,167 ms em média.

Uma leitura de 8 KiB a 160 MB/s leva 8192/(160×106)=51,28192/(160\times10^6)=51,2 μs. Com procura 4 ms, rotação 4,167 ms e controlador 0,2 ms, sem fila, o total é:

4+4,167+0,0512+0,2=8,418 ms.4 + 4{,}167 + 0{,}0512 + 0{,}2 = 8{,}418\ \text{ms}.

A taxa de pedidos fica em 1/0,008418≈118,81/0{,}008418\approx118{,}8 pedidos/s, e a taxa útil em 8192/0,008418≈0,9738192/0{,}008418\approx0{,}973 MB/s. Não é 160 MB/s: a taxa anunciada só cobre a transferência, e a latência de posicionamento domina cada pedido pequeno.

Se um ficheiro contíguo exceder a capacidade útil de um cilindro, pode exigir novas procuras. Por exemplo, 600 kB em cilindros de 258 kB ocupam três cilindros e duas mudanças. Com procura inicial média de 10 ms, meia rotação de 3 ms, transferência a 100 MB/s, mudanças de 4 ms e controlador de 5 ms:

t=10+3+600000/(100×106)×1000+2×4+5=32 ms.t=10+3+600000/(100\times10^6)\times1000+2\times4+5=32\ \mathrm{ms}.

Este modelo assume colocação favorável e que as únicas procuras adicionais são as duas mudanças de cilindro. Leituras sequenciais amortizam posicionamento em muitos bytes. Se o problema já fornece o tempo médio incluindo rotação/controlador, não acrescentes essas parcelas outra vez.

Flash e SSD

Flash conserva dados sem alimentação. NOR permite leitura aleatória fina e é adequada a certos usos de código. NAND organiza leitura/escrita em páginas e apagamento em blocos maiores.

Uma página não se reescreve como RAM arbitrária: o controlador pode escrever uma página nova, atualizar mapeamento e recuperar blocos. Wear leveling distribui desgaste; garbage collection junta espaço e pode aumentar latência. SSD elimina procura mecânica e rotação, mas mantém custos de controlador, transferência e gestão interna.

Dados decimais e binários devem manter-se distintos: 1 MB=10⁶ bytes, 1 MiB=2²⁰ bytes, 1 KiB=1024 bytes. Uma taxa em MB/s pode transferir blocos em KiB, por isso converte ambos para bytes antes de dividir.

Escolher o dispositivo pelo tamanho do pedido

Um SSD remove a procura e a rotação, mas isso não obriga a sua taxa sustentada a ser maior em qualquer comparação. Considera um modelo de exercício: HDD a 20 MB/s com 50 ms fixos de posicionamento/controlador; SSD a 10 MB/s com latência fixa desprezável. São leituras contíguas, uma de cada vez, sem fila nem mudanças adicionais de pista.

Para BB bytes, os tempos em segundos são:

tH=0,050+B20×106.t_H=0,050+\frac{B}{20\times10^6}.

No SSD:

tS=B10×106.t_S=\frac{B}{10\times10^6}.

Com 40 KiB, B=40960B=40960: HDD demora 52,048 ms e SSD 4,096 ms. Não arredondes 40 KiB para 40 kB. O SSD ganha nesse pedido porque evita os 50 ms fixos.

A igualdade ocorre quando o tempo adicional de transferência do SSD compensa os 50 ms:

0,050=B(110×106−120×106).0,050=B\left(\frac1{10\times10^6}-\frac1{20\times10^6}\right).

Daqui resulta B=106B=10^6 bytes, ou 1 MB decimal. Nesse limiar, ambos demoram 100 ms. Abaixo dele, ganha o SSD; acima, ganha o HDD neste modelo. O resultado não compara os dispositivos atuais em geral: depende das taxas fornecidas, da colocação contígua e da ausência de outros atrasos.

O recurso que limita a taxa

A taxa sustentada não excede nenhum recurso necessário; para blocos iguais, calcula limites em blocos por segundo e toma o menor. Por exemplo, um CPU a 2 GHz que precisa de 40000 ciclos por pedido, um barramento de 640 MB/s e quatro discos de 1000 pedidos/s cada, com blocos de 64 KiB:

RecursoLimite
CPU2×109/40000=500002\times10^9/40000=50000 pedidos/s
Barramento640×106/65536=9765,625640\times10^6/65536=9765,625 pedidos/s
Discos4×1000=40004\times1000=4000 pedidos/s

Os discos limitam 4000 pedidos/s. A taxa útil é 4000×65536=2621440004000\times65536=262144000 bytes/s, ou 262,144 MB/s. Para atingir o barramento, precisaria de pelo menos 10 discos desse modelo; depois verifica controladores e outros limites.

Na conversão de unidades, 800 MB/s para blocos de 16 KiB dá 800×106/16384=48 828,125800\times10^6/16384=48\,828{,}125 blocos/s. Arredondar o bloco para 16000 B daria 50000 e mudaria o limite.

Se um controlador suporta 2000 pedidos/s e todos os discos passam por ele, esse limite entra no mínimo. Se existem dois controladores independentes, só soma as capacidades quando a divisão de carga e o caminho partilhado o permitem.

Sobreposição com dois buffers

Dois buffers permitem sobrepor transferência e processamento: o dispositivo preenche um enquanto o CPU processa o outro. Mantém três blocos de igual tamanho, com transferência de 4 ms e cálculo de 3 ms por bloco. A taxa em regime depende do estágio mais lento, mas um trabalho finito inclui a primeira transferência e o último processamento.

Segue cada bloco nas duas linhas: o CPU só o pode processar depois de terminar a sua transferência. Enquanto processa B1, DMA já transfere B2. Neste exemplo cada transferência demora mais do que o cálculo, por isso o CPU espera pelo primeiro bloco e volta a esperar entre blocos. Aos 12 ms, DMA termina, mas ainda falta processar B3 até aos 15 ms.

Com transferências de 4 ms e CPU de 3 ms por bloco, 3 blocos demoram 15 ms com sobreposição: primeira transferência 4, duas rondas de 4 e último cálculo 3. Sem sobreposição seriam 21 ms.

Para n≥1n\ge1 blocos, durações constantes tD,tCt_D,t_C, recursos independentes e preparação já incluída:

Tn=tD+tC+(n−1)max⁡(tD,tC).T_n=t_D+t_C+(n-1)\max(t_D,t_C).

Se CPU for mais lento, DMA pode esperar por um buffer livre. Mais buffers não ultrapassam o limite de taxa dos recursos. Se DMA e CPU disputam a mesma memória, a fórmula ideal pode deixar de aplicar-se.

Amdahl com entrada e saída

Um programa gasta 40% do tempo em CPU e 60% em I/O. Acelerar CPU 4 vezes deixa tempo relativo 0,4/4+0,6=0,70,4/4+0,6=0,7, ganho 1,429. Acelerar também I/O 2 vezes dá 0,1+0,3=0,40,1+0,3=0,4, ganho 2,5, para partes sequenciais e independentes.

Se as duas atividades se sobrepõem, mede o caminho crítico e os limites da sobreposição. Não somes tempos que já decorrem simultaneamente, nem substituas toda a execução por um máximo ignorando enchimento, esvaziamento e sincronização.

Exercícios

Decompor um pedido aleatório

Um disco roda a 7200 RPM, com posição angular inicial uniforme. Uma leitura de 8 KiB tem procura média de 4 ms, transferência de 160 MB/s decimais e controlador de 0,2 ms, sem fila. Calcula o tempo médio completo do pedido em ms.

Pista
Converte os KiB em bytes e todas as durações para ms.
Solução

A rotação média é 30/7200 s=4,1666667 ms; a transferência é 8192/(160×10⁶) s=0,0512 ms. O total é 4+4,1666667+0,0512+0,2=8,4178667 ms. A taxa anunciada só fornece a parcela de transferência.

Voltar à explicação
Conferir todos os recursos

CPU 2 GHz, 40000 ciclos/pedido; bus 640 MB/s; 4 discos 1000 pedidos/s; blocos 64 KiB; sem outros limites. Qual taxa sustentada máxima?

Pista
Exprime cada limite na mesma unidade.
Solução

Mínimo 4000 pedidos/s. Taxa útil 262,144 MB/s. O controlador não acrescenta limite neste enunciado.

Erros frequentes

Somar as capacidades de CPU e bus ou arredondar 64 KiB para 64000 bytes.

Voltar à explicação
Contar enchimento e conclusão

Três blocos, transferência 4 ms e processamento 3 ms por bloco, dois buffers, recursos independentes. Qual tempo total?

Pista

O primeiro cálculo só começa após a primeira transferência.

Solução

15 ms, porque DMA 0–4,4–8,8–12; CPU 4–7,8–11,12–15. São 21 ms sem sobreposição.

Erros frequentes

Responder 12 ms e omitir o processamento final.
Voltar à explicação
Acelerar partes distintas

40% do tempo é CPU e 60% I/O, sequenciais. CPU melhora 4 vezes, I/O 2 vezes. Qual rapidez relativa?

Pista
Soma as duas frações depois de as acelerar.
Solução

Tempo relativo 0,4; rapidez 2,5. A fórmula pressupõe partes sucessivas, sem sobreposição anterior.

Erros frequentes

Multiplicar 4 por 2 como ganho global ou aplicar os ganhos às mesmas frações duas vezes.

Voltar à explicação
Esperar por um buffer livre

Três blocos, transferência de 2 ms e processamento de 5 ms por bloco. Há dois buffers alternados, recursos independentes e preparação já incluída. Qual é o tempo total?

Pista
Depois do primeiro bloco, o CPU é o estágio mais lento.
Solução

17 ms. DMA transfere B1 em 0–2 e B2 em 2–4. O CPU processa B1 em 2–7; só então o primeiro buffer fica livre para DMA transferir B3 em 7–9. O CPU processa B2 em 7–12 e B3 em 12–17.

Erros frequentes

Transferir B3 para um buffer ainda usado pelo CPU ou omitir o enchimento inicial.

Voltar à explicação
Dimensionar controladores e verificar o barramento

Sete discos sustentam 10 MB/s cada. Cada controlador suporta até três discos e 30 MB/s; todos usam um barramento comum de 60 MB/s. Ignora CPU e outros custos. Quantos controladores permitem ligar os sete discos? Pode o sistema sustentar os 70 MB/s dos discos em simultâneo?

Solução

São precisos três controladores, com distribuição 3+3+1 discos. Isso dá capacidade suficiente nos controladores, mas todos passam pelo barramento de 60 MB/s. A taxa final não excede min(70,90,60)=60 MB/s. Acrescentar outro controlador não aumenta a capacidade desse barramento.

Confere a tua resposta:

  • Obtive taxa pedida de 70 MB/s.
  • Distribuí sete discos por três controladores de 30 MB/s.
  • Identifiquei o barramento de 60 MB/s como limite final.
Voltar à explicação
Encontrar a mudança de dispositivo preferível

Num modelo de exercício, um HDD tem 50 ms fixos por pedido e transfere a 20 MB/s; um SSD tem latência fixa desprezável e transfere a 10 MB/s. Ambos fazem leituras contíguas, sem fila nem posicionamento adicional, uma de cada vez. Compara uma leitura de 40 KiB e determina o limiar de tamanho em que a escolha muda. Usa taxas decimais, sem inferir capacidades de dispositivos reais.

Solução

40 KiB são 40960 bytes. HDD: 50+40960/(20×10⁶)×1000=52,048 ms. SSD: 40960/(10×10⁶)×1000=4,096 ms. No limiar, 0,050+B/(20×10⁶)=B/(10×10⁶), portanto B=1000000 bytes. Ambos demoram 100 ms para 1 MB. Abaixo, o SSD ganha pelo custo fixo; acima, o HDD ganha pela taxa maior. 1 MB não é 1 MiB.

Confere a tua resposta:

  • Converti 40 KiB para 40960 bytes.
  • Obtive 52,048 ms para HDD e 4,096 ms para SSD.
  • Obtive o limiar de 1000000 bytes, ou 1 MB decimal.
  • Expliquei a escolha abaixo, acima e no limiar.
Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.