리눅스 시스템에서 몇 시간 동안 아무 문제 없이 작업하다가, 링크를 하나 클릭하고 웹 앱을 하나 더 열었을 뿐인데 화면이 통째로 얼어붙은 경험이 있으신가요? 오래된 노트북으로 웹 애플리케이션을 자주 실행한다면 한 번쯤 겪어봤을 법한 상황입니다.
시스템을 강제로 종료하지 않고도 이런 상황을 빠르게 해결할 수 있는 방법이 있다면 어떨까요? 바로 SysRq 키 조합이 그 역할을 해줍니다. 이 키 조합을 활용해 컴퓨터의 스래싱(thrashing) 현상을 막는 방법을 자세히 알아보겠습니다.
스래싱(Thrashing), 왜 하필 내 컴퓨터에서?
가장 유력한 원인은 시스템이 '스래싱'이라 불리는 최악의 상태에 빠졌기 때문입니다. 스래싱은 사용 가능한 메모리가 부족할 때 발생하는 메모리 상태의 최악의 시나리오로, 시스템이 실질적인 작업보다 메모리 페이지 교체에 대부분의 자원을 소모하게 만듭니다.
스래싱이 시작되면 선택지는 많지 않습니다. 원인이 되는 프로세스를 종료하거나, 모든 작업을 중단한 뒤 나중에 복구하는 것뿐입니다. 복구 후에는 여러 애플리케이션을 동시에 너무 많이 실행하지 않도록 주의해야 합니다.
일부는 리소스를 많이 소모하는 애플리케이션을 돌리려면 메모리가 더 큰 새 컴퓨터를 구매하라고 권하기도 합니다. 하지만 그럴 형편이 아니더라도 이 문제를 해결할 방법은 분명히 존재합니다.
매직 SysRq 키 조합으로 스래싱 해결하기
여러 사정으로 여전히 오래된 컴퓨터를 써야 한다면 이제 이 문제와 정면으로 마주해야 합니다. 요즘 웹사이트 대부분은 클라이언트 측 처리에 맞춰 설계되었기 때문에 구형 기기에서는 버벅이고, 멈추고, 결국 사용자를 답답하게 만듭니다.
컴퓨터를 벽에 던질 수는 없지만, 특수한 키 조합으로 상황을 처리할 수는 있습니다. 전원 버튼을 길게 누르는 것 외에는 이것이 가장 확실한 종료 방법입니다.
- Ctrl + Alt + Fn 키를 동시에 누릅니다.
- 다른 손으로 SysRq 키를 누릅니다. 키보드에 SysRq 표기가 없다면 PrtScn(Print Screen) 키를 누르면 됩니다.
- SysRq 키는 계속 누른 상태로 Ctrl + Alt + Fn 키를 뗍니다.
- 이어서 R, E, I, S, U, B 순서대로 하나씩 누릅니다.
- 모든 키를 뗍니다.
이 과정을 마친 뒤 몇 초만 기다리면 시스템의 스래싱이 멈춥니다. 위 키 조합, 흔히 REISUB라고 불리는 이 조합은 시스템에 다음과 같은 작업을 수행합니다.
- R: 키보드를 Raw 모드로 전환합니다.
- E: init 프로세스를 제외한 모든 프로세스에 SIGTERM 신호를 보냅니다. SIGTERM은 해당 프로세스들을 정상적으로 종료시키는 신호입니다.
- I: init을 제외한 모든 프로세스에 SIGKILL 신호를 보내 강제 종료합니다.
- S: 시스템에 마운트된 모든 파일시스템을 디스크에 동기화(sync)합니다.
- U: 파일시스템을 읽기 전용(read-only) 모드로 다시 마운트합니다.
- B: 시스템을 재부팅합니다.
응답하지 않는 리눅스 시스템 복구하기
메모리가 부족하면 특정 프로세스가 컴퓨터 전체 작업의 병목이 될 수 있습니다. 이럴 때 SysRq 키 조합이 큰 도움이 됩니다. 물론 시스템을 재부팅해 문제를 일으키는 프로세스를 즉시 종료할 수도 있지만, 작업 중이던 내용을 잃게 되므로 모든 사용자에게 적합한 선택은 아닙니다.
평소에는 ps 명령어로 리눅스 시스템에서 실행 중인 프로세스를 모니터링할 수 있습니다. 이 명령어는 프로세스 ID(PID), CPU 점유율, TTY 셸 정보 등을 출력해 주므로, 어떤 프로세스가 자원을 과도하게 사용하는지 미리 파악해 두면 시스템이 멈추는 상황을 예방하는 데 큰 도움이 됩니다.