As emocionantes aventuras de um sysadmin linux na procura pelo uptime perfeito!

Ftrace – tracing de funções do kernel Linux

Posted: novembro 10th, 2010 | Author: coredump | Filed under: Linux e Open Source, Programação | Tags: , , ,

Saiu um artigo sobre o assunto na LWN a alguns meses atrás, o function tracer do Kernel tá uma coisa linda. Basicamente a ferramenta é colocada diretamente no kernel para fazer tracing do que está acontecendo no kernel.

Eu tenho por exatamente usado para estudar internals. Por exemplo:

[tracing]# cat trace
          <idle>-0     [000] 1726568.996435: hrtimer_get_next_event <-get_next_timer_interrupt
          <idle>-0     [000] 1726568.996436: _spin_lock_irqsave <-hrtimer_get_next_event

Essa saída aí em cima mostra a thread idle (swapper), PID 0, rodando na CPU 0, timestamp de quando a função foi executada e as funções que estão rodando. Existem várias configurações que podem ser feitas, como por exemplo adicionar informações de latência no tracing. Isso faz com que além dos timestamps sejam colocadas as informações de quanto tempo cada função demorou para executar.

Eu escrevi um scriptizinho em bash para facilitar minha vida ao ligar e desligar o tracing. Na minha máquina funcionou beleza (ainda tem bugs, mas funciona), mas lembre-se que alguns tracers (como o function) tem de ser habilitados no Kernel e pelo menos no kernel do Debian não estavam. Como eu já estava recompilando o 2.6.36 para fazer alguns testes, aproveitei para habilitar.

O Perfikt é uma ferramenta  GTK que usa dados do Valgrind e aparentemente tem suporte para a interface de tracing do kernel, fornecendo uma interface gráfica bem simpática para a parada.

Mais sobre o assunto (em inglês):

intel

No Comments »

VULoad, para observar load average em terminais

Posted: outubro 5th, 2010 | Author: coredump | Filed under: Linux e Open Source, Programação | Tags: , ,

Update: dei uma mexida nele e já coloquei a versão nova no github. Agora ele parece um pouco mais rápido para sair. Atualizei o screenshot também (os mais atentos vão notar que as barras estão sendo desenhadas com dados de teste, bem mais altos que os loads mostrados no cabeçalho).

Nesse final de semana de eleição tivemos de colocar umas coisas no ar na EBC para atender as demandas de infraestrutura dos sistemas suportando as rádios, agência de notícias, apuração em tempo real e tv ao vivo, e para isso fizemos vários testes incluíndo balanceamento e carga. Num desses um dos colegas do desenvolvimento me sacaneou porque eu estava usando os gráficos do Zabbix para monitorar o load dos servidores, enquanto usava o iftop em um terminator todo repartido para ver como andava a rede dos mesmos.

Como nada é mais inspirador que uma boa aporrinhação-construtiva, tirei um tempo nas madrugadas para fazer um trequinho em python-ncurses para a próximas vez que eu precisar monitorar o Load Average de máquinas em modo console. Na verdade, eu imagino que já exista, mas como eu ando precisando reanimar meus skills em python eu nem me esforcei muito para procurar. Abaixo dois screenshots da paradinha em funcionamento:

Essa é minha máquina local, com quatro processadores e pouco load. Não tinha nada a mão para gerar um bom enfileiramento de processos então ficou assim mesmo.

A idéia é a seguinte: até o meio da tela eu mostro uma barra linear que vai até o valor de Load Average igual ao número de CPUs disponíveis na sua máquina (ou seja, até onde o seu Load Average está tranquilo, leia isso aqui para entender). Depois disso eu uso um multiplicador configurável (no código claro) para mostrar a barra de excesso de load. Visualmente é fácil de interpretar, mesmo se estiver com vários abertos na: se a barra passou do meio da tela o load está alto demais e processos estão começando a enfileirar, quanto mais pro final da tela, pior.

Ainda tem algumas coisinhas cosméticas para mexer, e eu ainda tenho de testar em uma máquina com load alto de verdade, para ver como ele se comporta (por exemplo, se ele vai conseguir se atualizar corretamente com um grande enfileiramento acontecendo).

Mais um screenshot, agora usando o terminator para mostrar duas telas simultâneas, no meu VPS que só tem uma CPU:

O código está no Github, você pode baixar direto clicando aqui. Obviamente, é GPL. É um bom exemplo de como usar ncurses com python também, para quem quiser ter um feeling de como era programar na era dos terminais. Por exemplo, eu tinha me esquecido como era ter de se lembrar de re-escrever a tela. Ou fazer barras usando código ASCII. Mas foi bem divertido. Vou dar mais umas hackeadas nele depois se pensar em mais informações ou alguma otimização que for interessante de fazer.

intel.

No Comments »

Código de Ética do Sysadmin

Posted: setembro 17th, 2010 | Author: coredump | Filed under: Linux e Open Source | Tags: ,

Eu me associei a LOPSA no Sysadmin Appreciation Day deste ano, tava baratinho, dá uns descontos para OReilly e é uma comunidade de Sysadmins, que era o que eu estava procurando. Eles também tem um ótimo Código de Ética. Numa dessas madrugadas insones eu aproveitei para dar uma traduzida inicial nele, que está colocada abaixo. Ainda tem coisa pra mexer e estou aceitando dicas.

O Código de Ética do Administrador de Sistemas

Nós como Administradores de Sistemas profissionais nos comprometemos aos mais altos padrões de conduta ética e profissional e concordamos em ser guiados por este código de ética, e encorajamos a todos outros Administradores de Sistemas a fazer o mesmo.

Profissionalismo Irei manter a conduta profissional no ambiente de trabalho e não permitirei que questões ou crenças pessoais me façam tratar pessoas injustamente ou sem profissionalismo.

Integridade Serei honesto nas minhas relações profissionais e verdadeiro nas minhas competências e nos impactos dos meus erros. Buscarei assistência de outros quando for necessário.

Irei evitar conflitos de interesses e tendências sempre que possível. Quando meu conselho for procurado, se eu tiver algum conflito de interesse ou tendência, irei declará-los se apropriado, e recusar se necessário.

Privacidade Irei acessar informações privadas em sistemas computacionais apenas quando necessário no curso de meus deveres técnicos. Irei manter e proteger a confidencialidade de qualquer informação a qual eu tenha tido acesso, independente do método pelo qual eu tenha tido conhecimento à mesma.

Leis e Normas Irei me educar com relação a leis, regulamentos e normas relativas a execução dos meus deveres.

Comunicação Irei me comunicar com a gerência, usuários e colegas sobre assuntos computacionais de interesse mútuo. Irei me esforçar para escutar e entender as necessidades de todas as partes envolvidas.

Integridade dos sistemas Irei me esforçar para garantir a integridade, confiabilidade e disponibilidade dos sistemas pelos quais eu sou responsável.

Irei desenhar e manter cada sistema de maneira a suportar o propósito do sistema para a organização.

Educação Irei continuar a atualizar e melhorar meu conhecimento técnico e outras habilidades relacionadas ao trabalho. Irei compartilhar meu conhecimento e experiência com outros.

Responsabilidade com a Comunidade de Computação Irei cooperar com a comunidade de computação para manter a integridade de redes e recursos computacionais.

Responsabilidade social Como profissional informado, irei encorajar o desenvolvilento e adoção de normas e leis consistentes com estes princípios éticos.

Responsabilidade ética Irei me esforçar para construir e manter um ambiente de trabalho seguro, sadio e produtivo.

Irei fazer o meu melhor para tomar decisões consistentes com a segurança, privacidade e bem estar da minha comunidade e do público, e revelar rapidamente fatores que possam representar riscos ou perigos desconhecidos.

Irei aceitar e oferecer críticas construtivas de trabalhos técnicos quando apropriado e irei creditar corretamente as contribuições de outros.

Irei liderar por exemplo, mantendo elevados padrões éticos e graus de profissionalismo no exercício dos meus deveres. Irei auxiliar meus colegas a seguir este código de ética.

No Comments »

LinuxCon Brasil 2010 – Dia 2

Posted: setembro 9th, 2010 | Author: coredump | Filed under: Linux e Open Source, Uncategorized | Tags: , , ,

Continuando, o segundo dia da LinuxCon prometia ser tão interessante quanto o primeiro, mas como meu voo estava marcado para mais tarde eu tinha de ficar esperto com bagagem, aeroporto e essas coisas.

O Panel com os desenvolvedores do Kernel foi bem interessante. Foi meio um QA sobre futuro e passado do Kernel, com direito a casos pitorescos como “Qual o código menos mantido no código do kernel” (resposta, a camada TTY).

Outras palestras interessantes do dia incluiram a do Glauber da Red Hat sobre KVM, que me deixou bastante animado com relação a evolução do projeto. Ou “produto” como eles chamam lá na corporação deles.

Teve um palestrante que faltou. Foi… Trágico.

A palestra do Thomas Gleixner do RT Patch foi hilária. Eles são realmente meio malucos, mas aparentemente o patch está a caminho de ser aprovado. Claro que existem penalidades de performance em se usar um sistema Real Time, em torno de 25% até, mas se você quer usar um real time kernel você tem de se conformar.

No final das contas, a qualidade das palestras da LinuxCon é inegável, principalmente dos palestrantes internacionais.

intel.

1 Comment »

LinuxCon Brasil 2010 – Dia 1

Posted: setembro 1st, 2010 | Author: coredump | Filed under: Linux e Open Source | Tags: , , ,

Depois de algum tempo sem ir a eventos de SL eu finalmente me animei a ir ao LinuxCon. Não vou negar que a presença do Linus, Andrew Morton e Jon Corbet da LWN não contaram na decisão, claro, é por isso que eles são chamados keynote speakers.

Primeiro dia, cheguei mais o fike já no final da palestra sobre MeeGo, mas nem senti muito porque o assunto não é láááá esse meu interesse todo (ojeriza a QT dá nisso). Eu meio que assisti a fala do Ian Pratt do Xen Project sobre os novos rumos do Xen e quando terminou tudo que eu conseguia pensar era em KVM. Ele meio que me perdeu quando mostrou a Virtualização para Notebooks. A idéia é boa? É boaish… Mas tem formas menos overkill de implementar, me parece.

A keynote seguinte foi o bate papo entre Linus Torvalds, Andrew Morton e Jim Zemlin da Linux Foundation, foi bem interessante, cheio de coisa que estamos carecas de saber mas que imagino tenha sido a primeira vez que muita gente tenha visto e em alguns casos como o meu foi a primeira vez que eu vi ao vivo, como por exemplo o fato do Linus ser um tosco :) Mas ele fez o que pode para ser simpático e vencer a timidez que lhe é característica, imagino que por ser uma das raras visitas ao Brasil ele se dobrou para ser um pouco mais public relations, deu autógrafos, posou para algumas fotos (não para todas, tinha muita gente).

Andrew Morton e Coredump

Andrew Morton, coredump e boné do debian

O Andrew Morton foi menos assediado, consegui uma foto com ele para minha coleção tiete.

O problema do assédio é bem complicado. Por um lado, o Linus tinha de entender que existem pessoas que vão tentar tirar fotos e conversar e pedir autógrafos e tal. Pelo outro lado, isso deve ser um SACO, e a incapacidade de se locomover por um evento pode ser um ótimo motivo para nunca mais voltar. Na verdade, me disseram que na convenção da Austrália espalharam cartazes pedindo para não aporrinharem demais o coitado se quisessem que ele voltasse.

Vem com a fama. Não imagino que ele queria ser famoso quando ele escolheu ser programador na verdade. Como ele mesmo disse, ele só escolheu uma profissão que garantiria que ele sempre teria dinheiro pra viver :P

Linus Torvalds

Linus, cercado e autografando

Depois do almoço acabei perdendo a palestra do Jon Corbet, no finalzinho que peguei ele falava sobre System Tap e performance counters no Linux, boas novidades para quem sente falta de um dtrace de gente grande como nós pobres sysadmins.

A palestra do Jeremy Allison foi uma grata surpresa. Ele trabalha no Google com Samba,  estava no evento como representante do projeto e é um dos criadores da parada. Ele falou muito sobre como usar o Samba em dispositivos embarcados ou produtos próprios, como interagir (e como não interagir) com o Dev Team do Samba. Também falou da preocupação com a segurança e de alguns projetos interessantes, como uma empresa (não citada) que está trabalhando com o Samba 4 para fornecer uma solução completa de substituição do Active Directory e um projeto que ele está trabalhando no Google, que também usa Samba 4 e que, de acordo com ele, se contasse teria de nos matar depois. Mas só o prospecto de Samba 4 + Google dá o que pensar né?

Abordei ele depois da palestra para conversar sobre Samba e consegui uma boa confirmação de que a versão atual no git HEAD do projeto já consegue substituir um AD com um número razoável de usuários (1500-2000) desde que não tenha relações de confiança demais, com sucesso, e que mais ou menos no meio do ano que vem o Samba 4 deve estar sendo lançado.

Chupa. Active. Directory.

Depois dessa palestra eu fiquei mais zanzando e fazendo um networking com uns conhecidos que eu não via a tempos. Otávio,  e faw do Debian, andrelop, Luiz Blanes, Corinto Meffe, Deivi Khun (esse é meu vizinho na verdade), Julio Neves, e por ai vai.

Cena engraçada e frase punk do dia:

Otávio, fike, eu, faw, andrelop e mais uns chegados parados conversando e combinando uma churrascaria

Camarada da Organização:

- E ai, vocês vão no jantar dos famosos?

Todo mundo se entreolha, faw responde:

- Claro que não, você está olhando pro chão de fábrica do software livre.

Amanhã, último dia e volta pra casa. Cheio de idéias! Compra-se dia de 30 horas para implementá-las todas!

intel

No Comments »