일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- xshell4
- whatis
- 리눅스
- vcore
- core file
- 괌
- 출력
- 다수 클라이언트
- kdumo
- linux
- 인화여고
- vi
- IPv6
- 칼국수
- host key
- ubuntu22.04
- 노트북 정보
- C
- hostkeyalgorithms
- 디버깅
- spacse
- 껍질없는
- ubuntu
- 괌여행
- Listen
- 노트북 배터리 교체
- gdb tip
- 옛날 탕수육
- thread pid
- 인천
- Today
- Total
극히 개인적이고 극히 대단하지 않은
kdump를 설정했음에도 kdump가 생기지 않는 대표적 경우와 해결책 본문
환경은 ubuntu 20.04이다.
현장의 장비가 원인없이 reboot되는 경우가 있어서 kdump를 설정했다.
구글링한 정보들을 짜맞춰서 정상적으로 설정이 된 것 같은데 문제가 발생했을 때, reboot이 아니라 hang이 발생하고 crash정보도 생성되지 않아 더 난감한 상황에 빠진 적이 있다.
정상적으로 kdump가 설정된 것은 다음과 같은 정보들로 확인했다.
USE_KDUMP가 1이고, current state가 ready to dump이면 kdump가 생성될 조건이 되었을 때, 생성이 되어야 하는 것이다.
이런데도 불구하고 kdump가 생성되지 않는다면, kdump를 위한 메모리 확보가 충분하지 않아 그럴 가능성이 높다. 콘솔에서 다음과 같은 부분이 발견된다면 더더욱...
[ 3.598311] Out of memory and no killable processes...
[ 3.603423] Kernel panic - not syncing: System is deadlocked on memory
cat /proc/cmdline 명령을 입력했을 때, crashkernel 항목의 파라미터를 늘여보자. 이 시스템의 경우는 192M에서 512M로 늘여줬다.
/etc/default/grub.d/kdump-tools.cfg 파일의 GRUB_CMDLINE_LINUX_DEFAULT 항목의 맨 마지막 항목을 192M에서 512M로 변경하고 저장했다. update-grub 명령을 입력하여 grub에 반드시 등록해줘야 한다.
한번 시스템을 재시작 한 후, 정상적으로 반영되었는 지, cat /proc/cmdline으로 다시 확인한다. 모든 게 정상적으로 반영이 되어 있다면 익히 아는 방법인 echo c > /proc/sysrq-trigger 명령을 내려본다.
정상적으로 리부팅이 되면서 /var/crash에 필요한 정보들이 남는 것을 확인했다.
'20년차 개발자' 카테고리의 다른 글
mysql의 패스워드에 문제가 있어서 접속을 할 수 없을 때. (0) | 2024.09.20 |
---|---|
다수 클라이언트 환경에서의 서버 소켓의 listen (0) | 2022.12.08 |
리눅스에서 thread의 pid를 확인하는 코드 (0) | 2022.10.27 |
요긴한 gdb 명령들 (0) | 2021.05.20 |
C 디버깅용 로그 출력할 때, 자동으로 함수이름과 라인번호 출력하기 (0) | 2020.09.11 |