A largura de banda intercontinental é cara em dois sentidos: custa dinheiro na fatura de egress da cloud e custa tempo quando os artistas esperam que um asset desça pelo tubo. Um parque de render que não pensa nisto pode gastar uma fração significativa do wall-time de cada job a puxar a frio ficheiros de cena que já estão em cache noutro lado do edifício.
O padrão de cache partilhada é a alavanca mais simples e maior. Um servidor de cache Samba (SMB3) no datacenter principal guarda os assets do projeto. Cada nó de render monta a cache e lê os ficheiros de cena por LAN. Quando um novo asset é referenciado por um job, a cache puxa-o do armazenamento em cloud do cliente uma única vez. Cada nó subsequente que dele precise lê-o da cópia LAN. Um parque de 20 nós que de outra forma puxaria uma cena de 40 GB vinte vezes, puxa-a uma vez.
Em princípio é direto. Na prática, dois pedaços do design contam.
Evitar cache por nó. É tentador dar a cada nó de render o seu próprio SSD local grande e deixá-lo cachear o que quiser. Para um parque de 20 nós com 10 TB de dados de projeto, isto torna-se em 200 TB de armazenamento duplicado sem lógica de invalidação partilhada. Não fazemos isso. A cache partilhada é a única cache; os nós tratam os seus discos locais como espaço scratch, não como arquivo de projeto.
Pré-aquecer a cache antes do dia D. Quando um cliente anuncia que um projeto começa segunda-feira, pré-aquecemos a cache durante o fim de semana. O primeiro job de segunda lê de uma cache quente em vez de desencadear vinte horas de pulls a frio. É o método mais fiável para fazer com que a primeira renderização de um projeto pareça rápida.
Uma nota sobre right-sizing: a caixa de cache usa um único SSD SATA com sistema de ficheiros ext4. Para uma cache (por oposição a armazenamento primário), um layout de disco único é o compromisso correto. A cache não é a fonte de verdade — é-o o armazenamento em cloud do cliente — e a cache pode ser reconstruída ao re-puxar da cloud ou por rsync a partir de uma cópia de segurança do projeto. Montar um array redundante sobre um volume cifrado acrescentaria custo e complexidade sem mudar a história operacional; um nó que perde a cache é uma reconstrução de uma noite, não um evento de perda de dados. Dimensionar o hardware da cache para o seu papel é uma das formas mais simples de manter o custo de operação previsível.
Para equipas que ponderam um cluster permanente em vez de uma única implementação cross-country, a página dedicated cluster options cobre essa configuração em detalhe.