Introdução ao IBM SDK for PowerLinux

Aprenda sobre desenvolvimento de aplicações usando o IBM SDK for PowerLinux

O IBM Software Development Kit for PowerLinux (SDK) é um ambiente de desenvolvimento integrado de software baseado em Eclipse. O SDK integra ferramentas de código aberto e proprietárias da IBM em um único ambiente visando facilitar o desenvolvimento, depuração, análise e empacotamento de aplicações para servidores IBM PowerLinux. Aprenda sobre o IBM SDK for PowerLinux conceitos, as principais funcionalidades e sua instalação neste artigo.

Wainer dos Santos Moschetta , Engenheiro de software no IBM Linux Technology Center

Wainer dos Santos Moschetta - Graduado em Ciencias da Computação na Univerdade de São Paulo.Tem mais de 6 anos de experiência no desenvolvimento de ferramentas para migração e desenvolvimento em ambiente GNU/Linux.Atualmente é líder do projeto que desenvolve o IBM SDK for PowerLinux.



Rafael Sene, Engenheiro de software no IBM Linux Technology Center

Rafael Sene - Bacharel em Ciência da Computação pela Universidade Federal de Alfenas. É Engenheiro de Software no IBM Linux Technology Center onde trabalha no desenvolvimento de um toolkit para desenvolvimento de aplicações C/C++ para a arquitetura Power.



14/Jan/2013

Introdução ao IBM SDK for PowerLinux

O IBM SDK for PowerLinux é uma solução integrada para o desenvolvimento de aplicaçõs para servidores IBM Power. Ele integra o IBM Eclipse SDK(Software Development Kit) juntamente com ferramentas de código aberto e outras proprietárias da IBM, permitindo fácil desenvolvimento, construção, análise, depuração e empacotamento de software.

Seus principais objetivos são:

  • Prover um ambiente integrado de desenvolvimento de software que una o Eclipse IDE (Integrated Development Environment) juntamente com ferramentas de desenvolvimento específicas para IBM POWER.
  • Otimizar aplicações para os mais recentes processadores IBM POWER.
  • Fornecer acesso a ferramentas avançadas de desenvolvimento.
  • Alavancar inovação através de tecnologias desenvolvidas nos laboratórios de pesquisa da IBM.

Conheça suas funcionalidades

Desenvolvendo aplicações com Eclipse SDK

O IBM SDK for PowerLinux disponibiliza aos usuários o Eclipse SDK juntamente com o CDT (C/C++ Development Toolkit) e uma série de plug-ins para facilitar o desenvolvimento, construção, análise, depuração e empacotamento de aplicações.

O Eclipse CDT provê um ambiente gráfico totalmente funcional para desenvolvimento em C/C++ que inclui suporte à criação de projetos e gerenciamento de builds utilizando vários tipos de compiladores (veja a seção "IBM Advance Toolchain for PowerLinux"). Ele também provê muitas outras funcionalidades como integração com o GNU Makebuild, navegação e manipulação do código fonte (hierarquia de tipos, gráfico de chamadas, navegação nas definições de macros, edição de código, geração de código, e outros), ferramentas visuais para depuração, incluindo memória, registradores e visualizadores de código em assembly.

A maior parte das ferramentas descritas nas próximas sessões deste artigo são integradas à interface gráfica do Eclipse por meio de uma série de plug-ins desenvolvidos pela equipe interna da IBM focada no desenvolvimento do SDK for PowerLinux e/ou por comunidade de código aberto.

O IBM SDK for PowerLinux também empacota plug-ins feitos pelo projeto Eclipse Linux Tools, que fornecem uma interface gráfica para seguintes ferramentas de código aberto:

  • Gnu Autotools.
  • Changelog.
  • RPM build e Specfile editor.
  • Valgrind.
  • Oprofile.
  • Perf
  • SystemTap

Enquanto alguns desses plug-ins melhoram a usabilidade de algumas ferramentas comumente usadas em linha de comando, outros são focados em facilitar a análise de desempenho e melhorias de aplicações C/C++.

Analisando aplicações com Valgrind

O IBM SDK for PowerLinux provê integração do Eclipse com o Valgrind, que é um framework de código aberto para construção de ferramentas para análise dinâmica de aplicações. Ele também provê um conjunto de ferramentas prontas para uso em detecção e correção de erros e análise de execução de aplicações. As ferramentas atualmente suportadas são: Memcheck, Helgrind, Massif e Cachegrind.

Memcheck detecta problemas de gerenciamento de memória em aplicações, reportando estes erros no momento em que ocorrem. Ele também exibe o número da linha aonde o erro ocorreu assim como informações sobre a pilha de execução das chamadas de funções no momento do erro. Os problemas detectados pelo Memcheck incluem:

  • Operações ilegais de leitura e escrita.
  • Uso de variáveis não inicializadas.
  • Uso de valores não inicializados e não endereçados nas chamadas de sistema.
  • Desalocação ilegal de memória;
  • Desalocação de memória através do uso de funções inapropriadas;
  • Sobreposição de blocos de origem e destino em funções de cópia de memória;
  • Estouro de Pilha.
Figura 1. Memcheck – Uso de variáveis não inicializadas
Memcheck – Uso de variáveis não inicializadas

A figura 1 mostra a ferramenta memcheck detectando uma variável não inicializada em uma aplicação escrita em C.

Helgrind é um analisador e detector de problemas em applicações multi-threading baseadas no padrão POSIX Threads (Pthreads). Os problemas detectados pelo Helgrind incluem:

  • Uso incorreto da API POSIX Pthreads.
  • Deadlocks causados pela ordem de bloqueios.
  • Disputa por recursos

Massif é um analisador para uso de memória capaz de rastrear e reportar em for de gráficos o consumo de heap e stack ao longo da execução da aplicação. Ele é capaz também de mostrar no código fonte as primitivas e chamadas de funções causando alocação de memória em um exato instante.

Cachegrind é um analisador de cache e predição de branches. Ele identifica o número de erros de cache, acessos a memória e o número de instruções executadas por cada linha de código. Ele também é capaz de analisar a eficiência do processador em realizar predição de branches de execução.

Analisando perfil de execução de aplicações com Oprofile

Oprofile é uma ferramenta código aberto em Linux feita para capturar perfil de execução em nível de sistema, que permite a análise de desempenho e identificação das prováveis partes de uma aplicação que degradam sua performace.

O IBM SDK for PowerLinux provê a integração do Eclipse com Oprofile, permitindo capturar e analisar o perfil de execução de aplicações.

Figura 2. Oprofile
Oprofile

A figura 2 mostra falhas de acesso as intruções em nível de cache L1 de uma aplicação executando em uma máquina com processador POWER7. O SDK permite fácil visualização dos eventos gerados pelo hardware enquanto a aplicação está executando.

Utilizando o IBM Avance Toolchain for PowerLinux

O IBM Advance Toolchain for PowerLinux empacota a mais recente versão testada e suportada do GNU Compiler Collection (GCC) para arquitetura POWER, e também empacota com um conjunto de bibliotecas de tempo de execução que são otimizadas para a arquitetura. Os usuários do IBM Advance Toolchain for PowerLinux são benificiados com um conjunto de ferramentas de desenvolvimento focadas na arquitetura POWER e então podem:

  • Construir e solucionar problemas em aplicações utilizando a melhor e mais recente conjunto de ferramentas para Linux.
  • Otimizar aplicações para os mais recentes processadores IBM POWER.
  • Tirar proveito das bibliotecas de tempo de execução que são selecionadas automaticamente pelo advance toolchain, considerando o tipo da máquina máquina e processador em que aplicação é executada. As mais utilizadas bibliotecas em tempo de execução estão incluidas no pacote: C/POSIX, Math, Pthread, Realtime e Decimal Floating Point Math.
  • Analisar e melhorar o desempenho de uma aplicação utilizando ferramentas habilitadas para os mais novos servidores IBM Power Systems.

Os usuários também podem beneficiar-se do assistente de otimização, que os auxilia na escolha de opções de compilação de forma à otimizar sua aplicação para ser executada em servidores IBM Power Systems, como exibido na figura 3.

Figura 3. Assistente de compilação para otimização de aplicações
Assistente de compilação para otimização de aplicações

Analisando e melhorando o desempenho de aplicações com FDPR e SCA

O IBM SDK for PowerLinux provê a integração do Eclipse com duas ferramentas co-relacionadas: Source Code Advisor (SCA) e Feedback Directed Program Restructuring (FDPR).

FDPR é uma ferramenta que implementa uma tecnologia de reestruturação de um binário, visando otimizar sua execução por meio da análise do seu perfil de execução. Ela trabalha se forma similar a um compilador: lê um binário executável (ou uma biblioteca de sistema) já linkado, executa uma versão instrumentada deste para coletar dados de sua execução e, finalmente, produz uma versão otimizada deste binário. A ferramente é capaz de aumentar o desempenho acima de 30% dependendo das características da aplicação.

Já o SCA é utilizado para visualizar no código fonte os problemas de desempenho detectados pelo FDPR. Ele alerta os usuários sobre possíveis problemas e também provê dicas para reestruturação do código fonte e/ou modificações das configurações de build, visando melhorar o desempenho da aplicação.

Figura 4. SCA provendo informações de desempenho
SCA provendo informações de desempenho

Na figura 4, o SCA aponta uma linha de código onde há sobrecarga de chamadas de uma determinada função, causando baixo desempenho. Ele também provê informações de como resolver o problema, no caso "inline callee into caller must increase application's performance" sugere modificar a declaração da função para que seja inline.

POSIX Pthreads monitoring tool e trace analyzer

O Trace Analyzer permite a análise e visualização gráfica de concorrência em aplicações multi-threading, usando dados que são geradas pela ferramenta de monitoramento Threads (Pthreads monitoring tool). As informações sobre concorrência inclui , mas não limitado a, sincronização usando mutexes, spinlocks e variáveis condicionais.

Com esta ferramenta é possível fazer as seguintes análises:

  • Coletar o profile de Pthreads e visualizar o resultado de rastreamento;
  • Visualizar as threads ativas e operações que causam bloqueios;
  • Visualizar bloqueios e spinlocks ativos, threads que estão bloqueadas, threads que estão bloqueando outras e os tamanhos das filas para acesso;
  • Visualizar variáveis condicionais, quais threads estão aguardando por elas e disputa pelos mutexes associados a elas.
  • Coletas os rastros de requisições de entrada/saída bloqueantes, e visualizar junto com os dados de sincronização das threads.
Figura 5. Relatório gerado pelo Trace Analyzer
Relatório gerado pelo Trace Analyzer

O IBM SDK for PowerLinux integra o Trace Analyzer e Pthread monitoring tool na interface do Eclipse, como é mostrado na figura 5.

Migrando aplicações com Migration Advisor

O IBM SDK for PowerLinux contém uma ferramenta chamada Migration Advisor, a ser utlizada na migração de aplicações de construídas em x86 para IBM Power Systems. O Migration Advisor usa um framework de análise estática de código do CDT (C/C++ Development Tools) para analisar potenciais problemas de migração em um projeto. Na última versão disponível do SDK (1.2.0) até o momento este artigo é escrito, ele é capaz de detectar os seguintes potenciais problemas:

  • Endianess em operações de cast, unions and structs
  • Uso de funções builtins de compilador específicos para Linux/x86
  • Uso de código assembly embutido em arquivos c/c++
  • Diferenças nos tipos de dados
  • Chamadas de sistemas não disponíveis para PowerLinux.
  • Uso de API específica para Linux/x86.
Figura 6 – Relatório gerado pelo Migration Advisor
Figura 6 – Relatório gerado pelo Migration Advisor

A figura 6 mostra o relatório gerado pelo migration advisor. Neste exemplo, é apontado o uso de long double, que possue um tamanho em bytes diferente em POWER, e que pode acarretar em problemas quando a aplicação é migrada de x86.


Instalação

O SDK pode ser instalado de duas maneiras: baixando os pacotes manualmente e instalando na máquina; ou utilizando os gerenciadores de pacotes do sistema para fazer a instalação automaticamente. Neste artigo, apenas a instalação via gerenciadores de pacotes será mostrado pois é o método mais fácil assim, veja próxima seção.

Instalando o IBM SDK for PowerLinux usando o repositório de software IBM PowerLinux

A maneira mais simples de fazer o download e a instalação dos pacotes RPM para o IBM SDK for PowerLinux é usar o PowerLinux Software Repository, que é um repositório Yum contendo vários pacotes a serem instalados em PowerLinux. Este procedimento configura os gerenciadores de pacotes yum e zypper para que o processo de instalação possa ocorrer de forma automática, facilitando a instalação de todos os pacotes necessários.

O procedimento

  1. Faça o download do pacote de inicialização do PowerLinux Software Repository optando por um dos seguintes endereços: IBM Software Development Kit for PowerLinux ou em IBM Tools Repository for PowerLinux.

    Nota: Antes de iniciar o download você deve aceitar os termos e condições da licença.

  2. Instale o PowerLinux Software Repository:
    2.1. Faça o login em seu sistema como root;
    2.2. Digite o comando a seguir: rpm -ivh ibm-power-repo-version.ppc.rpm.
    Nota: Substitua version com a versão do pacote de incialização do Power Linux Software Repository que foi baixada.
  3. Instale o IBM SDK para PowerLinux, utilizando os comandos apropriados para sua distribuição:

    Para RedHat Enterprise Linux, utilize o comando da listagem 1.


    Listagem 1. Instalando o SDK em RedHat Enterprise Linux

    # yum install ibm-sdk-lop.ppc64


    Para SUSE Linux Enterprise Server, utilize comando da listagem 2.


    Listagem 2. Instalando o SDK em SUSE Linux Enterprise Server

    # zypper install ibm-sdk-lop.ppc64

Para mais informações sobre configurações de pós-instalação e para pacotes adicionais consulte o Guia do Usuário do IBM SDK for PowerLinux.

Iniciando o IBM SDK for PowerLinux

Após concluir o processo de instalação é possível iniciar o IBM SDK for PowerLinux no servidor PowerLinux e acessá-lo, visualizando-o em sua estação de trabalho. Isto pode ser feito utilizando X11 forwarding ou Virtual Network Computing (VNC).

Usando X11, caso sua conexão não seja rápida, você enfrentará problemas de latência na rede. Se esse for o caso então VNC é a melhor opção.

Figura 7. Iniciando o SDK for PowerLinux
Iniciando o SDK for PowerLinux

Uma vez conectado ao servidor PowerLinux, escolha uma das seguintes maneiras para iníciar o IBM SDK for PowerLinux:

  1. Abra o console e digite o comando ibm-sdk-lop.
  2. Ou, caso tenha acesso a interface gráfica, selecione Applications > Programing > IBM SDK for PowerLinux (Veja figura 7)

Na primeira vez em que o IBM SDK for PowerLinux é inicializado, ele pode levar algum tempo para ser carregado, então, a tela inicial é exibida (veja figura 8). Após isso será aberta uma janela onde vocẽ deverá selecionar um local em seu servidor PowerLinux para armazenar os arquivos de seu projeto. Depois de concluir esta etapa, vocẽ pode começar a explorar o IBM SDK for PowerLinux.

Figure 8. Splash screen
Figure 8. Splash screen

Recursos

Existem alguns recursoss recomendados onde é possível encontrar valiosas informações sobre o IBM SDK for PowerLinux e outros assuntos relacionados:

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Linux
ArticleID=854689
ArticleTitle=Introdução ao IBM SDK for PowerLinux
publish-date=01142013