느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라

top : 시스템 부하 관련 정보를 수초간격으로 실시간으로 갱신하며 표시해준다.

 

load average : cpu가 처리하는걸 기다리는 작업 개수

 

load average가 높을수록 과부하가 일어나고 있다는 뜻이다. cpu 코어수 이상이 될 경우 과부하가 일어나고 있다고 보면 될 것 같다.

 

cpu 사용률과 cpu 시간 양쪽이 큰 프로세스는 과부하 원인일 가능성이 높음

 

과부하 원인인 프로세스는 kill명령어로 종료 하도록 한다.

 

그런데, cpu사용률이 높지 않더라도 load average가 높은 경우가 있는데, 이러할 경우 메모리가 부족하여 발생하는 경우이다.

 

Swap

cpu는 보통 작업 장소로 메인 메모리를 사용하지만 메모리 여유 공간이 부족하면 새로운 작업을 할 수 없다.

그렇게 되면 OS는 메모리에 있는 최근 사용하지 않은 데이터를 정리해서 메모리 빈 공간을 만들어 낸다.

 

정리되 데이터는 일단 하드디스크에 옮기는데 이를 스왑 아웃이라고 한다.

 

반대로 스왑아웃한 데이터가 필요해지면 하드 디스크에서 메모리로 데이터를 되돌리는데 이걸 스왑 인이라고 한다. 이 둘을 합쳐서 스왑이라고 부른다.

 

스왑은 OS가 알아서 관리해서 각각의 프로그램은 메모리 상태를 신경쓰지 않아도 되지만,

 

점점더 메모리를 사용하면 스왑이 빈번히 발생해서 I/O대기시간이 무척 길어지고, load average가 증가하는 원인이 된다.

 

 

OOM Killer

메모리가 부족해지면 스왑 아웃이 발생해서 데이터를 하드디스크에 기록한다고 하지만, 이게 계속되면 이제는 데이터를 저장할 하드쪽 용량이 꽉차게 된다.

이럴경우 OS 자체가 동작이 이상해질수도 있으므로 리눅스는 OS가 적당히 프로세스를 골라서 강제 종료시킨다. 이러한 기능을 Out of Memory Killer의 약어로 OOM Killer로 부른다.

profile

느린 것을 걱정하지 말고, 멈춰서는 것을 걱정하라

@주현태

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!