Processando o Saber nº 3, 2011 100 ANÁLISE DE DESEMPENHO DE RENDER FARM BASEADA EM LOKI RENDER SALGADO, Rodrigo Lopes, Especialista* * Faculdade de Tecnologia de Praia Grande CEETEPS - Centro Estadual de Educação Tecnológica Paula Souza Praça 19 de Janeiro, 144, Boqueirão, Praia Grande / SP, CEP: 11700-100 Telefone (13) 3591-1303
[email protected] RESUMO O presente trabalho apresenta um estudo de desempenho de uma render farm Loki Render. A princípio é apresentada a conceitualização teórica de computação distribuída, visto que a ferramenta estudada se apoia nesta arquitetura. Em um segundo momento o trabalho lista as ferramentas envolvidas neste processo, tanto a ferramenta principal quanto as pré-requeridas por ela e demonstra os dados dos diversos testes de desempenho realizados na render farm uma ponderação dos dados colhidos demonstrando pontos fortes e fracos da arquitetura e da ferramenta, de forma que possa contribuir para futuros estudos sobre a viabilidade de implantação de um cluster de renderização. PALAVRAS-CHAVE: Blender 3D, computação distribuída. ABSTRACT application studied is based on this architecture. Following the paper and shows the data of many performance tests conducted in render https://doi.org/10.5281/zenodo.15571849
Processando o Saber nº 3, 2011 101 farm already in place. Finally there is a weighting of the data collected showing strengths and weaknesses of the architecture and the tool so that may contribute to future studies on the feasibility of implementing a cluster rendering. KEY-WORDS: distributed computing. INTRODUÇÃO A computação distribuída é uma arquitetura de software em que uma coleção de computadores independentes se apresenta ao usuário como um sistema único e consistente, de acordo com Tanembaum que estes computadores independentes interligados são dotados de software que permita o compartilhamento dos recursos do sistema. Portanto, a computação distribuída pode ser entendida como uma arquitetura em que vários computadores atuam como se fossem apenas um, através de um software que, de um lado, gerencia os recursos compartilhados e, de outro, oferece-os ao usuário de forma transparente, sem que este visualize o agrupamento de computadores. É através da computação distribuída que diversas aplicações, comuns aos usuários atualmente, são viáveis, mesmo que estes usuários não notem a demanda de processamento ou a arquitetura utilizada. Pode-se citar algumas destas aplicações que exigem alta capacidade computacional como exemplo: aplicações de processamentos geoespaciais, simulações topológicas diversas (inclusive na busca por poços de petróleo), sistemas simuladores de previsão climática com simulações complexas de materiais, iluminação e física, análise de sinais, dentre tantas outras. O cenário de estudo deste trabalho ilustra as altas demandas de processamento é conhecido como renderização, e é justamente este
Processando o Saber nº 3, 2011 102 a utilização de computação distribuída para realizar processos de renderização é peculiarmente chamado de render farm. Existem diversas técnicas e ferramentas para se construir uma render farm. Podemos criá-la no âmbito do sistema operacional ou na camada de aplicativo. O trabalho apresentará a implementação de uma render farm através de um aplicativo cliente, que será instalado nos computadores e responderão ao aplicativo servidor, que será executado do computador de interface com o usuário. A ferramenta escolhida foi o aplicativo Loki Render, que é uma aplicação gratuita e de código livre. O Loki Render trabalha , que também é gratuita e de código livre. O trabalho consiste na renderização de diferentes projetos, que evoluirão em termos de complexidade, para monitorar se os ganhos de desempenho prometidos teoricamente pelos estudos de computação distribuída se aplicam na prática. Todos os testes serão realizados diversas vezes, incrementando-se a quantidade de computadores na servidor se torna custosa, e até onde a curva de benefício é atrativa. futuras pesquisas possam se orientar com dados efetivamente medidos em um ambiente real de produção, sem que seja necessária a construção de todo o cenário de testes que certamente consume muito tempo. 1 COMPUTAÇÃO DISTRIBUÍDA como uma arquitetura de software formada por vários computadores independentes que se apresentam ao usuário como um sistema complementam o conceito de computação distribuída com algumas computadores precisam de um software para orquestrar esta arquitetura. Atualmente, com a necessidade de consumir recursos de forma sustentável em evidência, aproveitar a ociosidade (mesmo que temporária) de equipamentos com capacidade de processamento tornase um processo nobre em TI. Além disto, a evolução dos computadores
Processando o Saber nº 3, 2011 103 em termos de potencial de processamento não acompanhou a demanda exigida pela maioria das aplicações. Percebe-se isto através dos computadores pessoais que ganham mais processadores (ou núcleos de processamento), visando incrementar o desempenho. Ainda assim, a limitação na capacidade de processamento impõe sérias restrições a alguns tipos de softwares, tais como manipuladores de imagens 3D, jogos, geoprocessamento, simulações climáticas, dentre outras. Uma forma de contornar esta limitação local de processamento é utilizar técnicas que possibilitem o processamento distribuído (DANTAS, 2005). Tanembaum (2007) sustenta que o sucesso de um projeto de computação distribuída deve-se a elaboração e a adoção de metas que devem ser rigorosamente cumpridas. 1.1 METAS DE SISTEMAS DISTRIBUÍDOS Segundo Tanembaum e Steem (2007), todos os sistemas distribuídos devem observar algumas metas que fazem com que sistemas a) compartilhamento de recursos; b) transparência; c) escalabilidade; d) e) f) desempenho; g) heterogeneidade. A principal meta a ser cumprida para qualquer sistema distribuído é o compartilhamento de recursos, sejam eles computadores, impressoras, dados, processadores, discos ou quaisquer outros elementos que possam destes aos usuários. A transparência é um termo largamente utilizando em Tecnologia da Informação (TI) em diversos contextos, e sempre denota que algum elemento ou característica desempenha sua função sem que o usuário (ou
Processando o Saber nº 3, 2011 104 desenvolvedor) perceba este elemento. No contexto de sistemas distribuídos, a transparência garante que o usuário não visualize a arquitetura de vários computadores conectados se apresentando como apenas um grande e potente computador. Outras características também são transparentes ao usuário de sistemas distribuídos, como por exemplo, a localização destes computadores, as funcionalidades de disponibilidade, correção de erros, replicação e concorrência. Outra importante meta é a escalabilidade, que permite que o incremento de novos computadores ao sistema distribuído ocorra da maneira menos impactante possível, em termos de tempo e custo. Coulouris (2005) reforça ainda que a escalabilidade pode se basear em outros aspectos além do tamanho (quantidade de usuários ou de computadores do sistema distribuído). A escalabilidade também pode ser abordada tanto na esfera a distância máxima entre os nós do sistema distribuído, permitindo (e restringindo) a escala de tamanho. A escalabilidade administrativa permite que centros de domínios administrativos possam ser acrescidos ao sistema implementação de mecanismos de tolerância a falhas que detectam e permitem a recuperação caso algum comportamento imprevisto do sistema possa vir a tanto preventiva quanto corretiva e perfectiva, sem que seja necessária a interrupção do funcionamento do sistema. O desempenho também é uma das razões para se distribuir um sistema, visto que deve ser sempre igual ou superior ao desempenho de um sistema centralizado, característica esta que é obtida pelo fato de ocorrer uma menor necessidade de transferência de dados e sincronização já que o paralelismo computacional é utilizado fazendo com que muitas tarefas ocorram nos nós do sistema distribuído, otimizando uso de cache, threads e concorrência do sistema como um todo. Além disto, o sistema distribuído deve ser tão heterogêneo quanto o possível, permitindo um elevado grau de portabilidade que garanta que diferentes plataformas possam utilizar os recursos compartilhados por este sistema. Este heterogeneidade é possível utilizando-se protocolos comuns para transferência de dados, por exemplo, o padrão XML1(eXtensible Markup Language) (DANTAS, 2005). 1 XML é uma linguagem de marcação recomendada pela W3C que descreve tipos de dados de modo a garantir o compartilhamento de informação através da internet e diferentes sistemas.
Processando o Saber nº 3, 2011 105 1.2 TIPOS DE SISTEMAS DISTRIBUÍDOS Os sistemas distribuídos podem ser classificados de três formas: sistemas de computação, sistemas de informação e sistemas pervasivos. Cada um deles explorando uma característica acerca da TI e fazendo uso do conceito de sistema distribuído para atingir seu objetivo. Os sistemas de computação distribuída podem ser de dois tipos: sistemas de computação de grade e sistemas de computação de cluster. Os sistemas de computação de grade se baseiam na grande diversidade de recursos de computação distribuídos em escala global, computação distribuída mais amplo, tanto no sentido de abrangência territorial quanto na capacidade de acoplar recursos heterogêneos. Os sistemas de computação de cluster possuem uma abrangência menor que a computação de grade e se baseiam fortemente na arquitetura cliente-servidor, onde um ponto computacional da rede assume o papel de servidor, tanto no âmbito de sistema operacional quanto de aplicação, gerenciando os demais pontos computacionais desta rede - os clientes - quanto a entrega de tarefas a serem processadas quanto a coleta e montagem dos dados já processados pelos clientes (PEDROSO, 2006). Segundo Saha (2003), os sistemas de informação distribuída assumem dois tipos: sistema de processamento de transações e sistemas de integração de aplicações empresariais. Os sistemas de processamento de transações envolvem mais de uma transação que devem ser executadas todas com sucesso ou, caso haja alguma falha, devem ser canceladas na sua completude. Em ciência da computação esta forma de transação é denominada “transação atômica”. O exemplo clássico que ilustra tal transação é o procedimento para uma transferência bancária. A transferência é uma transação atômica, que é composta por um débito em uma conta (transação 1) e o crédito em outra (transação 2). Se o débito ou o crédito falhar, toda a transação é desfeita e a transferência não ocorre, pois em hipótese alguma um débito poderá ser feito e o respectivo crédito não. Sistemas de integração de aplicações empresariais são baseados
Processando o Saber nº 3, 2011 106 em aplicativos que atuam com middlewares, integrando aplicações clientes a diversos servidores, de maneira que diferentes tecnologias e plataformas interajam entre si através de requisições e chamadas de procedimentos e métodos remotos. Saha (2003) cita os sistemas pervasivos como um paradigma em que os ambientes das máquinas e dos humanos se fundem. Um ambiente pervasivo consiste um ambiente em que a tecnologia se torna transparente, desaparecendo do ambiente humano. O papel do humano de entrar no ambiente tecnológico, realizar alguma tarefa e sair deste ambiente é descartado, estando o humano inserido no ambiente tecnológico o tempo todo, de forma que ele não perceba esta imersão. Os sistemas pervasivos necessitam da infraestrutura da computação distribuída pois diferentes equipamentos de distintas plataformas interagem entre si. A domótica2 é um exemplo de sistema distribuído pervasivo. Através deste sistema é possível integrar celulares, televisores, geladeiras e qualquer outro eletrodoméstico com capacidade computacional e infraestrutura de rede de forma a compor um único sistema distribuído (OGATA, 2003). Para Satyanarayanan (2001) a computação pervasiva oferece acesso imediato e uniforme às informações de maneira transparente, com dispositivos estáticos e móveis interagindo com o ambiente auxiliando o usuário na execução das suas tarefas. Outros exemplos de aplicações de sistemas distribuídos pervasivos são os sistema de acompanhamento e monitoramento de saúde, sistemas de automação baseado em sensores e demais sistemas com dispositivos que se interconectam com pouca (ou nenhuma) interação humana auxiliando o homem em suas tarefas diárias. 2 RENDER FARM De acordo com Brito (2010), para definir render farm é necessário o entendimento do termo renderização, e para tal é necessário 2 Domótica é a tecnologia de gestão de recursos computacionais presentes em casas. O termo tem origem na junção das palavras domus (do latim, casa) e robótica.
Processando o Saber nº 3, 2011 107 render. O termo render é utilizado em muitas outras áreas além de diversas características deste modelo e dos demais elementos que o cercam. Por exemplo, um modelo de um edifício em tempo de modelagem possui apenas forma e dimensão. Características como modelado (neste caso o edifício). Para visualizar a imagem do edifício renderização deste modelo. É neste momento que dezenas de milhares que compõe a imagem gerada considerando-se tudo o que pode interferir nesta cor (FOLEY, 1995). Esta tarefa consome muito tempo, exigindo assim um enorme potencial de processamento para que estes cálculos de renderização sejam realizados da forma mais rápida possível. O termo farm, que traduzido para o português significa “fazenda”, agregado a palavra render denota uma “fazenda de cluster de de processamento para a realização das tarefas de renderização. Patoli (2008) define render farm como um cluster de o objetivo de potencializar a capacidade de processamento para a renderização de imagens. O mercado de produção de animações de processamento para realizar a renderização das imagens, tornando esta tarefa extremamente lenta caso apenas um processador a desempenhe. Desta forma um cluster agruparia diversos processadores e delegaria a eles a tarefa desta renderização. Esta denominação é mundialmente conhecida e foi criada para fazer analogia a uma fazenda leiteira, onde uma vaca apenas não produz leiteira é diretamente proporcional à quantidade de vacas, portanto, quanto mais vacas, mais leite. A ideia da render farm é a mesma.
Processando o Saber nº 3, 2011 108 A escalabilidade originada pela computação distribuída permite inserir computadores com um custo de administração perto do desprezível, aumentando a capacidade de processamento em um mesmo período de tempo. Existem diversos tipos de render farms, variando apenas quanto criar uma render farm caseira, utilizando-se apenas dois computadores convencionais. Se hipoteticamente estes dois computadores possuírem as mesmas características em termos de processador, o ganho de tempo com a renderização estará na ordem de duas vezes. Não há nenhuma limitação quanto ao equipamento que irá compor o cluster de computadores, porém quanto maior o poder de processamento destes equipamentos, maior será o poder de processamento da render farm. O mesmo raciocínio é válido para a quantidade de núcleos que os processadores possuírem (BRITO, 2010). 3 BLENDER FOUNDATION E é um software mantido pela Blender Foundation, Amsterdã. O criador do aplicativo e presidente da fundação é Ton Rosendaal. O começou a ser desenvolvido em 1995 (sendo concluído em 1998) pela empresa recém fundada por Ton Rosendaal chamada Not a Number (NaN). A princípio este aplicativo foi criado com o intuito de ser um produto comercial, porém em 2002 a NaN encerrou assim o desenvolvimento e manutenção do . Neste mesmo ano a Blender Foundation foi criada e seus desenvolvedores passaram a desenvolver a aplicação no formato OpenSource (BLENDER, 2011). O aplicativo possui diversas ferramentas para o trabalho do materiais, motor para desenvolvimento de jogos, simulação física de e vídeo. O motor de renderização interno do conhecido como internal render atende satisfatoriamente diversas funcionalidades
Processando o Saber nº 3, 2011 115 Tabela 6 - Tempo médio de renderização Tempo Médio de Renderização (em segundos) Rodada 1 2 3 4 5 Computadores 1 2 4 8 16 PROJ I 60,04 30,57 15,73 8,19 4,23 PROJ II 756,14 392,00 203,67 106,14 54,80 PROJ III 8272,84 4254,87 2223,93 1146,94 594,96 Tabela 7 - Taxa de Ganho de Desempenho Taxa de Ganho de Desempenho em Relação a Rodada Anterior Rodada 1 2345 Computadores 1 2 4 8 16 PROJ I - 1,96 1,94 1,92 1,94 PROJ II - 1,93 1,92 1,92 1,94 PROJ III - 1,94 1,91 1,94 1,93 Evidencia-se assim o ganho de desempenho teorizado por muitos autores a respeito da utilização de uma arquitetura de computação distribuída, neste caso um cluster de computadores utilizado com o render farm. A taxa de ganho de desempenho para todos os três projetos variou dentro da mesma faixa valor, situando-se próximo de 1,93. Sendo assim, a cada vez que se dobra a quantidade de equipamentos (ou processadores) em uma render farm obtém-se um ganho médio que se através da curva de desempenho (tempo de renderização x quantidade de computadores).
Processando o Saber nº 3, 2011 116 7 CONCLUSÕES A arquitetura distribuída é de fato uma solução que potencializa capacidade de processamento. Este estudo analisou o desempenho efetivo proporcionado pelo modelo de computação distribuída aplicado através de um cluster com a proposta de renderizar imagens de render farm que foi estabelecida para esta análise considerou a variação de quantidade de computadores (processadores) que compunham a arquitetura distribuída e a complexidade do projeto a ser renderizado. O controle de distribuição das tarefas foi realizado pelo aplicativo de código aberto Loki Render, tendo uma versão cliente em cada computador da arquitetura e uma versão servidora em outro computador que não desempenhou papel de renderizador. Cinco rodadas de testes foram realizadas com um, dois, quatro, oito e dezesseis computadores sendo utilizados a cada rodada, respectivamente. A cada rodada também foram feitas três medições em diferentes dias para se obter um tempo médio de renderização. Após a coleta dos dados demonstrou-se que o ganho de desempenho proporcionado pela render farm atingiu uma taxa média de 1,93 e computadores nem com a complexidade do projeto renderizado.
Processando o Saber nº 3, 2011 117 Por isso, conclui-se que a computação distribuída, de fato, proporciona ganhos proporcionais a quantidade de computadores que compõem esta arquitetura. Outro ponto a ser observado é a continuidade do estudo com um cenário mais agressivo em termos de quantidade de aplicação que distribui as tarefas se torna mais lenta que a resposta dos o limite prático de computadores para a render farm. REFERÊNCIAS BIBLIOGRÁFICAS BLENDER FOUNDATION. Blender Foundation. BRITO, Allan. Blender 3D: Guia do Usuário. 4 ed. Novatec, 2010. COULOURIS, George; DOLLIMORE, Jean; KINDBERG, Tim. , 4 ed. Prentice Hall, 2005. DANTAS, Mário. redes, e grids computacionais. Rio de Janeiro: Axcel Books do Brasil, 2005. FOLEY, James D.; DAM, Andries van; HUGHES, John. . Addison-Wesley. 1995. LOKI RENDER. Loki Render. OGATA, Hiroaki; YANO, Yoneo. support language learning. In: KEST, p.1-6, 2003. PATOLI, Zeeshan. . Springer eBook, 2008.
Processando o Saber nº 3, 2011 118 PEDROSO, Edson Tessarini. Segurança em grades computacionais. Campinas: UNICAMP. Dissertação (mestrado profissional), defesa em julho, 2006. SAHA, D; MUKHERJEE, A. . IEEE Computer. India: Indian Institute of Management Calcutta – IIM-C, março, 2003. SATYANARAYANAN, M. Challenges. IEEE Personal Comunications. New York, v.4, n.8, agosto, 2001. TANENBAUM, Andrew S.; STEEN, Maarten van. 2 ed. Prentice Hall, 2007. TANENBAUM, Andrew S. Redes de Computadores. 3 ed. Rio de Janeiro: Campus, 1999.