커널이 리소스가 부족한 프로세스를 중지하지 않는 이유는 무엇입니까?

커널이 리소스가 부족한 프로세스를 중지하지 않는 이유는 무엇입니까?

저는 Linux 박스(우분투)를 실행하고 있는데 몇 달에 한 번씩 멈춰서 선택의 여지가 없고(SysRq-F 및 기타 키보드 단축키가 작동하지 않음) 다시 시작해야 하므로 모든 데이터가 손실됩니다.

왜 커널이 메모리나 CPU를 많이 차지하는 프로세스를 종료하지 않는지 궁금합니다.

시스템을 정지/응답하지 않는 상태로 두는 이유는 무엇입니까?

답변1

시스템이 "정지"될 때 SysRq 키 조합이 작동하지 않고 시스템이 정상적으로 실행될 때 작동하는 것을 확인한 경우 문제는 리소스 고갈보다 더 심각합니다. 커널 버그일 수도 있고 간헐적인 하드웨어 문제일 수도 있습니다. 더 많은 정보가 필요합니다.

시스템이 서버급 하드웨어인 경우 시스템 콘솔에 원격으로 액세스하거나 하드웨어 문제에 대한 경고를 받거나 시스템 전원을 켜거나 끄는 데 사용할 수 있는 별도의 관리 프로세서가 있을 수 있습니다. 더 저렴한 서버 시스템에도 일종의 하드웨어 오류 로그가 있을 수 있습니다. ipmitool액세스하려면 공급업체별 도구가 필요할 수도 있고 필요하지 않을 수도 있지만 더 많은 정보를 얻을 수 있습니다.

답변2

서버가 수행하는 작업과 서버에 어떤 리소스가 있는지 이해하는 것은 흥미로울 것입니다. 서버가 응답하지 않는 상태이거나 프로세스가 자주 모니터링되고 다시 시작되는 문제를 완화하려면 일부 구성을 조정해야 하거나 추가 리소스가 필요할 수 있습니다. 일정 기간이 지나면 이것이 첫 번째 접근 방식이 될 것이라는 것이 귀하의 게시물에서 명확하지 않습니다.

그러나 응답하지 않는 서버를 복구하기 위한 대책으로 소위 감시 장치(Watchdog)가 있습니다.

머신이 물리적인 경우 Linux 커널이 지원하는 하드웨어 워치독을 구입할 수도 있습니다.

일부 IoT 장치에는 SoC에 감시 기능이 내장되어 있습니다.

물리적 서버 또는 가상 머신의 경우 소프트웨어 감시 장치(예: 학생 서버, 계산을 수행하거나 동전 채굴로부터 숨기는 머신(저 자신은 아님!))를 구성할 수 있습니다(과거에는 문제가 있는 서버에 대해 그렇게 했습니다). 이러한 서비스를 응답하지 않는 상태로 두지 말고 다시 시작하십시오.

소프트웨어 워치독은 기본적으로 서버의 특정 리소스와 서버와 통신하는 애플리케이션을 모니터링하는 주기적인 인터럽트입니다. 구성된 검증이 실패하거나 애플리케이션이 데이터 전송을 중지하면 서버를 강제로 다시 시작합니다.

바라보다Linux 커널/소프트독 드라이버

워치독 타이머란 무엇입니까?

감시 타이머는 시스템 정지가 감지되면 시스템 재설정을 트리거하는 장치입니다. 시스템에서 실행되는 프로그램은 "서비스 펄스"를 작성하여 감시 타이머를 주기적으로 서비스해야 합니다. 감시 장치가 특정 기간 동안 서비스되지 않으면 감시 장치는 시스템이 정지된 것으로 간주하고 시스템 재설정을 트리거합니다.

부드러운 개란 무엇입니까?

일반적으로 감시 타이머는 마이크로 컨트롤러 내의 추가 카드 또는 온칩 주변 장치로 구현됩니다. 그러나 하드웨어 감시 장치가 없는 경우 Linux 커널은 커널 타이머를 사용하여 구현된 소프트웨어 감시 장치를 제공할 수 있습니다.

Linux 감시 메커니즘

Linux에서 Watchdog 드라이버는 사용자 공간에 문자 드라이버 인터페이스를 제공합니다. 일부 데이터가 워치독 드라이버에 기록되면 워치독 드라이버는 워치독 하드웨어에 서비스를 제공합니다. 사용자 공간 애플리케이션은 감시 시간 초과 기간을 기반으로 감시 드라이버에 일부 데이터를 주기적으로 씁니다. 어떤 이유로 사용자 공간 애플리케이션이 중단되면 감시 장치가 서비스되지 않고 시스템 재설정이 트리거됩니다.

일반적으로 워치독 드라이버로 작성된 애플리케이션은 워치독 데몬으로, 시스템의 프로세스는 물론 CPU 활용도, 메모리 활용도 등과 같은 기타 매개변수도 모니터링합니다.

부드러운 개들이 일하는 방식

소프트도그 드라이버가 켜지면 소프트도그는 지정된 타이머 마진 후에 커널 타이머가 만료되도록 예약합니다. 소프트독 드라이버는 일부 데이터가 드라이버에 기록될 때 타이머를 다시 예약합니다. 사용자 공간 감시 데몬은 드라이버에 주기적으로 기록하고 타이머는 지속적으로 다시 예약되므로 타이머 콜백이 호출되지 않습니다. 감시 데몬이 드라이버에 쓰기를 중지하면 타이머가 만료되고 콜백이 호출됩니다. 타이머 콜백에서 시스템이 다시 시작됩니다.

당신은 또한 볼 수 있습니다Debian - 패키지: watchdog - 시스템 상태 검사기 및 소프트웨어/하드웨어 감시 처리기

watchdog 프로그램은 10초마다 /dev/watchdog에 기록합니다. 장치가 켜져 있지만 1분 이내에 기록되지 않으면 머신이 재부팅됩니다. 커널이 "소프트웨어 워치독"(데비안 커널의 표준)을 지원하도록 구축되었거나 머신에 하드웨어 워치독이 장착되어 있는 경우(이 경우 이 패키지를 사용하여 타이머를 재설정하여 "애완"할 수도 있습니다) 이 기능은 다음과 같습니다. 사용 가능).

커널 소프트웨어 워치독의 재시작 기능은 머신 상태와 인터럽트에 따라 달라집니다.

감시 도구 자체는 여러 가지 상태 확인을 실행하고 시스템이 비정상이 되면 적절한 조치를 취합니다.

또한 시스템이 제대로 작동하는지 여부에 따라 로그를 읽을 수 있도록 원격 syslog 서버에 로그를 보내도록 syslog 데몬을 구성하는 것이 좋습니다.

관련 정보