본문 바로가기

MLOps/트러블 슈팅

VScode를 사용했더니 kswapd0 사용률이 100%?..

 

VScode를 사용했더니 kswapd0 사용률이 100%?.. 

 

API 배포를 위한 개발용으로 네이버 클라우드 플랫폼에 서버를 하나 두고 사용하고 있다

 

최근 들어 계속 아래 그림처럼, CPU랑 MEM 사용량이 100% 찍어 느려지거나 재부팅되는 현상이 발생됐다


그래서 Top 명령어 실행해두고 곁눈질로 모니터링하면서 업무를 하던 도중,  kswapd0라는 놈을 잡아냈다

 


참고: WhaTap - 리눅스 free 명령어로 메모리 상태 확인하기

SWAP

  • 스왑은 디스크의 일정 부분을 메모리 공간 부족 시 메모리 처럼 사용하기 위해 설정해 둔 공간으로, 커널은 메모리가 부족한 상황에서는 Buffer와 Cache로 할당된 것 중에 자주 사용되지 않는 것들을 비우고 메모리에 할당하려고 시도함
  • 또한 메모리에 있는 데이터 중 최근 자주 사용되지 않은 데이터를 SWAP 공간으로 이동시킴(SWAP-OUT)
  • 그리고 SWAP으로 옮겨진 데이터를 프로세스가 읽기 위해 메모리로 데이터를 다시 가져옴(SWAP-IN)
  • 이는 디스크에 있던 데이터를 -> 메모리로 가져오기 떄문에 레이턴시가 발생하고 -> 성능 저하로 이어짐

 


참고 : AskUbuntu - kswapd0, CPU 사용량 폼 미쳤다

상태

  • kswapd0 프로세스가 CPU를 과점유 하고 있음
  • 각 종 블로그에는 해당 프로세스의 경우 리눅스의 가상 메모리를 담당하는 프로세스라고 하며, 메모리가 부족해서 SWAP 메모리를 사용할 때 생성되는 프로세스라고 함

 

원인

  • 메모리가 부족할 떄, kswapd0 은 사용하지 않거나 다른 프로그램만큼 많이 사용하지 않는 프로그램을 SWAP로 이동해서 해당 프로세스에 극심한 지연 유발
  • kswapd는 존재하지 않는 스왑 공간(스왑파티션이 가득 찬 경우)을 검색할 때 CPU를 많이 점유함

해결방법

A1

  • RAM 부족할 때만 SWAP 메모리를 사용하셈
  • 메모리를 많이 사용하는 작업할 때는 다른 프로세스 종료하셈
  • 비싼 RAM 구매하세요
  • CPU 사용량 낮추셈

A2

  • 재부팅하셈
  • 스크립트로 캐시 삭제 스케줄링하셈
    • `kswapd0`프로세스의 CPU 사용률을 확인하고, 그 값이 90 이상인 경우에는 캐시를 삭제하는 작업을 수행 
    • 메모리 관리를 위해 캐시를 강제로 비우는 동작
#!/bin/bash
# Rev 2: Use ps instead of top

## run as cron, thus no $PATH, thus need to define all absolute paths
cpu=$(/usr/bin/printf %.0f $(/bin/ps -o pcpu= -C kswapd0))

[[ -n $cpu ]] \
&& (( $cpu >= 90 )) \
&& echo 1 > /proc/sys/vm/drop_caches \
&& echo "$$ $0: cache dropped (kswapd0 %CPU=$cpu)" >&2 \
&& exit 1

exit 0

 

A3

  • 스왑공간 늘리셈

CPU와 MEM 사용량을 확인하고  Vscode 관련한 내용을 확인했다

아래와 같은 글을 찾을 수 있었다

Vscode remote-ssh extension, 그는 RAM 괴물인가?


OKKY 커뮤니티 댓글 중


CPU 사용률 Top 10 확인

 

MEM 사용률 Top 10 확인


결론

  1. Vscode extension 중  remote-ssh를 사용해서 서버에 접속했고, 이것은 메모리 사용량이 적지 않은 편임. (현재 서버는 최저 사양임)
  2. 메모리가 부족해져서 kswapd0는 SWAP 메모리를 사용했고 kswapd0 사용률은 99% 처럼 과점유 상태가 일어남
  3. 줄 알았으나, SWAP 메모리는 0이었고, 그냥 메모리 부족해서 발생한 문제 같음
  4. vscode-server를 포함한 프로세스를 강제 종료해서 사용률을 정상화 시킴
ps uxa | grep .vscode-server | awk '{print $2}' | xargs kill -9

참고

 

The "Kill VS Code Server on Host" command does not work for hostnames containing spaces · Issue #5816 · microsoft/vscode-remot

VSCode Version: 1.61.2 Local OS Version: Windows 10 21H1 Remote OS Version: Ubuntu 20.04.3 LTS Remote Extension/Connection Type: Visual Studio Code Remote - SSH extension (https://code.visualstudio...

github.com

 

 

How to kill VSCode remote services on Ubuntu Host

I just updated VSCode Remote Insider and I can't connect to my host through VSCode anymore. I tried to uninstall my local VSCode Insider and restart it, but it didn't help. Then, I removed the .vsc...

stackoverflow.com

 

 

OKKY - htop 명령어로 확인해봤을 때 vscode만 쓰면, CPU 사용률이 높아지는 경험 겪어보신분 있나요?

Cafe24에서 서버 호스팅으로 웹사이트 개발중입니다.어느 순간부터 사이트 속도가 드려서 확인해보니, 서버를 재부팅 직후에는 괜찮은데VScode로 서버에 접속하기만 하면 CPU와 메모리 사용률이 급

okky.kr