Por que o kernel não para processos que privam os recursos?

1

Estou rodando uma caixa linux (Ubuntu) e a cada poucos meses ela congela e eu fico sem escolha (o SysRq-F e outros atalhos de teclado não estão funcionando), mas para reiniciá-lo, perdendo todos os dados.

Eu estou querendo saber porque o núcleo não está matando o processe (s) que come a memória ou o processador central?

Qual é o objetivo de manter o sistema em um estado congelado / sem resposta?

    
por mike 16.01.2018 / 21:57

2 respostas

3

Se as combinações de teclas SysRq não funcionarem quando o sistema estiver "congelado" e você tiver verificado que elas funcionam quando o sistema está funcionando normalmente, então o problema é algo mais sério do que esgotamento de recursos. Pode ser um bug do kernel; pode ser um problema de hardware intermitente. Mais informações são necessárias.

Se o sistema for hardware de nível de servidor, pode haver um processador de gerenciamento separado, que pode ser usado para acessar remotamente o console do sistema, receber alertas de problemas de hardware ou ligar / desligar o sistema. Sistemas de servidor ainda mais baratos podem ter algum tipo de log de erros de hardware. Você pode precisar de ipmitool ou possivelmente de ferramentas específicas do fornecedor para acessá-lo, mas isso pode lhe dizer algo mais.

    
por 16.01.2018 / 22:44
2

Seria interessante aprender o que o servidor faz e quais recursos ele possui; algumas configurações podem ser ajustadas ou recursos extras podem ser necessários para aliviar o problema de o servidor estar em um estado sem resposta; ou um processo monitorado e reiniciado com freqüência; sua postagem não está clara e essa seria a primeira abordagem.

No entanto, como medida preventiva para recuperar um servidor que não responde, existe o que é conhecido como watchdog.

Se a máquina for física, você pode até comprar um watchdog de hardware suportado pelo kernel do linux.

Alguns dispositivos iOT vêm com um watchdog já integrado no SoC.

Para um servidor físico ou uma VM, você pode, e eu tenho no passado, watchdogs de software configurados para servidores problemáticos (por exemplo, um servidor de aluno, uma máquina fazendo cálculos e até esquivando mineração de moeda (não eu mesmo! )) - porque eu preferi uma reinicialização do que ter esses serviços sem resposta.

O watchdog de software é basicamente uma interrupção periódica que monitora alguns recursos do servidor e um aplicativo que fala com ele. Quando as verificações configuradas falham e / ou o aplicativo para de enviar dados, ele força a reinicialização do servidor.

Veja O driver Kernel / Softdog do Linux

What is a Watchdog Timer?

A watchdog timer is a device that triggers a system reset if it detects that the system has hung. A program running on the system is supposed periodically to service the watchdog timer by writing a "service pulse." If the watchdog is not serviced within a particular period of time, the watchdog assumes that the system has hung, and triggers a system reset.

What is Softdog?

Usually, watchdog timers are implemented as add-on cards, or as on-chip peripherals within microcontrollers. But if there is no hardware watchdog, the Linux kernel can provide a software watchdog implemented using kernel timers.

Linux Watchdog Mechanism

In Linux, the watchdog driver provides a character driver interface to the user space. When some data is written to the watchdog driver, the watchdog driver services the watchdog hardware. The user space application periodically writes some data to the watchdog driver, depending upon the watchdog timeout period. If for some reason the user space application hangs, the watchdog device does not get serviced and hence triggers a system reset.

Usually the application that writes to the watchdog driver is a watchdog daemon which monitors processes in the system, as well as other parameters such as CPU utilization, memory utilization, and so on.

How Softdog Works

When the softdog driver is opened, softdog schedules a kernel timer to expire after a specified timer margin. When some data is written to the driver, the softdog driver re-schedules the timer. The user space watchdog daemon periodically writes to the driver, and the timer is continuously rescheduled and hence the timer callback is never called. If the watchdog daemon stops writing to the driver, the timer expires and the callback is called. In the timer callback, the system is restarted.

veja também Debian - Package: watchdog - verificador de integridade do sistema e manipulador de watchdog de software / hardware

The watchdog program writes to /dev/watchdog every ten seconds. If the device is opened but not written to within a minute, the machine will reboot. This feature is available when the kernel is built with "software watchdog" support (standard in Debian kernels) or if the machine is equipped with a hardware watchdog (in which case this package can also be used to "pet" it, resetting its timer).

The kernel software watchdog's ability to reboot will depend on the state of the machine and interrupts.

The watchdog tool itself runs several health checks and acts appropriately if the system is not in good shape.

Eu também aconselho a configuração do daemon syslog para enviar logs para um servidor syslog remoto para ter logs para examinar sempre que o sistema estiver funcionando corretamente ou não.

    
por 16.01.2018 / 23:27