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 |