AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 420288
Accepted
sourcejedi
sourcejedi
Asked: 2018-01-29 13:25:38 +0800 CST2018-01-29 13:25:38 +0800 CST 2018-01-29 13:25:38 +0800 CST

Por que `strace` não mostra que este processo está esperando por algo?

  • 772

O poderoso straceme decepcionou. Como isso é possível?


time foomostra que fooleva vários segundos para rodar ("real"), mas usa tempo de CPU insignificante, tanto no espaço do usuário ("usuário") quanto no kernel ("sys"). Para os curiosos, fooé definido abaixo.

Portanto, ele passa a maior parte do tempo esperando por outra coisa, não executando as instruções da CPU. Normalmente, posso ver como ele está esperando strace- ou seja, qual chamada do sistema está bloqueando por um longo período de tempo. Infelizmente, essa abordagem não funcionou.

strace -ttt -T -C -w foomostra chamadas de sistema, data e hora e um resumo do tempo (real) gasto em chamadas de sistema. Mas esse processo em particular mostrou um gasto de tempo geral (real) insignificante dentro das chamadas do sistema.


fooé na verdade journalctl -b -u dev-hugepages.mount. Exceto que eu tive que mudar o último argumento para uma unidade systemd diferente a cada vez para reproduzir isso. Em outras palavras, o atraso que estou investigando aconteceu na primeira vez que tentei obter os logs de qualquer unidade systemd. EDIT : depois de responder a pergunta principal, também percebi o motivo pelo qual estava tendo esse problema ao reproduzir o atraso .

O tempo gasto nesse processo é um problema específico, aparentemente não ocorre em todos os sistemas. https://github.com/systemd/systemd/issues/7963

performance time
  • 1 1 respostas
  • 2241 Views

1 respostas

  • Voted
  1. Best Answer
    sourcejedi
    2018-01-29T13:25:38+08:002018-01-29T13:25:38+08:00

    O motivo usual para atingir esse problema é que o processo está bloqueando em falhas de página. Estas são leituras ou possivelmente gravações em arquivos executadas por meio de um mapeamento de memória, também conhecido como mmap(). Você deve ter notado alguns mmap()no rastreamento de chamadas do sistema.

    Se você tivesse usado o /usr/bin/timeprograma em vez do timeshell embutido, também deve ter notado:

    0.04user 0.10system 0:02.29elapsed 6%CPU (0avgtext+0avgdata 40464maxresident)k
    73632inputs+0outputs (376major+1081minor)pagefaults 0swaps
    

    majorpagefaults são aqueles que requerem IO do sistema de arquivos. minorpagefaults são muito menos significativos (provavelmente apenas uma "falha TLB").

    Eu suspeito que inputssão o número total de páginas lidas. Atualmente, acho que as páginas mapeadas de arquivo são sempre do mesmo tamanho. 4096 bytes na maioria dos casos, mas você pode verificar getconf PAGESIZE.

    Isso representa aproximadamente 290 megabytes, lidos em algo acima de 100 megabytes por segundo, uma velocidade padrão para um disco rígido como o meu. Mistério resolvido!


    Observe também que você está assumindo que possui uma CPU totalmente livre para este processo. Caso contrário, o processo pode simplesmente ser bloqueado esperando que outros processos cedam a CPU.

    stracemostra apenas quando o processo entra (e sai) do kernel devido a uma chamada do sistema. Ou quando um sinal unix é entregue. No entanto, existem outros tipos de interrupções que stracenão aparecem. Então, estes incluem

    • Falhas de página.
    • A interrupção do temporizador. Isso é usado para alternar para um processo diferente, quando o atual tiver esgotado sua fatia de tempo alocada na CPU.
    • 18

relate perguntas

  • Tempo de criação do processo, shell script e overhead de chamada do sistema

  • Por que `time` e `strace -c` diferem?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve