Blog dos tabalhos no LMS

2009

=====
07/05
Vou fazer um seminário sobre Segmentação e Paginação no Kernel Linux!

1648
Outro dia começando tarde. ¬¬'

1908
IR installers task finished!

1909
Tive que criar um setup.cfg pra ele entender a dependencia que tem da mysql-python nas rpms.

Coisa que ajudam na hora de ver as dependencias de uma rpm: rpm -qpR rpm.file
q significa query, consulta.
p é pra tratar o arquivo como um pacote instalado.
R lista as dependencias.

1911
Agora vou atualizar os READMEs e fazer o release.
Acho que é bom fazer um teste no windows.

2126
Teste no HPC Server ok!
Revisão 366 pronta pra ser tageada.

2146
Uma revisão extra, hehehe: Adicionado o alerta se o user é o root.

2351
To esperando o kist corrigir o texto dos READMEs e ai eu crio o zip pra subir pro codeplex.

0247
Release enviado para o Codeplex
Blog atualizado com um post sobre a nova versão
Source code do codeplex atualizado
Quadro de tarefas atualizado


=====
06/05
Dia de preparar o release do IR3.3.1

2256
Começando o dia, após uma longa lista de exercícios de EA513. :]

Vou fazer testes finais nos deemons e aangels, msi e rpm e enfim deixar tudo ok pra subir uma nova versão do IR. Com os bugs do linux corrigidos.

Sobre como rodas o deemon, resolvi deixar tudo na site-packages mesmo e mandar o cara buscar lá =P Claro que vou informar direito qual o caminho, mas abrir um terminal e acessar uma pasta não deve ser demais pra um adm de um cluster.

2347
Fui obrigado a criar um MANIFEST.in para que a rpm tivesse os arquivos extras - Coisas do distutils. Acho que não pega nada. Ainda vou ver como organizar tudo isso num diretório bom. Pq acho que vai ter os arquivos .cfg pra ajudar.

0150
To com preguiça de atualizar isso agora. =/
Faço amanhã.


=====
03/04
1659
Acabei de descobrir um erro de grafia nas funções do modulo clusters.py
Ao inves de submitJob tah sumbitJob. Igual? Nope! o 'm' e o 'b'tão trocados. Como tá trocados em todas as definições e também na chamada, nunca deu pau =P

Mas vou trocar isso, pq se alguém implementar sem fazer um copy n'paste vai dar pau, heheheh.

1719
Consegui usar uma template pra gerar o submit.sh. Agora, o deemon le cada linha dessa template e substitui as palavras chaves que encontra por valores de um dicionario.

1723
Vi que se a submissao falha a submitJob não é abortada. Fixed.


======
02/05
Maio!
Em Guapiara é feriado =P. Aniversário da cidade. Deve tah rolando um rodeio.

2242
Com o tablet em casa pude fazer uma série de alterações no IR sem ter que vir pro IC. Mas como ainda não tenho net tive que vir até aqui para subir tudo. O mundo ainda não tah perfeito, hehe

Basicamente, fiz os READMEs do deemon e do aangel, com informações sobre como instalar usando os arquivos que criamos e também pelo código fonte.

Claro que instalar o deemon não é obrigatório. O cara pode muito bem rodar tudo da pasta aonde ele baixou o código. Mas uma vez instalado ele pode rodar de forma mais facil.

2335
Não achei um jeito fácil de criar um link para o config.py. Por enquanto o user que se vire pra achar onde tá a sua pasta do python.

Outra coisa é que observei que instalando pelo source o setuptools não instala o source! Ele instala o .egg, que o python interpreta direito, mas que no nosso caso não é bom, pq o usuário precisa alterar o config.py!!!

0012
Como não achei onde mudar isso, dei um passo atrás e voltei pro distutils, e consegui fazê-lo pegar os arquivos .bat, sem problemas. Agora, vou testar no linux e ver se dá certo.

0015
Agora sim, testei como instalar via source de deu certo. Agora ele ainda cria o egg, mas gera a pasta com o source. Preciso testar se mudanças no source são aplicadas, ou se o egg impede que as alterações sejam pegas pelo interpretador. Se for assim, ferrou!

0031
Testei no linux, mas lá não cria o egg ¬¬

NOTA: Pra instalar via source no linux precisa ser root e ter a python-devel instalada.
Adicionar isso como dependencia.

0041
PROBLEMA!
No linux, python -m deemon.run não consegue resolver os imports relativos. Ou seja, capota já no from clusters import setOS.

No windows parece funcionar bem. Não sei o porque disso. Tvz python 2.6? Vou verificar numa máquina que não tenha.

0105
OK, com python 2.5 não roda no windows. =/
Problema de versão. Infelizmente, não podemos abandonar a 2.5 agora, pq não sei se o fedora vai rodar direito com a 2.6. Alias, o problema nem é o fedora, e sim o oscar.

Então vamos mudar de estratégia: Instalar numa pasta qualquer e o usuário ir lá buscar e rodar. Agilizei o quanto deu.

0113
Agora não consigo instalar os .bat novamente. Toda essa treta por causa de uns arquivos que não vamos usar quando tiver um make. Saco!

0138
Não tá dando certo!!!
Sem usar um pacote, ele separa os .bat dos .py
To achando que é muito melhor manter como tá: um zip, o cara descompacta e roda, pronto! Quem não consegue fazer isso também não consegue montar um cluster.

Já perdi tempo demais com essa feature.

0149
Por hora, o usuário vai ter que acessar a pasta onde tá instalado e rodar. Paciência.
O problema é: se o cara baixar o installer, como diabos ele vai saber onde buscar. Pq se le não é capaz de extrair o zip, também não vai procurar a porcaria do README.

E ainda tem o fato de que com as rpms não vai ter os .bat, mas nesse caso eu vou deixar pra lá, uma vez que esses arquivos não são necessários no linux. Na hora que colocar a template o submet.sh ai teremos problemas.

0154
Ainda acho que tamo complicando as coisas. Os programas são simples, pra instalar basta descompactar e acessar a pasta resultante. Nada paranormal.

0324
@home, waitting for food :)

Antes de sair do lab fiz um teste pra ver se conseguia instalar a pyodbc e rodou. =]
Amanhã vou fazer uns testes com ela. E começar o suporte pra sql server.

0407
Quanto ao msi, vou deixar salvando no site-packages mesmo e dou um jeito de colocar isso no path do sistema.
Assim, o usuário entre num terminal e digita 'deemon' e pronto. Mais facil que isso, só se eu fizer ordenação O(1).

0415
Outro dia indo dormir de manhã.


=====
30/04
1838
Descobri que uma opção --plat-name durante o build do setup resolveria o problema. O que dificulta é que esse é um recurso que começa na versão 2.6 do Python. Então vou ver com o Raul hoje sobre começarmos a desenvolver o Deemon usando essa nova versão.

Acredito que não vai dar problema isso, pq ela ainda eh compativel com a 2.5.


=====
28/04
Gabarito da Prova de SO!

2156
Consegui criar o .msi do deemon perfeitamente! Agora vou dar uma incrementada nele e então fazer um igual pro aangel.

Uma coisa que não consegui mudar foi que o setup.py tem que ficar fora da pasta do deemon, no trunk. Mas por hora, não vou me preocupar com isso.

Outro detalhe que deu trampo de resolver: nomes de arquivos com ponto '.' no meio, no caso os scripts .bat para compilação. Isso pq a maneira como o python interpreta esses nomes pra colocar no msi dá pau se tiver ponto no meio do nome. Descobrir isso custou uma olhada no código fonte da msilib.py =P

Agora vou partir pras rpms. O que bati durante um tempo foi como incluir os .bat nela. Mas pensando agora, eu nem deveria fazer isso, pq esse arquivos só são usados no Windows! (e só enquanto não resolvo o makefile). Não precisamos deles numa instalação pra Linux. ¬¬'

Enfim, vou dar uma melhorada no setup pra incluir info como licensa e o que mais der na telha. ;]

2306
Perdi o meu ônibus. ¬¬'

2335
OK. MSI prontos. Hora das RPMs.

0004
RPMs OK!

Ainda faltam umas coisinhas pra incluir na brincadeira, e vou fazer isso agora:

READMEs, LICENSEs, e trocar a p&%$# do XML pra um config.py


0434
Arquivos de Licença nas pastas.
config.py no lugar de deemon.conf

Agora to melhorando a RunCommand ;)

0438
Meio que desencanei. Tem que ver exatamente o que precisa dessa função e tals. Sei lá.

0440
Ainda sobre os MSI, preciso fazer ele gerar um msi para x64. Usar as ferramentas do Visual Studio parece não adiantar.
Vou pesquisar.


=====
25/04
Resumo dos últimos acontecimentos:

Durante esso começo de ano batemos cabeça mais um pouco com o cluster linux que não funcionava nem a paulada. Foram muitas noites fazendo o de sempre: instala SO, baixa rpm, acompanha um monte de saída, queima a imagem, instala os nodes e paus incontáveis entre qualquer uma dessas etapas, quando não em todas elas.

Bem, já não tendo mais opções e duvidando da capacidade das máquina virtuais que estávamos usando, pegamos as 3 HPs que era de uso da equipe e resolvemos fazer o cluster com elas (devo confessar que deu dó de fazer isso, mas seria para uma boa causa). Mesmo assim ainda houve uns problemas. O Oscar 6.0 tá muito instável e o 5.2 capotava por motivos estranhos, como falha na comunicação entre os nodes e rpms faltando que deveriam estar no repositório.

Um dia, chegando aqui às 3 da manhã depois de vadiar um pouco durante o dia e com uma insônia característica, resolvi tentar mais uma vez, agora com o hub novo que compramos pq os antigos tavam muito capengas. Usando Fedora 8 e Oscar 5.2b2 fui pra mais um desgosto. Resolvi não fazer update nenhuma, para evitar problemas de dependências devido à atualizações e dar preferência para as rpms locais do que do repo do Fedora, para ficar mais rápido.

E não é que a coisa deu certo? Consegui colocar um node na bagaça, e passou nos testes!!! Nem acreditei, nunca tinha visto o fim dessa instalação! Mas ainda tava com um node só, e com isso ia ficar muito ruim de testar.

Arriscando não conseguir fazer de novo, mas acreditando que não tinha motivo nenhum para acontecer isso, eu coloquei outro node, e conseguimos um cluster linux com 2 nodes e 1 server, todos com 2 processadores (devido ao Hyper-Threading do P4)!

Com os dedos coçando pra programar em Python eu corri pra testar o Deemon, e depois de alguns bugs rodou de boa. =]

Só o fato de estarmos travados a meses com esse problema e termos resolvido já seria motivo suficiente pra um happy hour merecido, mas pra ajudar tem o fato de que agora podemos pensar em uma nova tarefa, que vem de brinde com a nova versão do IR: Imagine Cup '09! Isso mesmo, vamos tentar de novo, e dessa vez com força total.

Hoje dividimos as tarefas, e já começamos os trabalhos para entregar tudo no próximo dia 20. Em menos de um mês teremos o IR3.4!

0743
Uma das coisas que ainda não faziamos no deemon linux era enviar para o guaardian o numero de processadores livres no cluster, para que esses dados fossem usados pelo aangel para escalonar os jobs (isso tudo pq o aangel e toda essa ideia de recursos do sistema surgiu depois do cluster linux ter capotado). Eu tinha uma vaga idéia de como fazer isso, que logo no começo não se mostrou muito boa. ¬¬

Partindo então para a pesquisa, encontrei o comando pbsnodes, que lista o status de cada node, dizendo se estão ou não com jobs rodando (depois de um tempo o Kist teve um flash e disse exatamente o mesmo comando quando toquei no assunto - nenhum comentário sobre isso =P). Tendo isso, parsear a saída usando Python levou menos da metade do tempo da pesquisa pelo comando (muito sem graça, rsrs).

Agora então o Deemon no linux também consegue enviar as informações que o Aangel vai precisar pra brincar.

<Uma tarefa OK>

0749
Outra coisa que estou brincando é melhorar a maneira como chamar subprocessos a partir do Deemon. Hoje usamos um método que o Kist implementou ainda na primeira versão em python (3.0), que usa a classe subprocess.Popen.

Ainda será essa classe a usada, só pretendo melhorar a maneira como pegamos os dados que ela fornece após a execução do processo filho, que vão desde as saídas padrão e de erro até o código de erro gerado. Assim, podemos melhorar o tratamento de erro do Deemon, que temos deixado pra depois a um tempo, pq não era a prioridade no momento.

Atrelado a isso eu fiz uma contribuição pra wiki da python.org.br (1), explicando como bolar esse shell.py, para tabalhar com chamadas de processos em mais alto nível.

(1) url

0800
Vi o relógio do win mudar de um minuto pra outro. Nunca tinha conseguido fazer isso.
To começando a falar bobagem, rsrs

sono: 50% (acordei bem tarde e to empolgado)
fome: 250% (sem café no IC fica muito foda. Tenho que começar a trazer as coisas de novo)

Mais um novo recurso do IR3.4 será trabalhar com SQL Server. Afinal, a gente precisa impressionar os caras =P
Pensando nisso, pesquisei alguns drivers de python para mssql, que eu já sabia serem mais de um, pq as pessoas insistem em reiniventar a roda. Faltava ver qual era realmente bom. Infelizmente a minha mania de confiar nos nomes das coisas se mostrou falha de novo:

pymssql ainda tem muitos bugs e problemas no linux.
mssql nem tem suporte pra linux e eu nem entrei no site.

Resolvi então perguntar pra quem manja: entrei no Python.org e vi quais drivers eles recomendam. Fiz isso também o site do SqlAlchemy, que é um toolkit e um Object Relational Mapper pra banco de dados em python. Os dois drivers que vi tavam lá, mas o que ambos os sites realmente recomendavam era o pyodbc. Nunca soube o que é odbc e ainda não vai ser dessa vez que vou pensar no assunto. Mas o fato é que esse módulo tá bem mais completo, tem uma porrada de testes deles feitos no python.org, e no fim é esse ai que nós vamos usar. =]

Um ponto que verifiquei (e a surpresa está em eu ter pensado nisso logo de cara), é que ele é Open-Source, usando uma licensa MIT, que me pareceu muito com a GPL, exceto pelo fato de os projetos derivados herdarem a licensa. Ainda tenho que pesquisar isso, mas não acho que vá dar problema.

Mais um detalhe é que o módulo não tá disponível pra win64. Lá vou eu compilar mais um módulo, como fiz com o de mysql. Só que dessa vez eu to manjando mais, heheh, e acho que não vai tomar muito tempo. De brinde eu ainda pago de gostoso com os devs e envio o installer pra 64 pra eles. ;)

0817
Preciso ir comer. Vou numa cantina ai logo menos.

Ainda listando as novas tarefas, temos que melhorar a maneira como instalar os componentes do IR. Já vinha pensando nisso a um tempo, e até gerei umas rpms. Pro windows seria um installer. Não é muito complicado, mas ainda tenho que pesquisar.

0827
Gostaria muito que no windows explorer desse pra ativar e desativar a exibição de arquivos ocultos de um jeito mais simples, como no nautilus. É muito chato ter que ir até as configurações pra isso. ¬¬

-----------------------------------------

Anteriores

Março 2008
Fevereiro
Janeiro
Dezembro 2007

Last edited May 13, 2009 at 12:54 AM by hnrqbaggio, version 16

Comments

No comments yet.