Como eu determino o número de buscas realizadas no Linux?

3

Eu tenho dois programas que gravam no disco dos meus servidores.

Um que eu escrevi, ele faz gravações lineares, está gravando dados rapidamente. Outro benchmarking, é gravar dados a um terço da velocidade. Não faz muito mais, e acredito que o problema é causado pelo segundo programa que busca mais (ou seja, faz mais acesso aleatório a arquivos).

Existe uma ferramenta no Linux que eu possa usar para determinar o número de buscas sendo realizadas em um disco específico? Ou por um processo particular?

    
por new299 15.01.2013 / 06:23

3 respostas

0

Esta ferramenta pode ajudá-lo link - eu usei isso no passado com algum sucesso. As outras ferramentas que podem lhe dar uma referência são iometer. Iostat é outra ferramenta, mas que pode não mostrar processos e essa ferramenta também pode ajudar link . Espero que ajude!

    
por 15.01.2013 / 07:46
0

Para determinar o número de chamadas buscar por processo, você pode usar strace e pesquisar todas as chamadas interessantes do sistema ( fseek (o) , lseek ( 64) , llseek etc.). Melhor apenas grep para procurar para ver quais funções são chamadas por esse processo em particular.

Exemplos:

lseek(3, -1467, SEEK_CUR)               = 842

O arquivo aberto através do descritor de arquivos 3 está definido para -1467 bytes da posição atual , resultando em uma nova posição de > 842 bytes.

lseek(12, 40267, SEEK_SET)              = 40267

O arquivo aberto através do descritor de arquivo 12 é ajustado para a posição total de 40267 bytes resultando em uma nova posição de 40267 bytes (que é igual a sucesso porque ambos os números são iguais).

    
por 15.01.2013 / 13:46
0

Talvez seja revelador observar o impacto e o comportamento da carga do sistema de armazenamento:

iostat -x 1

Existem vários valores de interesse:

  • avgrq-sz descreve o tamanho (em setores) de solicitações enviadas para o disco
  • avgqu-sz mostra o tamanho dessa fila (pense no. de transações)
  • await exibe o tempo gasto aguardando o acesso ao dispositivo (até o dispositivo iniciar o processamento da solicitação)
  • svctm mostra o tempo que o dispositivo gastou para satisfazer as solicitações

No seu caso, o tamanho da solicitação deve subir para sua descrição de gravações lineares, enquanto o tamanho da fila e a utilização do dispositivo devem permanecer de médio a baixo. Em seu segundo caso de mais padrões de acesso aleatório, o tamanho da solicitação deve permanecer baixo, mas o tamanho da fila, a espera de acesso e a utilização devem aumentar.

Dependendo dos padrões de acesso, pode fazer sentido sintonizar /proc/sys/vm/dirty_writeback_centisecs ou /proc/sys/vm/dirty_background_ratio , mas isso depende da quantidade e do padrão de dados movidos (apenas para dar a você um ponteiro de onde o ajuste pode ser feito para a página cache / cache de gravação são).

    
por 29.01.2013 / 10:40