Ativar Recursos de RDMA para o DB2 com o Socket Direct Protocol

Os dispositivos de rede LAN, como adaptadores de host e comutadores Ethernet, evoluíram nos últimos anos, possibilitando a obtenção de rendimento de até 40 Gbps, assim como latência de rede abaixo de um microssegundo. O poder de cálculo e os dispositivos de LAN não são mais um gargalo. Em vez disso, protocolos como TCP estão se tornado o verdadeiro gargalo neste novo mundo de hardware de alto desempenho. Para superar as limitações de TCP, foram desenvolvidos novos protocolos, como Remote Direct Memory Access (RDMA). Este artigo explicará um método com custo reduzido para ativar recursos de RDMA em ambientes de cliente/servidor DB2 sem precisar recodificar e recompilar os aplicativos existentes.

Sorin Iszlai, Systems Engineer, IBM

Author photoSorin Iszlai é engenheiro de sistemas e de rede com mais de 17 anos de experiência no segmento de mercado de TI. Trabalha atualmente no Laboratório de Software IBM, onde pesquisa novas tecnologias na área de aceleração de hardware e otimização de dispositivos.



10/Ago/2012

Introdução

RDMA é um mecanismo que permite que computadores acessem locais de memória em outros computadores, efetuando bypass do sistema operacional, ou seja, do kernel e da pilha TCP. Comparado a uma arquitetura tradicional de hardware-software baseada em TCP, o RDMA oferece diversas vantagens. Efetuar bypass de kernel significa diminuição dos caminhos entre dois aplicativos e utilização reduzida da CPU. A sobrecarga de protocolo específica de TCP é eliminada transferindo os dados diretamente entre o adaptador de rede e a memória do aplicativo (espaço do usuário) sem a necessidade de copiar e armazenar os dados no espaço de kernel em buffer.

Para aproveitar todos os benefícios oferecidos por RDMA, os aplicativos precisam ser gravados usando semânticas de RDMA ou protocolos de camada superior, como User-Level Direct Access Transport (uDAPL) ou Message Passing Interface (MPI). No entanto, como o processo de regravar um aplicativo TCP para RDMA pode ser muito caro, uma solução alternativa foi desenvolvida para tais casos. Esse método é chamado Direct Socket Protocol (SDP) e não requer nenhuma recodificação de aplicativos.

SDP é um protocolo de ligação entre adaptadores e soquetes com capacidade de RDMA. Por esse motivo, SDP é transparente aos aplicativos, e a implementação de soquetes de fluxos padrão não precisa ser substituída por outra API. Aplicativos DB2 e servidores DB2 podem ser executados sem modificação em SDP ou TCP. O usuário pode simplesmente selecionar o protocolo a ser usado antes de executar o aplicativo pré-carregando a biblioteca compartilhada de SDP. Todas as configurações referentes a TCP, como nomes de hosts, endereços IP e portas, não exigem nenhuma modificação.

Por exemplo, um aplicativo Java que usa TCP para conectar a um servidor de banco de dados também pode funcionar em SDP usando a mesma URL de JDBC. Quando pré-carregada, a biblioteca de SDP decidirá qual protocolo deve ser ativado com base em um conjunto de regras definido em /etc/libsdp.conf e no protocolo aceito pelo servidor. As regras padrão especificam SDP como a primeira opção e, caso a conexão falhe, a biblioteca de SDP recairá sobre TCP.

Um aplicativo pode usar somente SDP, somente TCP ou ambos ao mesmo tempo. Por exemplo, um aplicativo pode ser configurado para usar SDP para conexões do banco de dados DB2 e TCP para conexões LDAP. O banco de dados e os servidores LDAP podem estar em execução em diferentes máquinas físicas ou na mesma máquina, mas recebendo em diferentes interfaces. Discutiremos posteriormente neste artigo os diferentes cenários e como as regras se aplicam.

Infraestrutura de Hardware e Software

RDMA requer infraestrutura especial de hardware e software. Este artigo descreverá SDP na plataforma Linux x86.

  • Adaptadores de host

    RDMA é suportado em dois tipos de adaptadores de host: adaptadores Infiniband e adaptadores RoCE. O primeiro requer comutadores Infiniband e o segundo requer comutadores Ethernet.

    Este exemplo usa adaptadores Mellanox RoCE. Todas as instruções fornecidas neste artigo se aplicam a adaptadores Infiniband com pouca ou nenhuma modificação. RoCE (RDMA over Converged Ethernet) é uma implementação do protocolo Infiniband por Ethernet. Redes Converged Ethernet permitem que diferentes tipos de protocolos compartilhem a mesma mídia. Quadros LAN Ethernet regulares contendo pacotes de IP, Infiniband por Ethernet e Fiber Channel por Ethernet podem todos coexistir em uma única conexão Ethernet.

  • Drivers de dispositivos

    Há diversas opções referentes a drivers de dispositivos e ferramentas necessárias para operar um adaptador Mellanox. Todos os drivers de dispositivos e ferramentas disponíveis são baseados na pilha OFED mantida pela OpenFabrics Alliance. Consulte a seção Recursos para obter um link para o website da OFED.

  • Sistema operacional

    Red Hat Linux 6.2, kernel versão 2.6.32-220.4.1.el6.x86_64.

  • Comutadores Ethernet

    10Gbps RackSwitch G8264, Sistema Operacional versão 6.8.1.0.


Instalando Drivers e Ferramentas Mellanox

  1. O software Mellanox é empacotado como uma imagem ISO. Faça download da imagem apropriada para seu sistema operacional no link fornecido na seção Recursos . Para o Red Hat 6.2, a imagem é chamada MLNX_OFED_LINUX-1.5.3-3.0.0-rhel6.2-x86_64.iso.

    Todos os comandos a seguir são executados como raiz, a menos que especificado.

    Monte a imagem ISO em cada computador e inicie o instalador, conforme mostrado na Listagem 1.

    Lista 1. Imagem ISO e Instalador
    bash# mount -o loop MLNX_OFED_LINUX-1.5.3-3.0.0-rhel6.2-x86_64.iso /mnt/iso
    
    bash# cd /mnt/iso
    
    bash# ./mlnxofedinstall
    This program will install the MLNX_OFED_LINUX package on your machine.
    Note that all other Mellanox, OEM, OFED, or Distribution IB packages will be removed.

    O instalador instalará todos os drivers e ferramentas e tentará atualizar o firmware em cada placa Mellanox se estiver em um nível inferior ao incluído na imagem ISO.

  2. Reinicialize o computador para carregar todos os módulos kernel.
  3. SDP requer as interfaces Ethernet a serem configuradas com um endereço IP. Para interfaces Infiniband, IPoIB deve ser ativado, o que basicamente significa configurar endereços IP nas interfaces ib* e ativar IPOIB_LOAD=yes em /etc/infiniband/openib.conf.

    Primeiro, é necessário identificar os novos dispositivos. Esse comando listará todos os adaptadores de rede Mellanox e configurações atuais dos adaptadores, incluindo o tipo de Camada de Link (nesta caso, Ethernet), versão de firmware e status de link, conforme mostrado na Listagem 2.

    Lista 2. Adaptadores de Rede Mellanox
    bash# ibv_devinfo
    hca_id: mlx4_0
            transport:                      InfiniBand (0)
            fw_ver:                         2.10.300
            node_guid:                      0002:c903:0005:6aa8
            sys_image_guid:                 0002:c903:0005:6aab
            vendor_id:                      0x02c9
            vendor_part_id:                 4099
            hw_ver:                         0x0
            board_id:                       IBM1020110023
            phys_port_cnt:                  2
                    port:   1
                            state:                  PORT_ACTIVE (4)
                            max_mtu:                2048 (4)
                            active_mtu:             1024 (3)
                            sm_lid:                 0
                            port_lid:               0
                            port_lmc:               0x00
                            link_layer:             Ethernet
                            
                    port:   2
                            state:                  PORT_DOWN (1)
                            max_mtu:                2048 (4)
                            active_mtu:             1024 (3)
                            sm_lid:                 0
                            port_lid:               0
                            port_lmc:               0x00
                            link_layer:             Ethernet
  4. Para identificar qual porta está associada a uma interface eth*, execute o comando a seguir e designar endereços IP à interface apropriada, conforme mostrado na Listagem 3.
    Lista 3. Identificar Porta
    bash# ibdev2netdev 
    mlx4_0 port 1 ==> eth8 (Up)
    mlx4_0 port 2 ==> eth9 (Down)
                            
    bash# ifconfig eth8 10.7.7.1 netmask 255.255.255.0

Ativar SDP em Kernel e Espaço do Usuário

SDP não é ativada por padrão. Além da biblioteca de usuários libsdp.so mencionada anteriormente, parte da SDP é implementada como um módulo do kernel que precisa ser carregado.

  1. Carregue o módulo do kernel de SDP ib_sdp e edite /etc/infiniband/openib.conf para configurar esse parâmetro para yes, conforme mostrado da Listagem 4.
    Lista 4. Parâmetro Configurado para yes
    SDP_LOAD=yes
  2. Reinicialize o sistema ou carregue o módulo manualmente. Em seguida, verifique se o módulo do kernel está carregado, conforme mostrado na Listagem 5.
    Lista 5. Carregar o Módulo
    bash# modprobe ib_sdp
                            
    bash# lsmod | grep ib_sdp
    ib_sdp 130827 0
    rdma_cm 35175 2 ib_sdp,rdma_ucm
    ipv6 322029 89 ib_sdp,ib_addr,ib_ipoib
    ib_core 69947 14
  3. Configure aplicativos para carregar a biblioteca dinâmica /usr/lib64/libsdp.so. Há dois métodos para carregar a biblioteca SDP. É possível pré-carregar a biblioteca para cada processo criado ou para todo o sistema. Esses métodos se aplicam a qualquer aplicativo que usa chamadas de soquete glibc, incluindo aplicativos Java que usam JDBC para conectar a servidores de bancos de dados.
    1. Pré-carregue a biblioteca para cada processo criado, conforme mostrado na Listagem 6.
      Lista 6. Pré-carregar Biblioteca
      bash# LD_PRELOAD=/usr/lib64/libsdp.so myapplication
    2. Pré-carregue a biblioteca para todo o sistema. Cada processo no sistema irá pré-carregar essa biblioteca. Inclua a linha a seguir em /etc/ld.so.preload conforme mostrado na Listagem 7.
      Lista 7. Pré-carregar SDP com /etc/ld.so.preload
      /usr/lib64/libsdp.so
    3. Verifique se um aplicativo estará carregando a biblioteca de SDP no tempo de execução conforme mostrado na Listagem 8.
      Lista 8. Biblioteca de SDP no Tempo de Execução
      bash# ldd my_app | grep sdp
      /usr/lib64/libsdp.so (0x00007f217170d000)
  4. Antes de iniciar o servidor e os clientes DB2, é possível usar echo server e telnet para testar se SDP está funcionando corretamente. Ative o echo server em /etc/xinetd.d/echo-stream configurando disable = no.

    1. Reinicie o daemon xinetd conforme mostrado na Listagem 9.
      Lista 9. Daemon xinetd
      bash# service xinetd restart
      Stopping xinetd:                                           [  OK  ]
      Starting xinetd:                                           [  OK  ]
    2. Verifique se o processo xinetd está vinculado à biblioteca de SDP, conforme mostrado na Listagem 10.
      Lista 10. Processo xinetd
      bash# lsof -p `pidof xinetd` | grep sdp
      xinetd  10090 root  mem  REG    8,5    69128 9339172  /usr/lib64/libsdp.so.1.0.0
    3. Agora é possível conectar ao echo server na porta 7 de outro computador configurado com SDP, conforme mostrado na Listagem 11.
      Lista 11. Conexão do Echo Server
       bash# LD_PRELOAD=/usr/lib64/libsdp.so telnet 10.7.7.1 7
       Trying 10.7.7.1...
       Connected to 10.7.7.1.
       Escape character is '^]'.
       test sdp
       test sdp
    4. Neste ponto, o cliente telnet é conectado ao echo server e qualquer linha digitada em telnet será ecoada de volta pelo echo server. As conexões SDP ativas podem ser listadas com o comando sdpnetstat , que é semelhante ao netstat padrão do Linux, conforme mostrado na Listagem 12.
      Lista 12. Comando de Conexões SDP Ativas
       bash# sdpnetstat -Sn
       Active Internet connections (w/o servers)
       Proto Recv-Q Send-Q Local Address           Foreign Address        State      
       sdp        0      0 10.7.7.2:41771          10.7.7.1:7             ESTABLISHED

      Observe que as conexões SDP não podem ser exibidas pelo comando netstat padrão.


Cliente/Servidor DB2 por SDP

As etapas necessárias para ativar SDP para DB2 são semelhantes ao exemplo do echo server. Certifique-se de que a biblioteca de SDP esteja listada em /etc/ld.so.preloade reinicie a instância do DB2. O servidor DB2 não pode ser iniciado configurando ou exportando a variável de ambiente LD_PRELOAD porque o DB2 consiste em muitos processos que estão sendo bifurcados e alguns desses processos estão em execução como raiz ou raiz setuid. Portanto, a variável não será propagada para todos os processos-filhos.

  1. Efetue login como o proprietário da instância e reinicie a instância, conforme mostrado na Listagem 13.
    Lista 13. Reiniciar a Instância do DB2
    db2inst1$ db2stop
    db2inst1$ db2start
  2. Para testar se o DB2 está usando SDP, use um comando simples incluído no DB2 chamado db2batch. No computador cliente DB2, efetue login como o proprietário da instância do cliente e cria um arquivo que contém as instruções SQL a serem usadas na referência. Um arquivo de amostra update.sql é fornecido na Listagem 14.
    Lista 14. Arquivo update.sql de Amostra
     --#SET PERF_DETAIL 0
     create table demo (c1 bigint, c2 double, c3 varchar(8));
    
     --#BGBLK 4000
     insert into demo values (-9223372036854775808, -0.000000000000005, 'demo');
     --#EOBLK
    
     --#SET ROWS_OUT 0
     select * from demo;
    
     drop table demo;

    Há quatro instruções neste exemplo. A primeira cria uma tabela que será descartada no final do teste em quatro instruções. A segunda instrução é INSERT, que será executada 4000 vezes. A instrução três selecionará todas as linhas da tabela (4000 linhas), mas não exibirá as mesmas para stdout.
  3. Para iniciar o teste, execute o comando como o proprietário da instância do cliente no computador cliente, conforme mostrado na Listagem 15.
    Lista 15. Instância do Cliente
     db2inst1$ LD_PRELOAD=/usr/lib64/libsdp.so db2batch -d sample -f update.sql \
                    -a db2inst1/password -r result.txt,summary.txt

    O comando db2batch gera dois arquivos de resultados. result.txt , que contém métricas detalhadas para cada instrução individual, e summary.txt , que contém o tempo total e médio para cada bloco.
    Apesar de esse ser um teste muito simples, é possível ver o efeito de SDP no desempenho. Insere em média de 230 microssegundos em SDP comparado a 360 microssegundos em TCP. Uma instrução SELECT que retorna 4000 registros leva 4 milissegundos em SDP e 6 milissegundos em TCP.
    Esses testes foram executados usando as configurações padrão de SDP para sdp_zcopy_thresh (64 K) e recv_poll (700). Consulte a seção Ajuste de Desempenho para obter detalhes de como ajustar esses parâmetros.
  4. O resumo para db2batch em SDP é mostrado na Listagem 16.
    Lista 16. Resumo para db2batch em SDP
    Type      Number      Repetitions Total Time (s) Min Time (s)   Max Time (s)
    --------- ----------- ----------- -------------- -------------- --------------
    Statement           1           1       0.115556       0.115556       0.115556
    Block               1        4000       0.924646       0.000200       0.001328
    Statement           3           1       0.004281       0.004281       0.004281
    Statement           4           1       0.133243       0.133243       0.133243
                    
    Type      Number      Repetitions Arithmetic Mean Geometric Mean
    --------- ----------- ----------- --------------- --------------
    Statement           1           1        0.115556       0.115556
    Block               1        4000        0.000231       0.000229
    Statement           3           1        0.004281       0.004281
    Statement           4           1        0.133243       0.133243
  5. O resumo para db2batch em TCP é mostrado na Listagem 17.
    Lista 17. Resumo para db2batch em TCP
    Type      Number      Repetitions Total Time (s) Min Time (s)   Max Time (s)   
    --------- ----------- ----------- -------------- -------------- --------------
    Statement           1           1       0.115521       0.115521       0.115521
    Block               1        4000       1.445863       0.000326       0.001034
    Statement           3           1       0.006005       0.006005       0.006005
    Statement           4           1       0.137436       0.137436       0.137436
                    
    Type      Number      Repetitions Arithmetic Mean Geometric Mean
    --------- ----------- ----------- --------------- --------------
    Statement           1           1        0.115521       0.115521
    Block               1        4000        0.000361       0.000360
    Statement           3           1        0.006005       0.006005
    Statement           4           1        0.137436       0.137436
  6. A comparação entre SDP e TCP é graficamente mostrada na Figura 1 e Figura 2.
    Figura 1. Tempo Médio por INSERT
    Tempo Médio por INSERT
    Figura 2. Tempo Total para um Bloco de 4000 INSERT
    Tempo Total para um Bloco de 4000 INSERT

Configuração Avançada de SDP

Por padrão, a biblioteca de SDP é configurada para usar SDP primeiro. Se a conexão SDP falhar, tentará usar TCP. Regras adicionais podem ser definidas em /etc/libsdp.conf.
O formato do arquivo é <address-family> <role> <program name> <address|*>:<port range|*>

Os valores padrão são definidos na Listagem 18.

Lista 18. Valores padrão
use both server * *:* 
use both client * *:*
  • A palavra-chave both significa tentar SDP; se falhar, tentar TCP .
  • Regras server se aplicam a aplicativos que recebem em um soquete.
  • Regras client são para aplicativos que iniciam uma conexão.
  • <program name> especifica o nome do processo ao qual essa regra se aplica.
  • <address:port> corresponde ao IP e a porta locais nas quais um servidor está recebendo uma regra server .
  • <address:port> corresponde ao IP e a porta remota aos quais um cliente está tentando se conectar.

A primeira regra que corresponde a seu aplicativo será aplicada, e as regras restantes serão ignoradas.

Por exemplo, essas regras alternarão processos Java para SDP ao conectar a um servidor DB2 e usarão TCP para conexões com o servidor do LDAP, conforme mostrado na Listagem 19.

Lista 19. Conexões SDP para DB2. Conexões TCP para LDAP
use sdp client java 192.168.100.10:50000
use tcp client java *:389

Essas regras configuram um servidor DB2 para aceitar conexões SDP em uma única interface e conexões TCP em outra, conforme mostrado na Listagem 20.

Lista 20. Servidor Aceitando Conexões SDP e TCP
use sdp server db2* 192.168.100.10:50000
 use tcp server db2* 192.168.200.10:50000

A regra mostrada na Listagem 21 configura a biblioteca de SDP para aceitar as conexões SDP e TCP, SDP sendo a preferencial.

Lista 21. Regra para Configurar a Biblioteca de SDP
 use both server * 192.168.100.10:50000

Ajuste de desempenho

Os parâmetros sdp_zcopy_thresh e recv_poll são importantes para ajustar o desempenho de SDP e devem ser configurados de acordo com cada padrão de carga de trabalho e tráfego específico.

Limite de Cópia Zero

SDP pode copiar pacotes em dois modos: usando cópia zero (o kernel tem bypass efetuado e o buffer do usuário é transmitido diretamente da memória do usuário) ou cópia de buffer (ele é copiado para o espaço de kernel primeiro).

ZCopy é mais eficiente para mensagens maiores e Bcopy para mensagens que tem poucos KBytes de tamanho.

O parâmetro sdp_zcopy_thresh especifica o método a ser usado. Por padrão, mensagens menores que 64 KB são transferidas com Bcopy, e aquelas acima de 64 KB com Zcopy, conforme mostrado na Listagem 22.

Lista 22. Parâmetro sdp_zcopy_thresh
bash# cat /sys/module/ib_sdp/parameters/sdp_zcopy_thresh 
65536

Para modificar esse limite, escreva um valor diferente no sistema de arquivos sys , conforme mostrado na Listagem 23.

Lista 23. Sistema de Arquivos sys
bash# echo 32768 > /sys/module/ib_sdp/parameters/sdp_zcopy_thresh

Use um valor igual a zero para desativar Zcopy completamente, forçando Bcopy a ser usado para todos os tamanhos de mensagens.

Também é possível configurar esse parâmetro em modprobe.conf, conforme mostrado na Listagem 24.

Lista 24. modprobe.conf
 options ib_sdp sdp_zcopy_thresh=32768

O valor mínimo do limite é igual ao tamanho da página de memória. Use getconf PAGE_SIZE para exibir o tamanho da página de seu sistema.

Cronômetro de Pesquisa de Recebimento

O parâmetro recv_poll especifica o horário que um destinatário pesquisa dados recebidos. O valor padrão é 700 microssegundos, conforme mostrado na Listagem 25.

Lista 25. Cronômetro de Pesquisa de Recebimento
 bash# cat /sys/module/ib_sdp/parameters/recv_poll
 700

A pesquisa pode ser desativada configurando o parâmetro procfs de recv_poll para zero, conforme mostrado na Listagem 26. Esse processo exige menos CPU em comparação a um valor diferente de zero. No entanto, latências de mensagens são mais altas com recv_poll=0.

Lista 26. Usando recv_poll=0
 bash# echo 0 > /sys/module/ib_sdp/parameters/recv_poll

Inclua isso em modprobe.conf para ser persistente após uma reinicialização, conforme mostrado na Listagem 27.

Lista 27. modprobe.conf
 options ib_sdp recv_poll=0

Depuração de SDP

  • Use sdpnetstat para listar conexões SDP, de forma semelhante a netstat . Entretanto, netstat não exibe as conexões SDP, conforme mostrado na Listagem 28.
    Lista 28. Usando sdpnetstat
    bash# sdpnetstat -Sn
    Active Internet connections (w/o servers)
    Proto Recv-Q Send-Q Local Address        Foreign Address      State
    sdp     0       0   192.168.100.10:4432  192.168.100.11:7     ESTABLISHED
    sdp     0       0   192.168.100.11:7     192.168.100.10:4432  ESTABLISHED
  • SDP tem dois componentes chamados módulo do kernel e biblioteca de usuário. Ambos podem ser configurados no modo de depuração, conforme mostrado na Listagem 29.
    • O modo de depuração do espaço do usuário é controlado por libsdp.conf.
      Lista 29. Os níveis de depuração são descritos em libsdp.conf
      log min-level 9 destination file libsdp.log
    • O modo de depuração do modo kernel pode ser ativado em procfs, conforme mostrado na Listagem 30.
      Lista 30. Depuração do Modo Kernel
      bash# echo 1 > /sys/module/ib_sdp/debug_level

      O modo de depuração do modo kernel também pode ser ativado em modprobe.conf, conforme mostrado na Listagem 31.

      Lista 31. Depuração do Modo Kernel em modprob.conf
      options ib_sdp sdp_debug_level=1

Conclusão

Este artigo mostrou como o protocolo Remote Direct Memory Access (RDMA) é mais eficiente do que TCP, fornecendo um método com custo reduzido para ativar os recursos de RDMA em ambientes de cliente/servidor DB2 sem exigir recodificação e recompilação dos aplicativos existentes. Também discutiu como instalar os drivers e ferramentas Mellanox, ativar SDP em kernel e espaço do usuário, assim como ajustar desempenho e depuração de SDP.

Recursos

Aprender

Obter produtos e tecnologias

Discutir

  • Participe da comunidade do My developerWorks. Entre em contato com outros usuários do developerWorks, enquanto explora os blogs, fóruns, grupos e wikis orientados ao desenvolvedor.

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=Information Management
ArticleID=829648
ArticleTitle=Ativar Recursos de RDMA para o DB2 com o Socket Direct Protocol
publish-date=08102012