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 / 793914
Accepted
AlanQ
AlanQ
Asked: 2025-04-19 01:53:00 +0800 CST2025-04-19 01:53:00 +0800 CST 2025-04-19 01:53:00 +0800 CST

systemd-journald grava uma média de 16 MB por hora!

  • 772

SO: Ubuntu MATE 24.04.2 LTS

Adicionei o monitor do sistema ao meu painel superior e notei muita atividade no disco.
A princípio, pensei que o principal "culpado" fossejbd2 o Dispositivo de Bloco de Registro (Journaling Block Device).
Mas o jbd2 ( "um registro para proteger o sistema de arquivos contra inconsistências de metadados em caso de falha do sistema" ) só grava no disco em resposta a outras coisas gravando no disco.
Executando o comando sudo iotop -a, vi que (*) o principal dispositivo que grava no disco é o systemd-journald : em 3h40m, ele gravou 60 MB!

Entendo que esses são dados binários, mas, se fosse texto, mesmo com 4 bytes por caractere, isso seria " Guerra e Paz " a cada 7 horas!

  • Isso é "normal"?
  • O que é escrever que requer tantos dados?
  • Devo me preocupar com meu disco de sistema SSD?
  • Posso reduzir (com segurança) a quantidade (e a frequência) de dados gravados?

(*) o monstro que é o Firefox apesar de tudo

ubuntu
  • 2 2 respostas
  • 60 Views

2 respostas

  • Voted
  1. Best Answer
    Marcus Müller
    2025-04-19T17:27:02+08:002025-04-19T17:27:02+08:00

    Pensei em fazer muitos comentários sobre sua pergunta, mas a) isso seria demais e b) provavelmente teria chegado ao que você queria saber de uma resposta, mesmo que não tivesse como foco principal responder suas perguntas específicas.

    Então, aqui vai uma resposta.

    sudo iotop -a[…] systemd-journald: Em 3h40m ele escreveu 60MB!

    Você está confundindo taxa de transferência com dados acumulados. Se meu programa (neste caso, Python, mas qualquer linguagem de programação serve)

    f = open("somelogfile.bin", "wb")
    while(True):
      f.seek(0)
      f.write(b"x")
    

    quando você apenas conta o número de bytes gravados por segundo, este programa grava muitos megabytes por segundo, mas tudo o que ele realmente faz é atualizar o primeiro byte repetidamente. ls -l somelogfile.binlhe diria que o arquivo tem 1 B de tamanho.

    Uma das características do formato de log binário do systemd-journal é que ele é

    • pesquisável e
    • relativamente seguro contra colisões.

    Para conseguir isso, ele provavelmente está atualizando alguns campos regularmente, mesmo que não esteja anexando novos dados. (O formato é documentado publicamente. Estou com preguiça de verificar.)

    (observe que os buffers de gravação podem complicar ainda mais a relação entre o que significa atualizar um arquivo e gravar um arquivo no disco.)

    Agora, primeiro verifique: Qual é o tamanho real do seu diário? journalctl --disk-usageEle informará algo como 512 MB (pelo menos na minha máquina). Esse número será aproximadamente constante, porque o systemd-journald limpa os registros anteriores quando eles são antigos o suficiente e você está executando acima de um determinado limite de tamanho.

    Em seguida, verifique o que realmente acontece nas coisas que são registradas:

    journalctl -b0 -x -f -e
    #          ^   ^  ^   ^
    #          |   |  |   |
    #          \———————————— 0: current boot's logging only
    #              |  |   |  (ignore things that were logged during previous boots)
    #              |  |   |
    #              \———————— add a bit more explanation
    #                 |   |
    #                 \————— follow the output as it comes in live
    #                     |
    #                     \— scroll to end
    

    mostrará o que o seu sistema registra. Adicione --userpara ver o que os seus serviços de usuário registram.

    Há algo rolando em alta velocidade? Se não, bem, então não há nada novo registrado. Se sim, esse é o problema, não o seu sistema de registro! (Não atire no mensageiro.)

    Se muita coisa estiver acontecendo ao mesmo tempo, é possível obter algumas estatísticas sobre o que foi registrado e quantas mensagens foram registradas desde a última inicialização

    journalctl -b0 --output=cat --output-fields=UNIT | sort | uniq --count | sort -n 
    

    Na linha de comando que você já reconhece -b0como "esta inicialização atual", --output=catdiz journalctlpara gerar texto não formatado e --output-fields=UNITdiz para gerar somente a unidade que está registrando a mensagem (não a mensagem, não o registro de data e hora, etc.), sortclassifica as coisas em ordem alfabética, uniq -cpega a entrada classificada e imprime a contagem de linhas idênticas consecutivas e, por fim, sort -nclassifica a saída numericamente.

    Devo me preocupar com meu disco de sistema SSD?

    Não sei te dizer. Mas meus SSDs são classificados para um volume de gravação de 3 Petabytes (tempo médio até falha), então, supondo que você tenha um menor com memória de qualidade inferior, digamos, ele é classificado para 0,5 PB MTTF. Isso significa que a 16 MB/h,

    0,5·10¹⁵ B / (16·10⁶ B/h) = 31250000 h = 3567,4 a;

    em outras palavras, se você tivesse 1000 discos passando exatamente por essa carga de gravação, depois de 3567 anos, 500 teriam falhado.

    Você tem um disco. Você precisaria assumir um modelo estatístico para quando os discos rígidos falham (obviamente, eles não falham todos no mesmo segundo em 3567 anos. Alguns falharão antes, outros depois; a questão é a *distribuição disso), que ninguém sabe (um fabricante de SSDs para data center pode compartilhar suas estatísticas com seus clientes de alto perfil; o próprio Google terá estatísticas suficientes para estimar isso. Simplesmente não temos como saber).

    Um modelo estatístico comum para falhas de dispositivos é um modelo exponencial (uma lâmpada não pode falhar duas vezes). Isso não pode ser correto aqui em detalhes (devido ao nivelamento do desgaste, que necessariamente transforma o modelo de falha das células de flash individuais), mas é um ponto de partida. Ele tem uma função de distribuição cumulativa:

    F ( t , λ ) = 1 - e - λt ,

    onde t é o tempo e λ é a taxa , que ainda não sabemos.

    Mas o que significa "tempo médio até a falha"?

    F ( t MTTF , λ ) = 0,5,

    então (log sendo o logaritmo natural)

          0,5 = 1 - e - λt MTTF
          0,5 = e - λt MTTF
    log 0,5 = log e - λt MTTF
                = - λt MTTF · log e
                = - λt MTTF ,

    produzindo a percepção de que

    λ = - log 0,5 / t MTTF ,

    e no nosso caso,

    λ = - 0,693147 / 3567,4 [1/a] = 0,00019430 / a.

    Que, inserido na função de densidade cumulativa original,

    F ( t ) = 1 - e -0,00019430· t ,

    significa que após uma vida útil realista de t = 15 anos, seu SSD ainda estaria funcionando com uma probabilidade de 0,99709; em outras palavras, se seu SSD de baixa qualidade não fizesse nada além de gravar logs nessa taxa, você o perderia para carga de gravação dentro de 15 anos com uma probabilidade de 3 em 1000.

    Você está bem.

    • 3
  2. ctx
    2025-04-19T17:07:47+08:002025-04-19T17:07:47+08:00

    Não é um problema systemd-journald, mas algo está registrando tanto. Verifique o que está nos logs:

    journalctl -xef
    

    Se você não precisar desses logs, tente descartá-los antes de enviá-los para o diário.

    Se você não precisar dos seus logs após uma reinicialização, você pode adicioná Storage=volatil-los /etc/systemd/journald.confe reiniciar o diário: systemctl restart systemd-journald.

    • -1

relate perguntas

  • Torne as configurações do teclado Apple persistentes em ../hid_apple/parameters/

  • traçar gráfico 2D com pontos de um arquivo

  • Como faço para verificar se estou usando 9.9.9.9 para DNS?

  • Instale várias distribuições Linux em paralelo

  • O OpenVPN auto-compilado não inicia a partir do systemd

Sidebar

Stats

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

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

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

    • 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

    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
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • 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
    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

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