O que é exatamente mostrado por “perf” como falhas de página?

5

Eu quero contar o número de acessos ao disco durante uma execução completa do meu script. Meu script bash executa 2 outros arquivos executáveis localmente e 2 outros arquivos executáveis remotamente. Algo parecido com isto (esses arquivos executáveis podem acessar outras ferramentas):

#!/bin/bash

./executable1 DATA1 &
./executable2 DATA2 &

ssh remote_host './executable3 DATA3' &
ssh remote_host './executable4 DATA4' &

wait;

Agora estou executando meu script bash com perf assim:

perf stat -e page-faults,page-faults:u ./myBashScript.sh

mas sempre os resultados são os mesmos, não importa se eu mudo os arquivos DATA *, os pedidos, o número de comandos,… Algo parecido com isto:

128,470 page-faults
127,641 page-faults:u

Agora, minha pergunta é: "Como posso contar o número desses acessos ao disco para todo o script?"

p.s:

  • Como você sabe, o Linux tenta reduzir o número de acessos ao disco usando o espaço livre do disco como um disco cache e, aqui, "contando o número de acessos ao disco", quero dizer exatamente quantas vezes o sistema operacional precisa trazer dados do disco rígido para o principal memória (= acerto / erro de RAM)
  • Eu só preciso contar o número de acessos ao disco na máquina local e não no remoto.
  • Desculpe pelo inglês fraco.
por Dark 31.01.2014 / 17:29

1 resposta

0

As falhas de página na ferramenta perf das ferramentas do Linux ( perf_events ) são para falhas de página maiores e menores. E falhas de página menores não são para acesso ao disco. E nem toda falha de página principal é para acesso ao disco (somente o arquivo do disco foi mmap ed). E os acessos a disco de leitura / gravação não gerarão falhas de página.

Algumas soluções genéricas de contagem de falhas de página estão no link .

Para contar os acessos a disco globalmente, use o link iostat tool (tps, r / s, w / s) ou vmstat tool link (bo, bi, %código%). Ambos são usados com período em segundos como -d ou iostat 1 para imprimir um conjunto de atividades a cada segundo até serem mortos por ctrl-c; ou como vmstat 1 ou iostat 1 60 para imprimir a cada segundo por 1 minuto e sair.

Outra solução é usar a combinação da ferramenta vmstat 1 60 e alguns eventos específicos de subsistemas de E / S ou de disco. Gregg tem alguns exemplos de uso avançado de perf em link e link .

Sua ferramenta iosnoop link e link (baseado em perf) pode rastrear disco i / o com processo pid, ID do disco, deslocamento e tamanho do io e também medirá a latência do acesso ao disco.

Verifique também "7.2. Heat Maps" do link

I used perf_events to record the block request (disk I/O) issue and completion static tracepoints:

 # perf record -e block:block_rq_issue -e block:block_rq_complete -a sleep 120
    
por 25.05.2018 / 06:19