quarta-feira, 2 de abril de 2014

Benchmark: Migrando do gitweb para cgit no Raspberry Pi

A muito tempo venho rodando git+webgit em um Raspberry Pi como servidor, inclusive publiquei aqui mesmo como melhorar o horrível desempenho do webgit no Raspberry Pi rodando ele com fastcgi: Raspberry Pi entrando em colapso com gitweb via lighttpd+mod_cgi. Então finalmente migrei para o cgit, a instalação é bem simples, lembrando que o cgit precisa de uma versão alterada do git, que pode ser instalada facilmente também.

Caso não tenha o lighttpd instalado, instale com:
sudo apt-get install lighttpd

Iremos baixar e descompactar a última versão do cgit:
wget http://git.zx2c4.com/cgit/snapshot/cgit-0.10.1.tar.xz
tar -xf  cgit-0.10.1.tar.xz

Entre no diretório:
cd cgit-0.10.1

E rodaremos o seguinte comando para baixar a versão apropriada do git:
make get-git

Iremos compilar tudo e instalar com:
make
sudo make install



Por padrão o executável cgi.cgi e o cgi.css serão instalados em /var/www/htdocs/cgit.

A cerca da configuração do cgit iremos criar um arquivo chamado cgitrc no /etc e colocar o seguinte conteúdo:



Onde você deverá substituir ao menos o scan-path para o diretório onde se encontra seu repositório.

Precisaremos configurar também o lighttpd para utilizar mod_cgi e o caminho do nosso cgi, no caso desse exemplo configurei o acesso direto sem vhosts no /etc/lighttpd/lighttpd.conf:




Após tudo configurado, iniciaremos nosso servidor web com:
lighttpd -f /etc/lighttpd/lighttpd.conf

Se tudo ocorreu bem, você verá a interface do cgit ao acessar o ip do seu Raspberry Pi.

Benchmark


Ao fazer benchmarks com http_load vimos que o server com cgit poderia responder em média 23.5 requisições/s, muito mais do que as 2,4 requisições/s do gitweb rodando como fastcgi.



Visto que havia pouco consumo da cpu provavelmente devido a banda de IO do cartão SD, resolvi colocar o cgit para a memória RAM, copiando a pasta /var/www/htdocs/cgit para /run e alterando o caminho no lighttpd.conf ,  os resultados foram bem promissores:

Imagem removida

Pulamos de 23.5 requisições/s para 140.9 requisições/s , um salto enorme em desempenho.

Provavelmente ao rodar o cgit via fastcgi teremos resultados melhores ainda, entretanto o cgit ainda não tem suporte nativo ao fastcgi, para utiliza-lo é preciso utilizar wrappers fazendo gambiarras e que segundo citaram na mailist dele pode-se aparecer problemas de memory leak.

O cgit naturalmente é hoje a melhor opção para se trazer o git à interface web, além de ser muito mais veloz sua interface e recursos ultrapassam os do gitweb.

Veja também nossos outros benchmarks no Raspberry Pi.

Está gostando do blog? Ajude-nos a divulgar e curta nossa página no Facebook ou siga-nos no Twitter.

Atualização: Removi o ultimo gráfico pois a diferença de desempenho na RAM na verdade foi um erro de configuração, a diferença foi pouca a rodar na RAM, foram cerca de 24.8 requisições/s, logo que sair uma versão do cgit com suporte nativo à fastcgi irei refazer os testes.

Nenhum comentário:

Postar um comentário