Use a ferramenta dd:
dd também é uma ferramenta de teste de disco que usamos com frequência. Depois de instalar o sistema no servidor Linux, queremos saber se a leitura e gravação do disco rígido pode atender às necessidades do serviço. Se o IO do disco rígido não puder ser atendido, será um gargalo do serviço. Podemos simplesmente usar o comando dd para testar:
O tempo tem uma função de temporização, dd é usado para copiar, ler de if e gravar em of. if=/dev/zero não gera IO, portanto pode ser usado para testar a velocidade de gravação pura. Da mesma forma, of=/dev/null não gera IO e pode ser usado para testar a velocidade de leitura pura. bs é o tamanho de cada leitura ou gravação, ou seja, o tamanho de um bloco, e count é o número de blocos lidos e gravados.
dd testa velocidade de gravação pura:
[root@docker sda]# time dd if=/dev/zero of=/mnt/sda/ddout bs=8k count=1000000
1000000+0 records in
1000000+0 records out
8192000000 bytes (8.2 GB, 7.6 GiB) copied, 43.1081 s, 190 MB/s
real 0m43.110s
user 0m0.207s
sys 0m3.914s
dd testa velocidade de leitura pura:
[root@docker sda]# time dd if=/mnt/sda/ddout of=/dev/null bs=8k count=1000000
1000000+0 records in
1000000+0 records out
8192000000 bytes (8.2 GB, 7.6 GiB) copied, 1.30322 s, 6.3 GB/s
real 0m1.306s
user 0m0.199s
sys 0m1.102s
dd testa a velocidade de leitura e gravação, que consiste em ler o arquivo do disco atual e depois gravá-lo no disco atual. Até certo ponto, quanto maior for a quantidade de cópias, maior será o tempo de leitura e escrita e mais precisos serão os resultados estatísticos. No entanto, os resultados do teste contêm menos informações e só podem ser usados como referência. Para mais modos de leitura e gravação e informações de teste, você pode usar os parâmetros do comando dd para configurar:
Use as três variáveis conv, iflag e oflag para configurar o modo do módulo de cópia, modo de leitura e modo de gravação do comando dd.
O comando dd ignora o cache do sistema:
如果要规避掉文件系统cache,直接读写,不使用buffer cache,需做这样的设置
iflag=direct,nonblock
oflag=direct,nonblock
Três maneiras clássicas de usar o comando dd:
dd if=/dev/zero of=test bs=64k count=16k é impreciso. Pode haver dados no cache do kernel que não estão sincronizados com o disco. Os dados principais devem ser marcados com fsync para evitar que os dados principais sejam perdidos;
dd if=/dev/zero of=test bs=64k count=16k conv=fsync é mais confiável, mas leva muito tempo. Ele gravará dados e metadados de arquivo no disco antes do final do dd;
dd if=/dev/zero of=test bs=64k count=4k oflag=dsync ou sync grava no disco toda vez que ele é gravado. Na operação real, você pode ouvir o som do disco e isso leva muito tempo;
Teste de desempenho SSD:
PCIe-SSD Optane: dd if=/dev/urandom of=./optane.bin bs=256k count=102400 (grave 25 GB de dados aleatórios sequencialmente)
M.2-STAT-SSD: dd if=/dev/urandom of=./m2sata.bin bs=256k count=102400 (escreva 25 GB de dados aleatórios sequencialmente)
M.2-NVMe-SSD: dd if=/dev/urandom of=./m2nvme.bin bs=256k count=102400 (escreva 25 GB de dados aleatórios sequencialmente)
HDD: dd if=/dev/urandom of=./sata.bin bs=256k count=102400 (grave 25 GB de dados aleatórios sequencialmente)