Comunismo Digital

Bits compartilhados e trabalho socializado: bem-vindo à computação em cluster

“Duas cabeças pensam melhor do que uma”. Quem nunca ouviu esse ditado? No fundo, ele remete a algo que, segundo as empresas de recursos humanos, é bastante valorizado em qualquer profissional hoje em dia: a capacidade de trabalhar em conjunto.

Discussões homéricas podem surgir em torno das conclusões e dos estudos dos especialistas em RH, mas a verdade é que o trabalho em conjunto é de fato importante. Você mesmo, caro leitor, foi feito literalmente de uma ação em conjunto – de mamãe e papai.

Bits compartilhados e trabalho socializado: bem-vindo à computação em cluster

“Duas cabeças pensam melhor do que uma”. Quem nunca ouviu esse ditado? No fundo, ele remete a algo que, segundo as empresas de recursos humanos, é bastante valorizado em qualquer profissional hoje em dia: a capacidade de trabalhar em conjunto.

Discussões homéricas podem surgir em torno das conclusões e dos estudos dos especialistas em RH, mas a verdade é que o trabalho em conjunto é de fato importante. Você mesmo, caro leitor, foi feito literalmente de uma ação em conjunto – de mamãe e papai.

A idéia de dividir e compartilhar para alcançar resultados melhores e mais rápidos está bem presente na informática. O próprio Linux é o que é hoje devido a essa filosofia, que ainda aparece em campos tão distintos quanto os da computação distribuída e da Web Arte, temas de que já tratamos aqui na Geek (#20 e #24, respectivamente).

Num mundo em que redes, servidores, roteadores, máquinas-clientes e protocolos se tornam cada vez mais presentes no dia-a-dia, uma forma de processar dados de forma compartilhada vem se destacando no universo da informática: o cluster.

Em inglês,a palavra “cluster” está ligada à noção de conjunto, sendo utilizada até na biologia e na economia. Na informática, não é diferente: (ambiente de) cluster é o nome dado a um grupo de computadores que trabalham em conjunto num processamento compartilhado, de modo a executar este processamento como se fossem um só, mas com maior capacidade e rapidez do que se a tarefa fosse feita em uma única máquina.

Multiprocessamento e paralelismo

É possível relacionar a noção de cluster à de multiprocessamento, que, numa definição clássica e simplista,é o processo que ocorre quando dois ou mais processadores de um computador agem simultaneamente na execução de tarefas.

Essa idéia de somar capacidade de processamento de diferentes máquinas, porém, está atrás não só da noção de cluster – que a amplia para incluir outras máquinas –, mas também na de computação distribuída, procedimento usado em projetos como o SETI@home (http://setiathome.ssl.berkeley.edu ).

A diferença é que o cluster ocorre essencialmente em servidores, executando o que chamamos de computação paralela: máquinas de um mesmo ambiente de rede,processando dentro de um mesmo sistema operacional, visando atender às demandas dos clientes com
maior rapidez e segurança. Já a computação distribuída não necessariamente utiliza o mesmo SO e mistura as funções de cliente e servidor (no que se assemelha com o P2P), atuando num ambiente mais aberto (em geral, a totalidade da Internet, que é uma rede de redes).

Estas, evidentemente, são também definições tradicionais. À medida que a popularização da técnica e da informação permite que se construam clusters utilizando até computadores domésticos, alguns itens ficam um tanto perdidos, como é o caso, para o cluster, da separação entre servidor e cliente.

Moda brasileira

Na Internet, é possível encontrar projetos independentes, inclusive brasileiros, para a construção de clusters domésticos. Dois deles, o LC3 (Low Cost Computer Cluster)e o Multipingüim ensinam ao utilizador como montar seu próprio cluster. O objetivo é criar um ambiente com alta capacidade de processamento sem gastar muito – e engana-se quem pensa que iniciativa assim é coisa de amador.

Os idealizadores dos projetos – Márcio de Sousa Pessoa e Marcos Pitanga, respectivamente – já são manjados na área. Pitanga, inclusive, tem um livro publicado pela editora Brasport (www.brasport.com.br): Construindo Supercomputadores em Linux.

O embrião do projeto LC3, de Márcio Pessoa, surgiu quando o técnico tomou contato com problemas computacionais que exigiam grande demanda de processamento, a qual, inicialmente, se destinava a cálculos matemáticos específicos, como simulações científicas, identificação de números primos e cálculos com elementos finitos.

Atualmente, o LC3 é usado por três pessoas, incluindo o próprio Márcio, para pesquisas, executando cálculos e renderizando imagens com o software POV-Ray (www.provray.org).

Marcos Pitanga, por sua vez, montou o Multipingüim atendendo a um desafio proposto por sua orientadora de pós-graduação. Seu cluster também é indicado para o processamento de imagens e atende demandas específicas de desenvolvedores. Ambos os projetos, porém, podem ser usados para outras finalidades,por qualquer utilizador que necessite de alto poder de processamento. Os links, você encontra no final da matéria.

Informática, poesia e viagens espaciais

Os projetos dos brasileiros evocam uma outra característica do cluster: ainda que ele seja instalado em companhias, provedores, etc., o fator que o originou, além do aumento da performance, foi exatamente a possibilidade de gastar menos, embora, é claro, o “menos ” de uma empresa não corresponda ao “menos ” de um utilizador doméstico.

A necessidade de compartilhar para economizar surgiu inicialmente na NASA, a agência espacial norte-americana. A agência já possuía demandas que remetiam à computação de alta performance, mas os supercomputadores, muito caros, estavam fora de questão: não havia dinheiro para financiar a construção de uma máquina com o poder de processamento que eles precisavam.

Foi aí que surgiram os salvadores da pátria: Thomas Sterling e Don Becker, que, usando 16 computadores equipados com chips DX4 a 100 MHz e conectados por meio de Ethernet, construíram o primeiro cluster da história.Era o verão de 1994. A “máquina ” criada pela dupla recebeu o nome de Beowulf, título de um poema épico datado do século VIII,o mais antigo escrito existente em inglês. Sterling e Becker trabalhavam para o CESDIS – Center of Excellence in Space Data and Information Sciences –, uma divisão da USRA – Universities Space Research Association.

O sucesso do Beowulf foi incontestável,e logo ele se disseminaria por toda a NASA e entre pesquisadores e setores acadêmicos. A “máquina ” inicial acabou resultando num projeto, o Projeto Beowulf, e se transformou num tipo especial de cluster – Beowulf Class Cluster Computers – dentro da computação de alta performance (ou alto desempenho). Atualmente, o projeto é de responsabilidade da Scyld Computing Corporation, companhia fundada pelos participantes do Beowulf original.

Alto Desempenho X Alta Disponibilidade

A computação de alta performance ou alto desempenho (em inglês, High Performance Computing – HPC), cuja finalidade é realizar tarefas que exijam alto poder de processamento, está no coração da origem do cluster. Os clusters HPC têm,
portanto, o objetivo de potencializar ações computacionais específicas em torno de um objetivo comum,gerando resultados mais rápidos e eficientes.

Geralmente, os utilizadores deste tipo de cluster são cientistas ou pesquisadores que lidam com dados complexos, mas
existem inúmeras outras aplicações, inclusive no cinema. No filme Titanic, por exemplo, dezenas de máquinas Linux e
Windows NT foram usadas na renderização de imagens, para conferir um aspecto mais realista à obra.

Existe,porém,um outro tipo de cluster, o cluster de alta disponibilidade (em inglês, High Avaliability – HA). Muito usado
por provedores, o cluster HA é constituído de tal forma que permite a redundância de partes do sistema – e, portanto, de
equipamentos –, visando manter um determinado serviço ininterruptamente. Em outras palavras:no caso de ocorrer um
problema técnico em uma máquina,sua utilização é transmitida para outra,permitindo total disponibilidade do serviço,
mesmo que um dos servidores do cluster venha a “cair”.

Antes de instalar um cluster, portanto, o interessado deve avaliar se deseja alto desempenho ou alta disponibilidade, pois
em cima desta decisão é que toda a configuração do ambiente será montada e o sistema operacional, escolhido – embora
haja uma hegemonia de sistemas Unix, com o Linux manifestando grande crescimento. Em seguida, há a parte da adaptação das aplicações desejadas para a computação paralela, sendo que, na maioria das vezes,é necessário escrever um programa.

Há também ocasiões em que se exige de um cluster atingir os dois objetivos, alta disponibilidade e alto desempenho,
concomitantemente. Se for este o caso,as atitudes a serem tomadas serão, evidentemente, mais complexas, e encarecerão os custos de implantação.

Nós homogêneos, lucros substanciais

Não é difícil concluir que um cluster é uma espécie de rede – e é mesmo. A ele, inclusive, atribui-se características e nomenclaturas similares às redes comuns,como a arquitetura em nós. A diferença é que o cluster é homogêneo, ou seja, trata-se, aos olhos do operador, de uma só máquina, de maneira que já podemos remover as aspas que usamos ao contar a história da criação do Beowulf.

Grosso modo, cada computador participante do cluster se constitui em um nó de rede, por meio do qual trafegam os dados transmitidos na cooperação e comunicação entre as diferentes máquinas, permitindo coordenar e organizar todas as ações subjacentes. Uma vez que as aplicações que rodam no cluster são, quase sempre, do tipo missão crítica, esta organização precisa transcorrer de forma perfeita e eficaz, sob pena de se perder todo o trabalho. A eficácia, por sua vez, deve ser guiada por alguns princípios básicos. Além de agir realmente como se fosse um único sistema e uma única máquina e ser padronizado – inclusive no sistema operacional, como já dissemos – e formado por computadores comuns, um cluster bem constituído também deve permitir a inclusão de nós e dispositivos sem interrupção dos serviços (neste caso,especialmente se for do tipo HA), ser capaz de detectar falhas internas, agir automaticamente para não comprometer suas atividades e ser dotado de mecanismos que facilitem configurar, gerenciar e fazer manutenções no sistema.

Evidentemente, as empresas de hardware e software já há muito tempo põem os olhos nessa demanda,oferecendo para as
corporações equipamentos e dispositivos bem distantes da realidade de muitos de nós, simples mortais, como os chips de 64 bits, ao estilo do Itanium, da Intel.

HP, Sun Microsystems e IBM são alguns dos destaques neste disputado – e lucrativo – mercado. A Big Blue, como todos sabem, vem investindo no Linux e,no final de 2001, produziu os primeiros clusters do Pingüim pré-configurados, o que deu um importante impulso para a adoção do software livre no ambiente da computação de alto desempenho.

Para saber mais:

www.ime.usp.br/~nelio/publications/linuxha/html/linuxha.html: texto acadêmico que trata de Linux e clusters HA

www.gabrieltorres.com.br/super.html e

www.multipinguim.hpg.ig.com.br: Projeto Multipingüim

www.lc3.underlinux.com.br: Projeto LC3 (contém noções sobre clusters)

www.beowulf.org: Projeto Beowulf

Por João Marinho com colaboração de Márcio de Sousa Pessoa

Este artigo foi originalmente publicado pela revista revista Geek número 26 (Outubro de 2002 – Editora Digerati – ISSN 1516-9650). Homepage: www.geek.com.br

A idéia de dividir e compartilhar para alcançar resultados melhores e mais rápidos está bem presente na informática. O próprio Linux é o que é hoje devido a essa filosofia, que ainda aparece em campos tão distintos quanto os da computação distribuída e da Web Arte, temas de que já tratamos aqui na Geek (#20 e #24, respectivamente).

Num mundo em que redes, servidores, roteadores, máquinas-clientes e protocolos se tornam cada vez mais presentes no dia-a-dia, uma forma de processar dados de forma compartilhada vem se destacando no universo da informática: o cluster.

Em inglês,a palavra “cluster” está ligada à noção de conjunto, sendo utilizada até na biologia e na economia. Na informática, não é diferente: (ambiente de) cluster é o nome dado a um grupo de computadores que trabalham em conjunto num processamento compartilhado, de modo a executar este processamento como se fossem um só, mas com maior capacidade e rapidez do que se a tarefa fosse feita em uma única máquina.

Multiprocessamento e paralelismo

É possível relacionar a noção de cluster à de multiprocessamento, que, numa definição clássica e simplista,é o processo que ocorre quando dois ou mais processadores de um computador agem simultaneamente na execução de tarefas.

Essa idéia de somar capacidade de processamento de diferentes máquinas, porém, está atrás não só da noção de cluster – que a amplia para incluir outras máquinas –, mas também na de computação distribuída, procedimento usado em projetos como o SETI@home (http://setiathome.ssl.berkeley.edu ).

A diferença é que o cluster ocorre essencialmente em servidores, executando o que chamamos de computação paralela: máquinas de um mesmo ambiente de rede,processando dentro de um mesmo sistema operacional, visando atender às demandas dos clientes com
maior rapidez e segurança. Já a computação distribuída não necessariamente utiliza o mesmo SO e mistura as funções de cliente e servidor (no que se assemelha com o P2P), atuando num ambiente mais aberto (em geral, a totalidade da Internet, que é uma rede de redes).

Estas, evidentemente, são também definições tradicionais. À medida que a popularização da técnica e da informação permite que se construam clusters utilizando até computadores domésticos, alguns itens ficam um tanto perdidos, como é o caso, para o cluster, da separação entre servidor e cliente.

Moda brasileira

Na Internet, é possível encontrar projetos independentes, inclusive brasileiros, para a construção de clusters domésticos. Dois deles, o LC3 (Low Cost Computer Cluster)e o Multipingüim ensinam ao utilizador como montar seu próprio cluster. O objetivo é criar um ambiente com alta capacidade de processamento sem gastar muito – e engana-se quem pensa que iniciativa assim é coisa de amador.

Os idealizadores dos projetos – Márcio de Sousa Pessoa e Marcos Pitanga, respectivamente – já são manjados na área. Pitanga, inclusive, tem um livro publicado pela editora Brasport (www.brasport.com.br): Construindo Supercomputadores em Linux.

O embrião do projeto LC3, de Márcio Pessoa, surgiu quando o técnico tomou contato com problemas computacionais que exigiam grande demanda de processamento, a qual, inicialmente, se destinava a cálculos matemáticos específicos, como simulações científicas, identificação de números primos e cálculos com elementos finitos.

Atualmente, o LC3 é usado por três pessoas, incluindo o próprio Márcio, para pesquisas, executando cálculos e renderizando imagens com o software POV-Ray (www.provray.org).

Marcos Pitanga, por sua vez, montou o Multipingüim atendendo a um desafio proposto por sua orientadora de pós-graduação. Seu cluster também é indicado para o processamento de imagens e atende demandas específicas de desenvolvedores. Ambos os projetos, porém, podem ser usados para outras finalidades,por qualquer utilizador que necessite de alto poder de processamento. Os links, você encontra no final da matéria.

Informática, poesia e viagens espaciais

Os projetos dos brasileiros evocam uma outra característica do cluster: ainda que ele seja instalado em companhias, provedores, etc., o fator que o originou, além do aumento da performance, foi exatamente a possibilidade de gastar menos, embora, é claro, o “menos ” de uma empresa não corresponda ao “menos ” de um utilizador doméstico.

A necessidade de compartilhar para economizar surgiu inicialmente na NASA, a agência espacial norte-americana. A agência já possuía demandas que remetiam à computação de alta performance, mas os supercomputadores, muito caros, estavam fora de questão: não havia dinheiro para financiar a construção de uma máquina com o poder de processamento que eles precisavam.

Foi aí que surgiram os salvadores da pátria: Thomas Sterling e Don Becker, que, usando 16 computadores equipados com chips DX4 a 100 MHz e conectados por meio de Ethernet, construíram o primeiro cluster da história.Era o verão de 1994. A “máquina ” criada pela dupla recebeu o nome de Beowulf, título de um poema épico datado do século VIII,o mais antigo escrito existente em inglês. Sterling e Becker trabalhavam para o CESDIS – Center of Excellence in Space Data and Information Sciences –, uma divisão da USRA – Universities Space Research Association.

O sucesso do Beowulf foi incontestável,e logo ele se disseminaria por toda a NASA e entre pesquisadores e setores acadêmicos. A “máquina ” inicial acabou resultando num projeto, o Projeto Beowulf, e se transformou num tipo especial de cluster – Beowulf Class Cluster Computers – dentro da computação de alta performance (ou alto desempenho). Atualmente, o projeto é de responsabilidade da Scyld Computing Corporation, companhia fundada pelos participantes do Beowulf original.

Alto Desempenho X Alta Disponibilidade

A computação de alta performance ou alto desempenho (em inglês, High Performance Computing – HPC), cuja finalidade é realizar tarefas que exijam alto poder de processamento, está no coração da origem do cluster. Os clusters HPC têm,
portanto, o objetivo de potencializar ações computacionais específicas em torno de um objetivo comum,gerando resultados mais rápidos e eficientes.

Geralmente, os utilizadores deste tipo de cluster são cientistas ou pesquisadores que lidam com dados complexos, mas
existem inúmeras outras aplicações, inclusive no cinema. No filme Titanic, por exemplo, dezenas de máquinas Linux e
Windows NT foram usadas na renderização de imagens, para conferir um aspecto mais realista à obra.

Existe,porém,um outro tipo de cluster, o cluster de alta disponibilidade (em inglês, High Avaliability – HA). Muito usado
por provedores, o cluster HA é constituído de tal forma que permite a redundância de partes do sistema – e, portanto, de
equipamentos –, visando manter um determinado serviço ininterruptamente. Em outras palavras:no caso de ocorrer um
problema técnico em uma máquina,sua utilização é transmitida para outra,permitindo total disponibilidade do serviço,
mesmo que um dos servidores do cluster venha a “cair”.

Antes de instalar um cluster, portanto, o interessado deve avaliar se deseja alto desempenho ou alta disponibilidade, pois
em cima desta decisão é que toda a configuração do ambiente será montada e o sistema operacional, escolhido – embora
haja uma hegemonia de sistemas Unix, com o Linux manifestando grande crescimento. Em seguida, há a parte da adaptação das aplicações desejadas para a computação paralela, sendo que, na maioria das vezes,é necessário escrever um programa.

Há também ocasiões em que se exige de um cluster atingir os dois objetivos, alta disponibilidade e alto desempenho,
concomitantemente. Se for este o caso,as atitudes a serem tomadas serão, evidentemente, mais complexas, e encarecerão os custos de implantação.

Nós homogêneos, lucros substanciais

Não é difícil concluir que um cluster é uma espécie de rede – e é mesmo. A ele, inclusive, atribui-se características e nomenclaturas similares às redes comuns,como a arquitetura em nós. A diferença é que o cluster é homogêneo, ou seja, trata-se, aos olhos do operador, de uma só máquina, de maneira que já podemos remover as aspas que usamos ao contar a história da criação do Beowulf.

Grosso modo, cada computador participante do cluster se constitui em um nó de rede, por meio do qual trafegam os dados transmitidos na cooperação e comunicação entre as diferentes máquinas, permitindo coordenar e organizar todas as ações subjacentes. Uma vez que as aplicações que rodam no cluster são, quase sempre, do tipo missão crítica, esta organização precisa transcorrer de forma perfeita e eficaz, sob pena de se perder todo o trabalho. A eficácia, por sua vez, deve ser guiada por alguns princípios básicos. Além de agir realmente como se fosse um único sistema e uma única máquina e ser padronizado – inclusive no sistema operacional, como já dissemos – e formado por computadores comuns, um cluster bem constituído também deve permitir a inclusão de nós e dispositivos sem interrupção dos serviços (neste caso,especialmente se for do tipo HA), ser capaz de detectar falhas internas, agir automaticamente para não comprometer suas atividades e ser dotado de mecanismos que facilitem configurar, gerenciar e fazer manutenções no sistema.

Evidentemente, as empresas de hardware e software já há muito tempo põem os olhos nessa demanda,oferecendo para as
corporações equipamentos e dispositivos bem distantes da realidade de muitos de nós, simples mortais, como os chips de 64 bits, ao estilo do Itanium, da Intel.

HP, Sun Microsystems e IBM são alguns dos destaques neste disputado – e lucrativo – mercado. A Big Blue, como todos sabem, vem investindo no Linux e,no final de 2001, produziu os primeiros clusters do Pingüim pré-configurados, o que deu um importante impulso para a adoção do software livre no ambiente da computação de alto desempenho.

Para saber mais:

www.ime.usp.br/~nelio/publications/linuxha/html/linuxha.html: texto acadêmico que trata de Linux e clusters HA

www.gabrieltorres.com.br/super.html e

www.multipinguim.hpg.ig.com.br: Projeto Multipingüim

www.lc3.underlinux.com.br: Projeto LC3 (contém noções sobre clusters)

www.beowulf.org: Projeto Beowulf

Por João Marinho com colaboração de Márcio de Sousa Pessoa

Este artigo foi originalmente publicado pela revista revista Geek número 26 (Outubro de 2002 – Editora Digerati – ISSN 1516-9650). Homepage: www.geek.com.br

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

One thought on “Comunismo Digital”

%d bloggers like this: