Eu experimentei alguns problemas com taxa de transferência menor que o esperado com o NFS. Depois de examinar várias opções (googling sem fim), incluindo configuração de raid, interfaces de rede, etc., eu queria testar uma configuração básica, exportar um ramdisk montado em / media / ramdisk e acessá-lo através de localhost.
Os testes com o ramdisk mostram o mesmo padrão de problemas de desempenho que a minha exportação NFS SSD RAID0, com um grande impacto no desempenho ao acessar via NFS, e tanto o ataque SSD quanto o ramdisk atingem o máximo em aprox. 13K IOPS lidos e 4K IOPS escrevem.
Servidor:
Ubuntu 18.04, totalmente atualizado. VM com 5 GB de RAM e 8 processadores. (CPU do host: Intel (R) Core (TM) i7-4800)
Conteúdo de / etc / exports:
/media/ramdisk *(rw,async,no_subtree_check,fsid=1)
Montado via:
sudo mount 127.0.0.1:/media/ramdisk /mnt/ramdisk -o async
Saída do comando mount:
127.0.0.1:/media/ramdisk on /mnt/ramdisk type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)
Usando o fio para testar a velocidade do ramdisk sem o NFS com o seguinte comando:
sudo fio --randrepeat=1 --ioengine=libaio --direct=0 --gtod_reduce=1 --name=test1 --filename=/media/ramdisk/test --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75
Eu recebo:
read: IOPS=283k, BW=1107MiB/s (1160MB/s)(3070MiB/2774msec)
write: IOPS=94.7k, BW=370MiB/s (388MB/s)(1026MiB/2774msec)
cpu : usr=21.89%, sys=78.07%, ctx=5, majf=0, minf=7
Muito rápido, como esperado
Teste via NFS com o seguinte comando:
sudo fio --randrepeat=1 --ioengine=libaio --direct=0 --gtod_reduce=1 --name=test2 --filename=/mnt/ramdisk/test --bs=4k --iodepth=64 --size=4G --readwrite=randrw --rwmixread=75
Eu recebo:
read: IOPS=12.7k, BW=49.6MiB/s (51.0MB/s)(3070MiB/61951msec)
write: IOPS=4239, BW=16.6MiB/s (17.4MB/s)(1026MiB/61951msec)
cpu : usr=5.24%, sys=21.16%, ctx=786004, majf=0, minf=5
Estou monitorando o sistema no topo durante o teste, e nem a CPU nem a rede estão particularmente estressadas durante o teste.
Usando dd diretamente no ramdisk com:
sudo dd if=/media/ramdisk/test of=/dev/null bs=1M iflag=nocache status=progress
Eu recebo:
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 0.691044 s, 6.2 GB/s
Fazendo o mesmo via NFS (/ mnt / ramdisk / test), eu recebo:
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 2.58302 s, 1.7 GB/s
Eu aumentei RPCNFSDCOUNT para 64
Rodando iperf no localhost, recebo
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 64.6 GBytes 55.5 Gbits/sec
Portanto, aparentemente, o rendimento da rede é bom.
Então, o que pode estar atrasando o desempenho do NFS?