O que os resultados do time wrapper do Linux me dizem que aconteceu com este comando cp?

O que os resultados do time wrapper do Linux me dizem que aconteceu com este comando cp?

Minha opinião sobre esse assunto vem do lado do desenvolvedor. Eu escrevo o código que é colocado em uma máquina virtual RHEL executada como uma entre muitas em um sistema corporativo. O sistema de arquivos usado é um dispositivo de armazenamento remoto conectado à rede.

Tivemos uma grande variabilidade em comandos simples durante o lote. Então montamos um teste para obter mais informações, mas agora não sei o que encontramos.

Executamos o seguinte comando a cada 30 minutos e registramos a saída. É uma cópia de um arquivo de 6 GB. O que vejo é um salto no tempo decorrido de 11 segundos para 190 segundos quando o sistema está ocupado executando muitos trabalhos e este comando de teste obtém baixo tempo de CPU.

O que posso ver é que a coluna "I" (entradas do sistema de arquivos) é preenchida quando a CPU está baixa, mas não quando está alta. A coluna “w” (swaps involuntárias) também é muito mais alta.

Minha pergunta é: o que está acontecendo com esse trabalho/comando que o força a rodar MUITO MAIS quando o tempo da CPU diminui? A entrada/saída de troca armazena todos esses dados em algum outro dispositivo muito mais lento? Geralmente, o que acontece durante uma entrada/saída de troca?

Comando sendo executado:

/usr/bin/time -a -o filename.txt cp file.txt fileCopy.txt
Data Tempo e S você P c c EU Ó
14/03/2022 5:19:02 64,9 16.23 1.03 26% 3005 29210 12000016 12.000.000
14/03/2022 5:49:02 12,7 11.63 0,79 97% 2069 76 0 12.000.000
14/03/2022 6:19:02 100,39 14,74 0,78 15% 1034 29925 12000136 12.000.000
14/03/2022 6:49:24 191,32 18,86 0,94 10% 3374 36164 12001024 12.000.000
14/03/2022 7:19:02 71,61 15,61 0,88 23% 1610 30316 12000296 12.000.000
14/03/2022 7:49:02 70,73 17,5 0,91 26% 1408 29540 12000072 12.000.000
14/03/2022 8:19:02 10,95 9,89 0,7 96% 1709 75 0 12.000.000
14/03/2022 8:49:02 11.01 10.22 0,73 99% 239 85 0 12.000.000

As descrições das colunas da página man para /usr/bin/time

e   Elapsed real time (in seconds).
S   Total number of CPU-seconds that the process spent in kernel mode.
U   Total number of CPU-seconds that the process spent in user mode.
P   Percentage of the CPU that this job got, computed as (%U + %S) / %E.
c   Number of times the process was context-switched involuntarily (because the time slice expired).
w   Number of waits: times that the program was context-switched voluntarily, for instance while waiting for an I/O operation to complete.
I   Number of filesystem inputs by the process.
O   Number of filesystem outputs by the process.

Responder1

P neste contexto significa a proporção do tempo de CPU que este trabalho obteve em relação ao tempo total decorrido. Perto de 100% significa que quase todo o tempo esteve na CPU e, portanto, a CPU ficou restrita para essas execuções. Em contraste com as outras corridas onde algo mais era o fator limitante. Mais tempo do sistema (também conhecido como kernel) do que tempo do sistema, como é típico de tarefas pesadas de E/S.

Dado que a carga de trabalho era copiar um arquivo de 6 GB, podemos inferir que as execuções de 11 segundos tiveram em média mais de 0,5 GB de gravações por segundo. A coluna O confirma o mesmo número de gravações a cada vez, consistente com um processo simples de copiar um arquivo.

A coluna de entrada apresenta grandes oscilações, entretanto. Execuções lentas têm leituras e gravações quase iguais. Mas as corridas rápidas não fazem nenhuma leitura! Presumo que o arquivo ainda esteja armazenado em cache na RAM desde a última leitura. A DRAM é muito mais rápida do que o armazenamento em estado sólido. O que é um grande aumento de velocidade, até que, sob pressão de memória, o sistema operacional descarte os dados em cache e precise ler novamente o armazenamento lento.

Portanto, esta é uma tarefa de 200 segundos, que ocasionalmente pode levar 12 segundos. Provavelmente devido ao cache da página do Linux.


Encontrar a causa raiz de um problema de desempenho geralmente requer uma compreensão mais profunda do sistema geral, além de qualquer conjunto específico de métricas.

O sistema de arquivos usado é um dispositivo de armazenamento remoto conectado à rede.

Observe que sua cópia está no armazenamento em rede; portanto, também pode ser qualquer coisa no sistema remoto ou na rede intermediária. Desempenho de armazenamento remoto. Velocidades e utilização da rede (provavelmente IP). Ou pode ser local para esta VM, onde o convidado está competindo por recursos com todo o resto em execução na sua infraestrutura.

Sempre é possível se aprofundar em como as coisas funcionam. O armazenamento em rede (NFS?) É importante ou você também vê isso no disco local? 0,7 segundos de tempo de CPU do usuário é bastante trabalhoso, na verdade, quanto é contabilizado para gerenciar muitas chamadas do sistema? O que realmente significa CPU ocupada quando a maior parte disso está aguardando memória lenta e armazenamento muito lento? Não são perguntas fáceis de responder, mas talvez não seja necessário cavar muito fundo quando a coisa estiver funcionando adequadamente.

informação relacionada