[Rhel/CentOS] 6. 프로세스 모니터링(Process Monitoring)
부하량이란 work load, cpu load, CPU의 스케줄링 상태를 보통 이야기한다. (ForGround,BackGround, Idle(x))
5초마다 커널은 실행 가능 및 중단되지 않는 상태의 프로세스 수를 기반으로 현재 부하 수치를 수집합니다.
Kernel(5s)(Count((all process)(scheduler_avilablility))) ;; 5s 마다 특정영역에 숫자를 갱신
# uptime ; 30~60min ;; 실시간 정보가 아님.
# watch -n1 'uptime' ;; 매 1초마다 uptime 명령어 실행
BSD(Unix): PROC.A: 0core (0~100, hold) == CPU 100%
LINUX: PROC.B: 0core(0~10), 11core(11~30), load 1이 되었다. == CPU 100%
Load 1 = pCore(1) Util(100%)
--> Linux Kernel 3.x -> 4, 5: Kernel Protect(95%)
--> 1 1GHz, PROC.A~~ 300M last(700M):
100%쓴다 라고하면 보통은 시분할 영역이 거의 분할율이 1G대역 다 쓰고 있음
스케줄러에서 계속 큐에 저장후 대기 상태
1(1.3-130%, 1.8-180%....)을 넘어가는 것은 q에 대기 중인 상태를 모두 포함해서 나타나는 것이다.
top 명령어는 계산이 들어가기 때문에 cpu에 부하가 간다(+프로세스 갯수가 많으면 느림)-> 서버에서 적당하지 않다.
-> 쓸때는 s를 눌러서 수집 시간 단위를 정해주자
uptime을 자주 쓰되, 정확하게 볼때 top을 쓰자...
vmstat : 실시간에 가까운 정보
$ vmstat -S M 1 10 // 1초에 10번씩
-- --- ---
unit update time count
[정리]
uptime: 실시간은 아님 -> top: 보기는 편하지만, 워크로드가 노음
-> vmstat: 보기는 좀 불편하지만 io, cpu, mem 상황을 한번에 볼 수 있음.
$ ps aux vs. ps -ef # 둘다 cpu여유가 있을때 사용
# -ef를 권장: 출력해주는 속도가 좀 더 빠르다.
$ ps -opid, uid cmd -ef # cpu 여유가 없을 때, o 옵션을 이용해서 필요한 정보만
Mac이 워크로드가 높은 프로세싱에서는 힘들다.
** ULE vs CFS
https://www.usenix.org/system/files/conference/atc18/atc18-bouron.pdf