Entries Tagged 'OpenSource' ↓

Como utilizar mutex para evitar race-conditions em pThreads?

Apenas uma dica rápida, outro dia me peguei programando em pThreads e, como qualquer coisa um pouco mais complexa, cai no famoso “race-condition”, quando uma thread tenta utilizar dados ao mesmo tempo em que outra thread tenta (por exemplo) criar os dados.
Existem várias formas de se resolver isso, porém acredito que a mais simples é a utilização de mutex (atenção, isso é exclusivo do SO, no nosso caso sistemas baseados em UNIX como Linux ou FreeBSD). A idéia do mutex é:

  1. Cria uma variável do tipo pthread_mutex_t
  2. Inicializa
  3. Dentro da thread, efetue um lock na área crítica da memória
  4. Trabalhe na memória
  5. Efetue um unlock da área crítica.

Vamos ao exemplo mais simples possível: Continue reading →

Gerando números aleatórios em CUDA, utilizando CURAND.

Como muitos sabem, uma das minhas maiores paixões justamente a programação paralela. Faz um certo tempo (desde o mestrado), que não programo para paralelismo, nem em algoritmos genéticos, nem autômatos celulares, etc. Obviamente isso muito me fazia falta e, resolvi fazer um upgrade na máquina, trocando a velha boa de guerra GeForce 8500 GT, por uma GTX 580 (pequeno upgrade ;) ).

Para relembrar como se programa em CUDA, resolvi utilizar a versão 5.0, recém lançada, e entender como funciona a biblioteca CURAND para a geração de números aleatórios em GPU (extremamente importante ao utilizarmos AG). Os resultados que obtive foram, extremamente satisfatórios, veja dois exemplos de execução:

  • Geração de 787.021.824 números aleatórios utilizando uma distribuição binomial

*********INFO********
*min:0
*max:100
*qtd:787021824
*output:binomial.csv
*distribution: BINOMIAL
*Verify? NO
********************
[*] Initializing host memory…OK (0.00000 ms)
[*] Initializing GPU memory…OK (1.76182 ms)
[*] Creating random numbers…OK (3018.16577 ms)
[*] Accumulatting…OK (1090.85291 ms)
[*] Writing accumulatted values to ‘binomial.csv’…OK
[*] Cleaning up memory…OK

Geração de 787.021.824 números aleatórios utilizando uma distribuição uniforme:

[*] Initializing host memory…OK (0.00000 ms)
[*] Initializing GPU memory…OK (1.76829 ms)
[*] Creating random numbers…OK (36.34749 ms)
[*] Accumulatting…OK (707.11194 ms)
[*] Writing accumulatted values to ‘/home/zarnick/tmp/uniform.csv’…OK
[*] Cleaning up memory…OK

Essa velocidade, convence?

Continue reading →

Utilizando os pacotes do CentOS no RHEL

Pelo motivo que seja, volta e meia é necessário “esquecer” os pacotes da RedHat e utilizar os pacotes comunitários (CentOS). Recentemente me deparei com esse caso, a busca não foi das mais simples (o processo é fácil, mas a busca pelo processo correto não), encontrei no blog do LinuxDaemon um passo a passo que, com alguns arrumes ficou perfeito.
A idéia é simples, retire tudo que diga que é um RHEL e troque por tudo que diz que é um CentOS, bom, nem tudo precisa (ou deve) ser retirado ;) Continue reading →

Slackbuilds

Voltando a vida e voltando à antiga escola, mandei o Ubuntu praquele lugar (não que eu não tenha gostado, mas apenas não atendia mais minhas necessidades), e voltei ao bom e velho Slackware. Para quem não conhece o Slackware é a distribuição mais antiga de Linux, que ainda é mantida. Isso significa fazer as coisas na unha, na raça certo? Bem, mais ou menos. Continue reading →

Saiba como está seu linux utilizando sysstat

Para quem é antigo de UNIX/Linux, sabe quão importante é saber exatamente como está se comportando o seu sistema, em windows existe o famigerado Task Manager, mas em Linux, bem, em Linux temos um maravilhoso conjunto de ferramentas chamado sysstat.
Obviamente é para linha de comando e pode mostrar dese I/O de disco (partição a partição), até utilização de RAM e CPU e muito mais. Como é uma suite, existem vários comandos, aqui vai um exemplo bem simples de um deles, o chamado vmstat: Continue reading →

Exploit para o X, que não é para o X.

Estranho não? A última atualização do X foi feita para corrigir um exploit que na realidade é do Kernel. O Slashdot possui um resumo da notícia que na realidade o problema realmente esta na forma como o Linux trabalha com memória, esse bug provavelmente está em toda a linha do kernel 2.6, o que o torna muito perigoso.
Basicamente o bug funciona mais ou menos da seguinte maneira: um processo ocupa memória (qualquer memória, o POC trabalha com o X, enchendo a memória de pixmap) ,quando estiver perto de encher a memória é possível retornar praticamente qualquer endereço, ou seja, executar comandos arbitrários como root (como por exemplo abrir um terminal de root ;) ).
Preciso falar na periculosidade que é isso? Um PDF pode fazer isso e você não vai nem sentir que ele fez…
Novamente, o bug NÃO é para o X, e sim do kernel, a RedHat já publicou um update do kernel que arruma esse bug, porém me faz pensar que estão tentando corrigir isso desde o dia 13 de Agosto e ainda sai patch sobre patch para corrigir isso, ou seja, estão tapando buracos até encontrar a solução final.
Mesmo assim…ATUALIZEM!

Atualização sobre o OpenSolaris

Não oficialmente, aparentemente a Oracle vai abandonar mesmo o OpenSolaris e vai reativar o Solaris Express. Triste.
Você pode ver a nota que vazou aqui, e a notícia que vi no Slashdot.
Apenas para deixar claro, o que é “triste” é o caminho que a Oracle está seguindo com relação ao OpenSource, depois de desligar os servidores para a validação da instalação do PostgreSQL em Solaris, sem aviso prévio, aceitar ficar sem o lead developer do Solaris, não dar informações sobre o que irá acontecer com o OpenSolaris, e adquirir várias empresas que tinham um grande trabalho OpenSource e limitar esse trabalho a poucas coisas, ao mesmo tempo que diz que apoia e ajuda os projetos OpenSource, me faz pensar um pouco mais sobre o que é a Oracle.

Atualização da Oracle VirtualBox

É, realmente a Oracle está dando o que falar, ela lançou a nova versão do sistema de virtualização que era da Sun o VirtualBox, agora em sua versão 2.8, com vários upgrades para melhorar a performance, compartilhar discos em várias máquinas virtuais, melhor suporte para 3D, USB, etc. Ainda mantendo o mesmo em OpenSource, realmente não está fácil entender qual é a da Oracle.
Leia mais aqui (The H).

Gnome-DO, introdução

Gosta de customizar seu Desktop?Mostrar a todos que o Linux também tem o Dock parecido com o do Mac OS? Que ele faz muito mais? Ou apenas quer um bom sistema para inicializar programas e utilizar seu teclado da melhor forma possível?
Pois bem, para quem não conhece, o Gnome-DO é tudo isso e muito mais, o LinuxInsider tem um artigo muito bom sobre o mesmo, vale a pena dar uma lida para quem não conhece, e para quem conhece, bom, continue usando ;) .
Veja o artigo aqui.
Dica, no KDE e em outros WM além do Gnome também funciona ;)

Oracle, o que você está fazendo?

Em mais uma “incrível” atitude da Oracle ela “apenas” desligou, sem mais nem menos, os 3 servidores Solaris utilizados para garantir a compilação do PostgreSQL (que ela ainda não comprou), deixando a comunidade PostgreSQL as escuras com o Solaris.
Ok, é apenas no Solaris que causa o impacto, porém o problema é a atitude em sí, entendo que a Oracle não deve gostar do PostgreSQL, porém ao menos deveria avisar antes não? Enfim, a matéria completa está no iTNews.