Linux Proc File System

Ji·2022년 3월 17일
0

Proc File System

  • 운영체제의 각종 정보를 커널 모드가 아닌 유저 모드에서 쉽게 접근할 수 있도록 만들어 줌
  • 프로세스 상황감시, CPU사용율, 인터럽트, 네트워크 패킷 전송량, 적재된 모듈, IDE-SCSI와 같은 장치정보, CPU정보 등의 데이터를 얻을 수 있음
  • 시스템 정보를 일반 프로그래머가 쉽게 접근할 수 있는 매개체 역할
  • open, read, write 3개의 함수를 통해 필요한 데이터를 읽고 쓰는 작업이 가능함
  • 파일 시스템 오버헤드를 줄여줌
  • 데이터(Linux Format)의 양이 적고, 사용하는 정보가 대부분 정해져 있음.

Proc File System의 사용

(1) 커널 모델 프로그래밍 : 커널 모듈과 같은 커널과 밀접하게 관계 있는 프로그램에서 유용
(2) 임베디드 프로그래밍 : 파일시스템을 구동하지 못하는 임베디드 시스템은 Proc File System을 통해 관리자 환경 혹은 데이터 입출력 환경 구축 가능

각 자원 별 Proc File System의 특징

(1) CPU

  • Proc File System을 통해 프로세스의 총 CPU 사용량을 계산 가능

(2) Memory

  • 커널 메모리상에 가상 파일 시스템 (Linux Format) 형태로 존재
  • Proc File System은 메모리에서 동작하고 커널이 직접 관리하여 속도가 빠름

(3) Disk

  • Proc File System은 커널에 의해 완전히 관리되며 다른 파일 시스템과 같이 디스크에 저장되지 않음
  • Linux Proc은 커널 메모리에서 유지하는 파일 시스템
  • 하드디스크와 같은 별도의 장치를 필요로 하지 않음.

(4) Network

  • NFS(네트워크 파일 시스템)을 사용.

(5) NFS Mount

  • NFS(네트워크 파일 시스템)를 사용하면 원격 호스트가 네트워크를 통해 Proc File System을 마운트하고 로컬에 마운트 된 것처럼 시스템과 상호 작용할 수 있음.
  • Mount 명령어로 Proc File System이 자동으로 마운트 된 것을 확인할 수 있음.

리눅스 명령어를 이용한 시스템 모니터링

1. uname

  • 시스템과 커널의 정보 확인
  • 사용할 수 있는 옵션들 ex) uname -a 형식으로 사용
     [-a, --all] : 전체 내용 출력
     [-s, --kernel-name] : 커널 명 출력
     [-n, --nodename] : 네트워크 노드의 호스트 명 출력
     [-r, --kernel-release] : 커널 릴리즈 정보 출력
     [-v, -kernel-version] : 커널 버전 출력
     [-m, --machine] : 머신 하드웨어 이름 출력
     [-p, --processor] : 프로세서 종류 또는 'unknown' 출력
     [-i,- -hardware-platform ] : 하드웨어 플랫폼 또는 'unknown' 출력
     [-o, --operating-system ] : 운영체제 'unknown' 출력

2. ifconfig:

  • 네트워크 기본 모니터링
  • 시스템에 설정된 네트워크 인터페이스의 상태를 확인 및 변경
  • 출력 키워드의 의미

 [eth0, eth1] : 유선 네트워크 인터페이스 (랜카드)
 [lo] : 루프 백 인터페이스로 자기자신과 통신하는데 사용하는 가상 장치.
 [HWaddr] : 네트워크 인터페이스의 하드웨어 주소(MAC Address)
 [inetaddr] : 네트워크 인터페이스에 할당된 IP 주소
 [Bcast] : 브로드캐스트 주소
 [Mask] : 넷마스크
 [MTU] : 네트워크 최대 전송 단위(Maxium Transfer Unit)
 [RX packets] : 받은 패킷 정보
 [TX packets] : 보낸 패킷 정보
 [collision] : 충돌된 패킷 수
 [Interrupt] : 네트워크 인터페이스가 사용하는 인터럽트 번호

3. top

  • 운영체제 작업 내역 모니터링
  • 윈도우의 작업관리자 기능
  • 시스템 프로세스들의 CPU/Memory 점유율을 실시간으로 확인 가능
  • 몇 개의 프로세스가 있는지, CPU의 자세한 사용률은 어떻게 되는지, Memory와 Swap은 얼마나 사용하고 있는지를 확인가능 함.

% Cpu(s)
-각 항목의 값이 높다면 그 항목에서 사용되고 있는 시간이 오래 걸린다고 판단 가능함.

 [us] : 사용자가 사용중인 사용률
 [sy] : 시스템이 사용중인 사용률 (sy 값이 높다면 시스템에 의해 사용되고 있는 시간이 오래 걸린다고 판단 가능)
 [ni] : 프로세스 우선순위를 기반으로 사용되는 사용률(사용자 공간에서 사용)
 [id] : 아무 일도 하지 않는 여유률
 [wa] : 입출력을 기다리는 프로세스 사용률
 [hi] : 하드웨어 인터럽트 사용률
 [si] : 소프트웨어 인터럽트 사용률
 [st] : 가상화 환경에서 손실률

PROCESS

 [PID] : 프로세스 ID
 [USER] : 프로세스를 실행시킨 사용자 ID
 [PR] : 프로세스의 우선순위
 [NI] : NICE 값, 마이너스를 가지는 값이 우선순위가 높음
 [VIRT] : 가상 메모리의 사용량(SWAP+RES)
 [RES] : 현재 페이지가 상주하고 있는 크기
 [SHR] : 가상 메모리 중 사용중인 메모리를 제외한 잔여 가상 메모리
 [S] : 프로세스의 상태
 [%CPU] : 프로세스가 사용하는 CPU의 사용률
 [%MEM] : 프로세스가 사용하는 메모리의 사용률
 [TIME+] : 프로세스가 CPU를 사용한 시간
 [COMMAND] : 실행된 명령어

  • 프로세스 목록을 원하는 특정 기준에 따라 정렬 가능
     [SHIFT+M] : 메모리 사용률 정렬
     [SHIFT+N] : PID 기준 정렬
     [SHIFT+P] : CPU 사용률 정렬
     [SHIFT+T] : 실행시간 기준 정렬
     [SHIFT+R] : 정렬 기준변경 (오름차순인 경우 내림차순으로, 내림차순인 경우 오름차순으로 변경함)

4. free: 메모리 모니터링


 [MEM] : 실제 메모리
 [Swap] : 일종의 가상 메모리
 [Buffers] : 일부 프로세스에 의해 발생한 임시 메모리
 [Cached] : 기존에 실행된 프로그램들이 사용했던 메모리로 실행 중이거나 새로 시작될 프로그램들이 필요할 때 빠르게 재 사용할 수 있는 메모리 영역

5. vmstat: 시스템 정보 모니터링

  • 시스템 작업, 하드웨어 및 시스템 정보를 확인 가능
  • 메모리, 페이징, 블록장치의 I/O, CPU상태 확인 가능

procs
 [r] : CPU에서 대기중인 프로세스의 수를 의미.
 [b] : 인터럽트가 불가능한 sleep 상태에 있는 프로세스의 수 (I/O 처리를 하는 동안 블록 처리된 프로세스)

Swap(KB/s)
 [si(swap in)] : 디스크 swap 공간에 있는 데이터를 메모리로 호출하는 양
 [so(swap out)] : 메모리에서 디스크로 보내는 데이터의 양

6. Iostat

  • CPU, 디스크 입출력 상태 모니터링
  • 평균 CPU부하, 디스크 I/O의 세부적인 내용 확인 가능

Device
 [tps] : 디바이스에 초당 전송 요청 건수
 [kB_read/s] : 디바이스에서 초당 읽은 데이터 블록 단위
 [kB_wrtn/s] : 디바이스에서 초당 쓴 데이터 블록 단위
 [kB_read] : 디바이스에서 지정한 간격 동안 읽은 블록 수
 [kB_wrtn] : 디바이스에서 지정한 간격 동안 쓴 전체 블록 수

7. Netstat

  • 네트워크 상태 모니터링
  • 시스템에 연결된 네트워크 상태, 라우팅 테이블, 인터페이스 상태 확인 가능
  • 2개의 영역으로 나누어져 출력
     Active Internet connections : TCP, UDP, raw로 연결된 목록 확인
     Active UNIX domain sockets : 도메인 소켓으로 연결된 목록 확인

8. df

  • 디스크 모니터링
  • 현재 디스크의 전체 용량 및 남은 용량을 확인 가능

참고
https://web.mit.edu/rhel-doc/5/RHEL-5-manual/Deployment_Guide-en-US/ch-nfs.html
https://www.kernel.org/doc/html/latest/filesystems/proc.html
https://www.whatap.io/ko/blog/10/

profile
공부방

0개의 댓글