C Language : 리눅스와 4G Board에서 CPU,MEM process를 OAM하여 출력하는 코드 및 관리
환경: Linux, C, Sh
1. 리눅스와 4G Board 내에서 CPU, MEM 출력방법
1. (1) cat /proc/stat 명령어로 출력가능
Cpu user system nice idle wait hi si zero
CPU: CPU core의 숫자.
User: user mode에서의 실행 시간
System: system mode에서의 실행 시간
Nice: 낮은 권한의 user mode에서의 실행 시간
Idle: I/O완료가 아닌 대기 시
Wait: I/O 완료 대기 시간
Hi: Hard Interrupt(IRQ)
Si: Soft Interrupt(SoftIRQ)
Zero: 끝
1. (2) top 명령어로 출력 가능
- PID
- PID는 프로세스 ID이며 프로세스를 구분하기 위한 겹치지 않는 고유한 값입니다.
- USER
- 해당 프로세스를 실행한 USER 이름 또는 효과를 받는 USER의 이름입니다.
- PR & NI
- PR : 커널에 의해서 스케줄링되는 우선순위입니다.
- NI : PR에 영향을 주는 nice라는 값입니다.
- VIRT, RES, SHR, % MEM
- 해당 필드들은 프로세스의 메모리와 관련 있습니다.
- VIRT : 프로세스가 소비하고 있는 총메모리입니다. 프로그램이 실행 중인 코드, heap, stack과 같은 메모리, IO buffer 메모리를 포함합니다.
- RES : RAM에서 사용 중인 메모리의 크기를 나타냅니다.
- SHR : 다른 프로세스와의 공유 메모리(Shared Memory)를 나타냅니다.
- % MEM : RAM에서 RES가 차지하는 비율을 나타냅니다.
- S : 프로세스의 현재 상태를 나타냅니다.
- TIME+ : 프로세스가 사용한 토탈 CPU 시간
- COMMAND : 해당 프로세스를 실행한 커맨드를 나타냅니다.
1.(3) ps aux로 출력 가능
*4G Board에서는 버전이 달라 실행이 되지 않기에 top 또는 cat /proc/stat명령어로 실행해야 함
2. 리눅스와 4G Board에서 CPU, MEM process를 OAM 하여 출력하는 코드 및 관리
cpu와 mem의 사용량과 일정 용량이 넘어가면 reboot 하는 명령어와 어디 부분이 가장 많이 사용됐는지 TOP7을 출력하게 하는 OAM
==cpu2.c==
2.(1) 시작 구조체 선언
2.(2) 프로세스 열기
2.(3) 프로세스 정보 저장
2.(4) 오류 있는지 확인
2.(5) 각각의 정보를 보여주고 일정 % 넘어가면 reboot
2.(6) 각각의 정보를 보여주고 일정 %넘어가면 reboot
3. 실제 출력 화면
*4G 보드 기준으로 코딩했기에 Linux화면에서는 실행시키지 않겠습니다.
처음으로 작성한 cpu2.c파일을 cpu3로 컴파일해줍니다. 하얀 부분은 회사 사내 보안이기에 가렸습니다.
3.(1)WinSCP를 통해 4G Board에 /mnt/flash/OAM경로에 파일을 보내줍니다.
3.(2) 옮겨진 것을 확인할 수 있습니다.
3.(3) 컴파일 실행을 통해 결과를 확입니다.
3.(4) 프로그램 실행 후 모든 정보를 프로그램에 저장
3.(5) 사진에서 보듯이 각각의 정보가 txt 파일에 저장된 것을 확인 가능하다.
4. CPU 또는 MEM이 Reboot 되는 OAM
4.(1) Total Usage:가 124.19%로 80%가 넘어서자 날짜도 시간도 안 맞으며 reboot이 실행되는 것을 확인할 수 있다.
4.(2) Reboot이 언제 되는지 확인하기 위해 Reboot.txt 파일에 저장하게 하였다.
4.(3) Sutdown.txt를 보면 날짜와 시간에 Shtdown이 되었다고 기록이 됩니다.
4.(4) CPU_INFO에서도 124.19% 가 넘었다고 기록이 됩니다.
4 Day 간 CPU와 Memory의 사용량을 파악하고 기록하며, 관리하며 어떤 프로세스의 사용량이 큰지 출력하며 Reboot까지 실행시킬 수 있는 코드를 제작하였습니다. 감사합니다.