TOP 명령어
top 명령어는 현재 OS의 상태를 나타내주는 CLI 어플리케이션입니다. 메모리 사용량, CPU 사용량 등을 나타내주며 top를 실행하는 동안에는 주기적인 업데이트로 실시간에 근접한 내용을 보여줍니다. 리눅스에서 top 명령어를 실행하면 아래와 깉이 노출됩니다. 위에는 전체의 요약이 있으며 아래에는 각 프로세스마다 구체적인 내용을 포함하고 있습니다.
top 의 Node Build
Build간 메모리 부족시
# 스왑 파일 생성
sudo fallocate -l 10G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 부팅 시 자동으로 스왑 파일을 활성화하도록 /etc/fstab에 추가
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
package.json 스크립트 수정
{
"build":"node --max-old-space-size=<메모리 입력> ./node_modules/.bin/nest build",
}

요약 영역
시스템 현재 시간, OS가 살아있는 시간(System time, uprtime and user sessions)
이미지의 가장 왼쪽 위를 보시면 시스템 현재 시간. OS가 살아있는 시간 그리고 유저의 세션수가 표시 되는 영역입니다.
가장 먼저 보이는 숫자가 시스템의 현재 시간입니다. 이 시간은 GMT 기준으로 표시됩니다. 다음으로 표시되는 것이 OS 가 얼마나 살아있는지 나타냅니다. 그리고 다음 나타나는 것이 현재 접속중인 유저 세션 수 입니다.
로드 애버리지(Load Average)
2번째 영역은 로드 애버리지 영역입니다. 해당 영역은 CPU Load의 이동 평균 표시입니다. 앞에서 부터 1분,5분 그리고 15분에 대한 평균값입니다. CPU Load란 CPU가 수행하는 작업의 양 입니다. 리눅스에서는 실행되거나 대기중인 프로세스의 평균입니다. 싱글 코어일 경우 1.0의 값이 CPU 100%를 사용하고 있다는 의미입니다. 멀티 코어라면 해당 코어수 만큼 * N을 한 값이 CPU 100%를 사용한다는 의미입니다. 만약 100% 를 넘어간다면 CPU에서 처리하지 못하고 대기하고 중인 프로세스가 있다고 보시면 됩니다.
Tasks
2번째 줄에는 Tasks에 관한 내용이 출력됩니다. Tasks는 현재 프로세스들의 상태를 나태내주는 영역입니다. Total은 전체 프로세스, running은 running 상태인 프로세스, sleeping은 대기상태인 process, stopped는 종료된 프로세스, zombies는 좀비상태인 프로세스의 수를 나타냅니다.
프로세스는 일반적으로 IO 기반의 일(IO bound)과 CPU 기반의 일(CPU-bound)을 번갈아 가면서 수행하게 됩니다. 이러한 프로세스의 상태는 일반적으로 아래와 같습니다. IO 기반의 일을 하게 될 때는 CPU는 idle 타임에 들어가게 됩니다. 또한 프로세스 스케줄링 알고리즘에 의해 프로세스는 번갈아가면서 실행되게 됩니다. 이렇게 멀티테스킹 작업을 시도하는데 이때 프로세스에는 아래와 같은 상태의 변동이 있습니다.
- 실행(Runnable) - CPU에 의해서 명령어가 실행중인 Process
- 준비(Ready) - CPU의 명령어 실행을 기다리는 Process
- 대기(Waiting) - I/O operation이 끝나기를 기다리는 Process
- 종료(Terminated) - Ctrl + Z 등의 signal로 종료된 Process
- Zombie - Process는 root Process로 부터 뿌리내린 자식 Process의 형식으로 트리구조를 형성합니다. 이 때 부모가 먼저 종료된 다면 root process로 부터 닿을 수 없는 Process가 생깁니다. 이를 zombie process라고 부릅니다.
CPU 사용량
Tasks 아래 %Cpu(s)라는 영역이 있습니다. 이 영역은 CPU가 어떻게 사용되고 있는지 그 사용율을 보여주는 영역입니다. 모든 값의 총 합은 100% 이며 이를 퍼센테이지로 나누어서 보여줍니다. 각 요소는 아래와 같습니다.
- us : 프로세스의 유저 영역에서의 CPU 사용률
- sy : 프로세스의 커널 영역에서의 CPU 사용률
- ni : 프로세스의 우선순위(priority) 설정에 사용하는 CPU 사용률
- id : 사용하고 있지 않는 비율
- wa : IO가 완료될때까지 기다리고 있는 CPU 비율
- hi : 하드웨어 인터럽트에 사용되는 CPU 사용률
- si : 소프트웨어 인터럽트에 사용되는 CPU 사용률
- st : CPU를 VM에서 사용하여 대기하는 CPU 비율
일반적으로 us 와 sy를 더한 값이 cpu 사용률이라고 보면 되며, id 값이 여유 CPU라고 보면 됩니다.
그 외에 wa나 ni 등의 값들이 크다면 원인 분석이 필요할 수 있다.
메모리 사용량
%Cpu(s) 영역 아래에 메모리와 관련된 영역이 있습니다. 첫번째 줄은 RAM의 메모리 영역으로 Mem이라 표시되어있는 부분입니다. 그리고 아랫줄은 디스크를 메모리 처럼 이용하는 Swap 메모리 영역입니다. 일반적으로 Mem의 사용량이 거의 가득 찼을때 Swap 메모리 영역을 사용합니다. 이 영역은 디스크이기 때문에 RAM 메모리보다 속도가 많이 느린 단점을 가집니다.
바이트 단위 표시에 따라 키로바이트(KiB) ~ 엑스비바이트(EiB)까지 표시됨.
바이트 단위 표시 변경 문자열은 'E' 임.
1 번째 줄은 물리적 메모리를 반영함.
분류는 total, free, used, buff/cache 로 구분됨.
2 번째 줄은 대부분 가상 메모리를 반영함.
분류는 total, free, used(물리적 메모리), avail Mem(물리적 메모리)
- total : 총 메모리 양
- free : 사용가능한 메모리 양
- used : 사용중인 메모리 양
buff/cache에서 buff는 buffers의 약자입니다. 이 값은 커널 버퍼에서 사용되는 메모리를 뜻합니다. cache는 Disk의 페이지 캐시를 말합니다. 즉, buff/cache는 IO와 관련되어 사용되는 버퍼에 사용되는 메모리를 말합니다. 이 메모리가 있으므로써 IO에 상대적으로 빠른 속도를 가질 수 있습니다. avail Mem은 swap 메모리를 사용하지 않고 사용할 수 있는 메모리의 크기를 말합니다
'블록체인 sw개발자' 카테고리의 다른 글
W3C 탈중앙화 식별자 표준 (0) | 2024.02.20 |
---|---|
React recoil 전역상태 (1) | 2024.01.08 |
React Hooks 정리 (1) | 2024.01.03 |
react-query 활용 (0) | 2024.01.02 |
<React> 지뢰 찾기 컴포넌트 (1) | 2023.11.28 |