Como comparar o desempenho do disco no Linux

Como comparar o desempenho do disco no Linux

Acabei de comprar o mais recente e o melhor - e especialmente o mais rápido - SDD? Ou atualizou o cartão de memória microSD do seu telefone? Antes de começar a usar seu novo hardware brilhante, você pode executar uma verificação de desempenho na unidade. É a velocidade de gravação e leitura até as especificações do fabricante? Como seu desempenho se compara ao dos outros? É que a unidade flash de 1 TB que você comprou em um site de leilão da China realmente tão rápido quanto a listagem dizia? Vamos descobrir!

Neste tutorial, você aprenderá:

  • O que CLI (interface da linha de comando: sua festa ou outro ambiente de terminal) As ferramentas de medição de desempenho do disco estão disponíveis
  • Que GUI (interface gráfica do usuário: seu ambiente de desktop) Ferramenta de medição de desempenho do disco que recomendamos
  • Como medir efetivamente o desempenho do disco de maneira direta
  • Descubra e aprenda com vários exemplos de medição de desempenho em disco
  • Como ter uma sensação para a qualidade do hardware de disco/flash que você possui
Como comparar o desempenho do disco no Linux

Requisitos de software e convenções usadas

Requisitos de software e convenções de linha de comando Linux
Categoria Requisitos, convenções ou versão de software usada
Sistema Qualquer GNU/Linux
Programas N / D
Outro Acesso privilegiado ao seu sistema Linux como raiz ou através do sudo comando.
Convenções # - requer que os comandos Linux sejam executados com privilégios root diretamente como usuário root ou por uso de sudo comando
$ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular

Como avaliar o desempenho do disco no Linux - Ferramentas da CLI

Para começar, conecte sua unidade à sua máquina. Se for um SSD (unidade de estado sólido) ou disco rígido (unidade de disco rígido), você deseja desligar o computador, inserir a unidade e reiniciar o sistema. Para cartões SD, você geralmente usa um leitor de cartão SD que você pode inserir através de uma porta USB no seu computador. Para unidades de memória USB/flash, basta inseri -las através de uma porta USB no seu computador.

Em seguida, navegue para o seu prompt de terminal/comando (no Ubuntu
Por exemplo, você pode fazer isso simplesmente clicando Atividades no canto superior esquerdo da tela> tipo terminal e clique no ícone do terminal).

Na linha de comando, digite LSBLK:

$ lsblk | Grep SDC SDC 8:32 1 119.3G 0 disco 

Aqui estamos executando LSBLK: você pode ler isso como LS Blk: eu.e. Faça uma listagem semelhante a LS ('Listagem do diretório') em todos os volumes em massa (BLK).

Como você pode ver, há um 119.3G unidade disponível. Esta unidade é comercializada como 128 GB e é uma grande marca. Não é incomum que uma unidade de 128 GB seja exibida como apenas ~ 115-120G em LSBLK. Isto é porque LSBLK dará a você o resultado em Gibibyte (1 Gibibyte = 1073700000 bytes) enquanto os fabricantes de unidade vendem suas unidades usando o padrão "gigabyte" (a Gigabyte = 1000000000 bytes).

Podemos ver neste caso que isso funciona quase perfeitamente quando olhamos para o tamanho baseado em bytes:

$ lsblk -b | GREP SDC SDC 8:32 1 128043712512 0 DISCO 


E 119.3 (conforme relatado por lsblk) = 119.3 x 1073700000 = 128092410000. Então, quando você comprar a próxima unidade, leia a impressão fina na parte traseira e verifique se eles usam os bytes "1000" por Kilobyte ou os bytes "1024" por Kibibyte Standard. Quase sempre, será o primeiro.

Alguns fabricantes de SD até incluem o tamanho de uma área especial reservada para nivelamento de desgaste no cartão SD como espaço de disco principal, mas esse espaço não é acessível ao usuário e você pode terminar com apenas 115g mostrando como utilizável. Comprador, cuidado.

Quando você executa LSBLK Pela primeira vez, você vai querer levar algum tempo olhando para as várias unidades disponíveis. A maneira mais fácil de localizar um volume específico, por exemplo, uma unidade flash apenas inserida, é procurar um tamanho que corresponda aproximadamente ao tamanho do disco inserido.

Agora que sabemos que nossa nova unidade está rotulada sdc (Usa Linux SDA,sdb,sdc etc. De acordo com as unidades detectadas durante a startup e/ou inseridas), também sabemos onde o descritor de arquivo de dispositivo para este dispositivo está localizado (está sempre em /dev):

$ ls /dev /sdc /dev /sdc 

Além disso, se já houvesse partições na unidade, isso mostraria de maneira diferente, assim:

$ lsblk -b | GREP SDC SDC 8:32 1 128043712512 0 DISCO └─SDC1 8:33 1 128042663936 0 Parte 

Você pode ver como ele tem o disco (/dev/sdc - indicado por 'disco') e a primeira partição (/dev/sdc1 - indicado por 'parte'). Logicamente, a partição é um pouco menor do que o tamanho total do disco devido ao alinhamento/espaço reservado para a tabela de partição etc.

Finalmente, se você tiver outros tipos de dispositivos de armazenamento/disco, por exemplo, uma unidade NVME, isso pode mostrar, por exemplo, como:

$ lsblk | Grep NVME NVME0N1 259: 0 0 701.3g 0 disco ├─nvme0n1p1 259: 1 0 512m 0 parte /boot /efi ├─nvme0n1p2 259: 2 0 732m 0 Parte /bota └─nvMe0n1p3 259: 3 0 700g 0 Parte 

Aqui temos uma unidade NVME que hospeda 3 partições (P1, P2, P3) e os dois primeiros são pequenas partições de inicialização e a terceira é a nossa principal partição de dados. Como esta partição está em uso, não seremos capazes de ter acesso exclusivo ou Acesso não montado para isso. Isso se tornará relevante assim que discutirmos algumas das ferramentas abaixo.

Armado com essas informações, agora é fácil executar uma verificação básica de desempenho em disco contra esta unidade usando HDPARM:

$ sudo hdparm -ttv/dev/sdc1/dev/sdc1: multcount = 0 (desligado) readonly = 0 (desligado) readaHead = 256 (on) geometria = 15567/255/63, setores = 250083328, start = 2048 LEITAS CACHED : 36928 Mb em 1.99 segundos = 18531.46 MB/SEC Timing Buffers Disk Reads: 276 Mb em 3.02 segundos = 91.37 mb/s 

Podemos usar HDPARM para realizar horários para fins de referência e comparação, usando o -T (execute horários das leituras de cache) e -t (Execute horários das leituras do dispositivo) Opções.

Como você pode ver, nossas leituras em cache são extremamente rápidas (como é de se esperar; é armazenado em cache) e elas não são necessariamente um bom número para se passar, a menos que você esteja testando o desempenho do cache especificamente.

O número mais útil é a leitura do disco em buffer e eles entram 91.37 mb/s. Nada mal, pois o fabricante para esta unidade nem anunciou a velocidade de gravação.

Como o manual para HDPARM (-Tt opções) estados, Para resultados significativos, esta operação deve ser repetida 2-3 vezes em um sistema inativo (sem outros processos ativos) com pelo menos alguns megabytes de memória livre, Devemos executar outro teste para ter certeza de nossos resultados.

Um teste repetido, desta vez com apenas leituras em buffer e uma saída um pouco mais detalhada (alcançada adicionando a opção '-v'):

$ sudo hdparm -tv/dev/sdc1/dev/sdc1: multcount = 0 (desligado) readonly = 0 (desligado) readahead = 256 (on) geometria = 15567/255/63, setores = 250083328, 2048 Disco buffer de tempo Leia: 276 MB em 3.01 segundos = 91.54 mb/s 

Como podemos ver, o número relatado pelo HDPARM é bastante confiável.



Até agora, apenas discutimos velocidades de leitura. Vamos dar uma olhada em velocidades de gravação. Para isso, estaremos usando DD.

A maneira mais segura de fazer isso é primeiro criar um sistema de arquivos (fora do escopo deste artigo - para facilitar você, você pode usar uma ferramenta GUI como o GPARTED) e depois medir o desempenho com DD
. Observe que o tipo de sistema de arquivos (e.g. ext4, gord32,…) afetará o desempenho, usabilidade e segurança de sua unidade.

$ sudo su # cd /tmp # mkdir mnt # montagem /dev /sdc1 ./mnt # assume que há pelo menos 1 partição definida em /dev /sdc. Nesse caso, existe, e é uma partição ext4. # sincronização # echo 3>/proc/sys/vm/Drop_caches # dd if =/dev/zero de =/tmp/mnt/temp ofLag = direto bs = 128k contagem = 1g # nosso teste de desempenho real # rm -f/tmp /mnt/temp 

O teste de desempenho mostrará o seguinte:

# dd if =/dev/zero de =/tmp/mnt/temp oflag = Bs direto = 128k contagem = 16k 16384+0 registros em 16384+0 registra 2147483648 bytes (2.1 GB, 2.0 gib) copiado, 32.1541 s, 66.8 mb/s 

Como podemos ver, nossa unidade de 128 GB está teve um desempenho razoável com um 66.8 mb/s velocidade de escrita. Vamos verificar duas vezes o tamanho (arquivo de 4 GB) usando o contagem = 32k opção:

# dd if =/dev/zero de =/tmp/mnt/temp ofLag = BS direto = 128k contagem = 32k 32768+0 registros em 32768+0 registra 4294967296 bytes (4.3 GB, 4.0 gib) copiado, 66.7746 s, 64.3 mb/s 

Então, vamos olhar para tudo o que fizemos aqui.

Primeiro, elevamos os privilégios ao nível de sudo/raiz sudo su, E então criamos um mnt pasta em /tmp. Este será o nosso 'Mount Point', onde acessaremos nossa unidade de 128 GB de (depois de montá -lo usando montagem /dev /sdc1 ./mnt que efetivamente mapeia a primeira partição SDC1para o ./mnt (/tmp/mnt) pasta).

Depois disso, garantimos que todos os caches de arquivo do nosso sistema sejam sincronizados/vazios usando sincronizar. Este também é um comando prático para executar antes de um contagem e retirar suas unidades USB, pois garante que todos os dados que estavam sendo escritos na sua unidade USB sejam lavados no disco, em vez de permanecer na memória. Se você desmontar um disco na área de trabalho/GUI, ele executará um sincronizar para você em segundo plano antes de desmontar a unidade e posteriormente dizer que o disco está salvando para remover.

Em seguida, garantimos que todos os caches do sistema restantes sejam retirados da memória executando ECHO 3>/proc/sys/vm/Drop_caches. Embora os dois últimos dois comandos possam ser deixados de fora, especialmente porque estamos usando /dev/zero Como o dispositivo de entrada (um dispositivo virtual que continua a produzir zero sempre que acessado), é bom ter o sistema 'super limpo e pronto' para executar um teste de desempenho em disco! Basicamente, estamos certificando -se de que haja o mínimo possível de cache vai acontecer.

Em seguida, temos nosso principal teste de desempenho usando dd. A sintaxe de dd é bastante direto, mas diferente da maioria das outras ferramentas de linha de comando. Vejamos com alguns detalhes:

  • if =/dev/zero: Use o dispositivo /dev /zero como arquivo de entrada
  • de =/tmp/mnt/temp: Use o arquivo 'temp', localizado na partição (/disco), acabamos de montar em/tmp/mnt como o arquivo de saída
  • oflag = direto: Defina o sinalizador de saída 'direto', garantindo que 'usemos a E/S direta para dados', que eliminarão a maioria, se não todo o cache do sistema operacional
  • BS = 128k: Escreva até 128k bytes de cada vez. O padrão de 512 é muito pequeno e resultaria em não maximizar a possível velocidade de transferência
  • contagem = 16k: Copie blocos de entrada 16k, que totalizam cerca de 2.1 GB ou 2.0 Gib. Você pode ajustar essa variável, dependendo do tamanho da unidade e dos requisitos de precisão do desempenho da unidade (mais é melhor: mais confiável)

E finalmente excluímos o arquivo em que escrevemos com rm -f/tmp/mnt/temp.

Nota importante e aviso
Observe que se seu disco estivesse vazio e somente se você tiver certeza de completamente vazio e não contém dados valiosos, Você poderia fazer algo parecido com: de =/dev/sdc1 ou até de =/dev/sdc Para executar um teste de velocidade de acesso exclusivo / não montado.

Esta é uma maneira muito pura de testar o desempenho do disco, mas (!) Por favor, tenha muito cuidado Com o uso disso, como qualquer dispositivo ou partição especificada em de =… definitivamente será substituído com o que vier de qualquer se =… você especifica. Tomar cuidado.



Como avaliar o desempenho do disco no Linux - GUI Tool

Agora que você sabe como executar um teste de desempenho em disco na linha de comando, usando o HDPARM (para leitura) e dd (para gravação) Terminal/CLI Tools, vejamos a seguir o uso de uma ferramenta mais visual/gráfica dentro do ambiente da área de trabalho.

Se você estiver usando o Ubuntu, o sistema operacional de desktop Linux mais comum, existe um ótimo desempenho de disco utilitário construído no sistema operacional. É também uma das poucas (ou talvez apenas leituras disponíveis) ferramentas de teste de desempenho em disco disponíveis no Linux. A maioria das outras ferramentas é baseada na linha de comando ou não possui equivalentes ao Linux para seus colegas do Microsoft Windows. Por exemplo, não há contrapartida gráfica para o utilitário de desempenho do CrystalDiskmark Windows Disk.

Basta clicar Atividades no canto superior esquerdo da tela e digite discos que vai te mostrar o Discos Ícone (mostrando uma imagem de um disco rígido). Clique no mesmo para abrir o Discos Utilitário que tem uma construção na ferramenta de referência em disco.

Depois de abrir, use um único clique para selecionar seu disco no lado esquerdo da janela de diálogo e clique nos 3 pontos verticais próximos ao canto superior direito da janela de diálogo (à esquerda do botão Minimize). A partir daí, selecione a opção Disco de referência… Para abrir a ferramenta de benchmarking para a unidade selecionada. A janela 'Benchmark' será aberta.

Clique em Comece a referência… Para abrir a caixa de diálogo de configuração nomeada Configurações de referência. A partir daqui, recomendo que você defina as seguintes opções:

Taxa de transferência:

  • Número de amostras: 10
  • Tamanho da amostra (MIB): 1000 (este também é o máximo)
  • Execute o benchmark Write: Marched (leia as notas abaixo antes de iniciar o benchmark!)

Tempo de acesso:

  • Número de amostras: 1000

Então clique Comece a benchmarking… Para iniciar o teste. Vamos dar uma olhada nas configurações que fizemos aqui.

O tamanho máximo da amostra é de 1000 MIB, e este (1.048.576.000 bytes) é um ótimo número para testar, mas teria sido ótimo se pudéssemos selecionar tamanhos como 2 GB e 4 GB, como fizemos em nosso dd Linha de comando Disk Utility Write Teste acima. Vamos pegar 10 amostras, ou, em outras palavras.

Este utilitário de medição de desempenho de disco gráfico é muito inteligente, pois não destruirá dados em sua unidade, como por exemplo, DD pode fazer se você especificar incorretamente o de = configurar para ser um disco ou partição em vez de um arquivo.

A maneira como faz isso é - quando você seleciona executar um benchmark de gravação (como fizemos aqui) - é lendo dados da unidade no modo de acesso exclusivo (mais sobre isso em breve), depois escrevendo os mesmos dados para o mesmo localização! A menos que algum erro de gravação altamente estranho aconteça, é improvável que isso prejudique os dados em sua unidade (embora não garantis!). Se você passa seu cursor sobre o Execute o benchmark de gravação Configurando você pode ler um pouco mais sobre isso.

Acesso exclusivo significa simplesmente que a seleção da opção de gravação garantirá que sua unidade não seja montada antes do teste, disponibilizando -a apenas para esse utilitário sem que você possa acessá -lo de qualquer outro lugar enquanto o teste estiver em execução. Isso é necessário para que o teste de gravação seja executado corretamente. É o que você deseja em qualquer caso; eu.e. Você não deseja acessar sua unidade (ou copiar dados de/para a unidade) enquanto o teste está em execução, pois isso pode distorcer os resultados significativamente.

Também pedimos para levar 1000 amostras de tempo de acesso - eu.e. O tempo necessário para o sistema operacional acessar a unidade. Para os cartões SD, isso será bastante baixo, por exemplo, nosso cartão de 128 GB deu um tempo de acesso médio de apenas 0.71 ms em 1000 amostras, enquanto um disco mais lento pode resultar em tempos de acesso de 20 a 100 ms.

Diferença de desempenho SD vs HDD

A captura de tela acima mostra as diferenças claras na saída entre o teste de cartão SD de 128 GB e uma unidade de disco rígido de 3 TB.

Conclusão

Armado com as habilidades para medir a leitura do disco e escrever desempenho, qual será o seu próximo teste de desempenho da unidade? Informe -nos nos comentários abaixo e, se você acabar testando ou benchmarking SSD moderno, NVME, SD ou outro armazenamento flash, poste alguns dos resultados que você está vendo!

Tutoriais do Linux relacionados:

  • Como usar o ADB Android Debug Bridge para gerenciar seu Android…
  • Como instalar o Adobe Flash Player no Linux
  • Instale o Ubuntu 20.04 no Raspberry Pi
  • Teste de referência de unidade USB no Linux
  • Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
  • Como remover Bloatware do seu Samsung Android Mobile…
  • Coisas para instalar no Ubuntu 20.04
  • Uma introdução à automação, ferramentas e técnicas do Linux
  • Como espelhar sua tela móvel Android para Linux
  • Coisas para fazer depois de instalar o Ubuntu 22.04 Jellyfish…