1. 시스템 구성정보 확인하기

uname 커널 버전 관련 정보 조회
dmesg 디버깅 메세지 체크
dmidecode bios, system, processor
dmidecode memory
df 디스크 파티션 타입 정보 조회
smartctl 디스크의 물리적 정보 조회
lspci 네트워크 정보 조회
ethtool 네트워크 카드의 세팅 정보 조회

 

 

2. top 명령어를 통해 프로세스 정보 조회하기

1) top 명령어

- top : 시스템 정보 확인 가능

- 구동된 시간, 로그인된 사용자 숫자, 실행 중인 프로세스의 개수, cpu, memory, swap 메모리의 사용량

- 우선순위, 조정 우선순위, 가상배정 메모리, 실제배정 메모리, 공통사용영역 등

 

2) VIRT, RES, SHR

- VIRT : VIRT + RES + SHR를 모두 포함한 영역, 각 Task에 할당된 메모리 전체

- RES : 할당된 메모리 중 실제로 사용되고 있는 물리 메모리의 양

- SHR : 다른 프로세스와 공유 중인 메모리의 양

 

 

3. 가상 메모리 배정과 memory commit

1) memory  commit : 메모리에 쓰기 작업이 들어가야 진짜 할당이 되도록 하는 것

- 메모리는 동적으로 배정

- 처음부터 할당 시 비효율적 → 최대 배분 상한선만 정해놓고 실제 쓰기 작업 시 진짜 할당 진행

 

2) 가상 메모리 배정의 이유

- fork() 프로세스 콜 : 현재 실행 중인 프로세스와 똑같은 프로세스를 하나 더 할당 → 실질적으로 사용하는 영역만 배정

- COW(Copy On Write) : 복사된 메모리 영역에 실제 쓰기 작업이 발생한 후에 실질적인 메모리 할당 시작

 

 

4. 프로세스의 상태 변화

- SHR의 S 항목 : 프로세스 상태 확인 가능

D 디스크 혹은 네트워크 I/O를 위해 대기하는 프로세스
R 실행 중인 프로세스
S 요청한 리소스를 즉시 사용할 수 있는 상태의 프로세스
T 프로세스의 시스템콜을 추적하고 있는 상태
Z 부모 프로세스가 죽으 자식 프로세스
Zombie 프로세스라고 함

 

 

5. 프로세스의 우선순위

→ PR과 NI 항목을 통해 조절

- NI(Nice value) : 우선순위 → 숫자가 낮을수록 높은 값

- Run Queue : 우선순위별로 프로세스 연결

- Run Queue 상태에서 NI를 호출해 PR을 올리면 호출 우선순위가 올라가 실행될 확률이 높아지는 형식

 

 

6. Load Average

1) Load Average

- R/D 상태인 프로세스의 1, 5, 15분마다의 평균 개수

- 얼마나 많은 프로세스가 실행중이거나 대기중인지 나타내는 수치

- 값이 높을수록 실행/대기중인 프로세스가 많음을 의미

- 하나의 코어에 2개의 프로세스 vs 두 개의 코어에 2개의 프로세스

   → load average값은 같으나 가용자원 측면에서는 다르게 인식

위와 같이 uptime 명령어를 이용하여 load average를 계산할 수 있다.

 

2) CPU Bound vs I/O Bound

→ 부하의 종류에 따라 처리하는 방법론이 달라지기 때문에 구분하는 것이 중요

- CPU Bound : CPU의 자원(ex.연산)을 많이 필요로 하는 프로세스

- I/O Bound : 많은 I/O 자원(ex.디스크 쓰기)을 필요로 하는 프로세스

 

3) vmstat : 부하 원인 확인 (r, b 값이 중요)

- r : 현재 실행되기를 기다리거나 실행되고 있는 프로세스의 개수 → r이 높으면 CPU Bound일 확률이 높음

- b : I/O를 위해 대기열에 있는 프로세스의 개수 → b가 높으면 I/O Bound일 확률이 높음

 

4) Load Average가시스템에 끼치는 영향

Load Average 값이 같다고 해도 실제 시스템에 미치는 영향은 부하의 원인에 따라 달라짐

→ CPU나 I/O 자원에 대한 경합 정도에 따라 실제롤 딜레이되는 시간이 다를 수 있음

 

5) OS 버전과 Load Average

커널 차이로 인해 버그건 아니면 실제로 건 차이가 발생할 수도 있음

'네트워크캠퍼스 > LINUX' 카테고리의 다른 글

Shell Script 실습  (0) 2024.02.20
Shell Script  (0) 2024.01.17
프로세스  (0) 2024.01.16
텍스트에디터  (0) 2024.01.15
파일시스템  (0) 2024.01.11

+ Recent posts