Como detectar uma chamada específica do sistema chamada ou não em um fluxo de trabalho inteiro?

0

EDIT No. 1

Minha tarefa é espelhar, ou seja, copiar dados atualizados do servidor mestre para todos os espelhos, usando rsync e rsh. Mas durante o rsync e o rsh, encontrei algum atraso. Meu pensamento é, a razão para o atraso é a pesquisa reversa de DNS. Então eu quero fazer log para o tempo consumido no processo de pesquisa de DNS reverso, quando o servidor mestre se conecta com o servidor espelho.

No meu aplicativo, quero detectar a chamada reversa do sistema de pesquisa de DNS chamada ou não. Então, para que comando isso ajuda?

Para pesquisa reversa de DNS, a chamada do sistema é getnameinfo (). se você qualquer outro, me diga.

Eu só quero rastrear apenas esta chamada de sistema no meu projeto. Qual comando posso usar?

Eu sei que o comando ltrace / strace rastreia todas as chamadas do sistema chamadas till script exit, mas isso gera uma sobrecarga extra, porque todo o rastreio de chamada do sistema não é útil em meu projeto.

Eu quero fazer o log do tempo consumido na pesquisa de DNS reverso durante rsync e rsh.

Ajude-me no meu problema.

    
por devsda 03.03.2013 / 06:39

2 respostas

3

Em primeiro lugar, getnameinfo não é uma chamada de sistema, mas uma função glibc.

Mas, de qualquer forma, basta executar wireshark para monitorar o tráfego. Isso funciona para a consulta DNS.

EDITAR

Para criar um perfil de um aplicativo, tente gprof , talvez leia este guia

    
por 03.03.2013 / 07:00
1

Normalmente, é o servidor que faz uma pesquisa reversa de DNS no IP do cliente, e nenhuma quantidade de rastreamento o cliente lhe dirá isso.

O que você precisa fazer é verificar a configuração ou a atividade da rede no servidor. strace e semelhantes não são uma boa correspondência para isso: observe a atividade de rede, por exemplo, com tcpdump ou Wireshark.

    
por 04.03.2013 / 00:30