Estou tentando entender todas as implicações relevantes do valor --max-obj-size usado ao criar ums3qlsistema de arquivo. Ainda não encontrei uma descrição completa das implicações desta opção, mas consegui reunir algumas peças dos documentos e grupos de discussão.
Principalmente, encontrei motivos para usar valores maiores de --max-obj-size, o que me deixa pensando: por que não usar um valor arbitrariamente grande (10mb? 100mb? 1gb?):
- Valores menores significam que mais "inodes" são usados e pior desempenho do banco de dados sqlite (já que o mesmo número de arquivos requer mais entradas de inode)
- Valores menores podem prejudicar o rendimento (especialmente paraleituras sequenciais).
Da versão 1.8registro de alterações:
Na verdade, um tamanho pequeno de bloco S3QL nãonãotem alguma vantagem sobre um tamanho de bloco grande ao armazenar muitos arquivos pequenos. Um tamanho de bloco pequeno, entretanto, prejudica seriamente o desempenho ao armazenar arquivos maiores. Isso ocorre porque o S3QL está efetivamente usando um tamanho de bloco dinâmico e o valor --blocksize especifica um limite superior.
Até agora, as únicas vantagens que encontrei ou imaginei para blocos menores são:
- Menos largura de banda usada para reescrever uma parte de um arquivo
- Possivelmente melhor desduplicação
A opção --min-obj-size não afeta a desduplicação. A desduplicação acontece antes que os blocos sejam agrupados.
O --max-obj-size afeta a desduplicação, pois determina implicitamente o tamanho máximo de um bloco.
Encontradoaqui:
Alguém pode oferecer um resumo das compensações feitas ao selecionar um --max-obj-size maior ou menor ao criar um sistema de arquivos s3ql?