context switch

mjdevv·2023년 12월 23일
0

운영체제

목록 보기
8/12

vmstat 1 3

3초 동안 컨텍스트 스위치가 얼마나 일어났는지 알 수 있다.

프로세스:
r: CPU 시간을 기다리거나 실행 중인 프로세스의 수.
b: 비인터럽트 가능한 슬립에 있는 프로세스의 수.

메모리:
swpd: 사용 중인 가상 메모리 양.
free: 여유 메모리 양.
buff: 버퍼로 사용된 메모리.
cache: 캐시로 사용된 메모리.

스왑:
si: 디스크에서 스왑된 메모리 양 (KB/s).
so: 디스크로 스왑된 메모리 양 (KB/s).

IO:
bi: 블록 디바이스에서 받은 블록 (블록/s).
bo: 블록 디바이스로 보낸 블록 (블록/s).

시스템:
in: 초당 발생한 인터럽트 수 (클록 포함).
cs: 초당 컨텍스트 스위치 수.

CPU:
us: 사용자 공간에서 소비된 CPU 시간의 백분율.
sy: 커널 공간에서 소비된 CPU 시간의 백분율.
id: 유휴 CPU 시간의 백분율.
wa: I/O 대기에 소비된 CPU 시간의 백분율.


cat /proc/1/status | grep ctxt

예제에서의 /proc/1/status를 확인해보면 init 태스크의 컨텍스트 스위치가 어떻게 일어났는지 확인할 수 있다.

컨텍스트 스위치가 preemptive / non-preemtive하게 일어났는지의 여부를 알 수 있다. voluntary는 non-preemtive, nonvoluntary는 preemtive 컨텍스트 스위치다.

status를 열어보니 여러 정보가 나온다. GPT한테 물어보자.

이름 (Name): systemd - PID 1인 init 시스템.
유마스크 (Umask): 0000 - 파일 생성시 권한 제한 없음.
상태 (State): S (슬립) - 이벤트 대기중인 상태.
Tgid (Thread Group ID): 1 - 스레드 그룹 리더.
Ngid (Numerical Group ID): 0 - 스레드 그룹 숫자 ID.
Pid (Process ID): 1 - init 프로세스.
PPid (Parent Process ID): 0 - 부모 없음.
TracerPid: 0 - 추적기 없음.
Uid 및 Gid (User ID와 Group ID): 0 (루트 사용자).
FDSize (파일 디스크립터 크기): 128 - 할당된 파일 디스크립터 슬롯 수.

profile
방구석 언어기술자

0개의 댓글

관련 채용 정보