zfs no FreeBSD 10

3

Encontrei o que considero um problema de desempenho muito estranho

Eu tenho um aplicativo que processa alguns dados e cria 100 GB ou mais de arquivos. Isso corre bem, e eu posso scp os arquivos fora da máquina depois. Os discos locais são ZFS, talvez esse seja o problema.

Se, no entanto, eu executar outro utilitário que mmapa os arquivos e troca os bytes dos arquivos, antes de copiar os arquivos, os arquivos: 1) transferência muito mais lenta, talvez 50mb / s (ou pior) de um disco de estado sólido, o systat -iostat mostra um nível de transações de disco muito maior. 2) a memória com fio da máquina passa pelo teto, para acomodar um ARC de mais de 70 GB Um arco de 70GB parece ridículo, já que é cerca de um quarto do armazenamento em disco local. Se após a transferência os arquivos forem apagados, o ARC cai, mas a memória com fio não parece. Alguma idéia do que está acontecendo?

    
por camelccc 16.03.2017 / 02:16

1 resposta

2

O ZFS em plataformas não-Solaris parece ter um desempenho muito ruim quando mmap() é usado para gravar dados.

Veja este tópico da antiga lista de discussão do OpenSolaris :

Remedies for suboptimal mmap performance on zfs

I'm getting sub-optimal performance with an mmap based database (mongodb) which is running on zfs of Solaris 10u9.

...

Isso foi em uma versão mais antiga do Solaris. Isso é relevante por causa de este tópico de julho de 2016 da lista de discussão do FreeBSD (ênfase adicionada ):

Short story: ZFS was tacked on the kernel and was never properly integrated into the VM page management, which leads to DRAMATIC poor performance for anything which uses mmap() for write IO. This was solved in Oracle Solaris with the great VM allocator rewrite which landed after Opensolaris was made closed source again.

Without a complete rewrite of the VM system this problem is unsolvable.

com este acompanhamento :

... since the initial import very little has been done to improve integration, and I don't know of anyone who is up to the task taking an interest in it. Consequently, mmap() performance is likely "doomed" for the foreseeable future.

Então o problema foi corrigido no Solaris, mas não no FreeBSD.

Se você precisar de um desempenho mais rápido em mmap() , recomendo limitar drasticamente o tamanho do seu ZFS ARC. Isso deve reduzir o impacto de problemas de coerência entre o cache de páginas que o mmap() usa e o ARC. Isso pode melhorar o desempenho. Então, novamente, talvez não. Mas vale a pena tentar. Apenas não seja muito pequeno, ou seu limite de ARC será ignorado.

    
por 16.03.2017 / 11:42

Tags