서버에서 데몬(백그라운드 프로세스,  서비스)로 동작하면서 시스템의 변화를 확인하기 위해서 사용했던 내용으로 리눅스에서 c로 간단하게 구현할 수 있는 방법을 소개한다.

     

    --- 시스템 관리 함수 관련 글타래 -------------------------------

    1. 시스템 메모리 사용량 확인 : meminfo() 또는 sysinfo()

    >> 2. 프로세스의 리소스 정보 확인 : getrusage()

    3. 파일시스템(저장소) 정보 확인 : fstatvfs()

     --------------------------------------------------------------------

      embeddedclub.net에서 조회수가 많이있는것으로 보아 언젠가는 독자께 도움이 될수 있을 거라 판단하여 게시물을 이동하였다. 


    2. getrusage

      현재 프로세스에서 사용하는 리소스 또는 종료되어 대기한 child프로세스가 사용하는 리소스를 확인한다.

     

    2.1. sysnopsis 

    1) 함수원형

    #include <sys/time.h>
    #include <sys/resource.h>
    
    int getrusage(int who, struct rusage *usage);

     

    2) 구조체 

    struct rusage {
        struct timeval ru_utime;  
        struct timeval ru_stime;  
        long   ru_maxrss;        
        long   ru_ixrss;         
        long   ru_idrss;      
        long   ru_isrss;   
        long   ru_minflt;     
        long   ru_majflt;      
        long   ru_nswap;    
        long   ru_inblock;   
        long   ru_oublock;    
        long   ru_msgsnd;      
        long   ru_msgrcv;      
        long   ru_nsignals;   
        long   ru_nvcsw;      
        long   ru_nivcsw;     
    };

     

    2.2. Description

    1) 구조체 멤버정보

      sysinfo() 는 전체적인 시스템 통계 정보를 가져오기 위해서 사용한다. 가져온 정보는 struct sysinfo 에 채워진다.
    struct sysinfo 는 다음과 같은 멤버변수를 가진다.

    struct timeval ru_utime : 사용자가 사용한 시간
    struct timeval ru_stime : 사용된 시스템 시간
    long   ru_maxrss        : 최대 상주 세트 크기 
    long   ru_ixrss         : 통합 공유 메모리 크기 
    long   ru_idrss         : 비공유 데이터의 정수 크기 
    long   ru_isrss         : 통합 비공유 스택 크기 
    long   ru_minflt        : 페이지 회수 
    long   ru_majflt        : 페이지 폴트 
    long   ru_nswap         : 스왑 
    long   ru_inblock       : 입력 기능 차단 
    long   ru_oublock       : 출력 기능 차단 
    long   ru_msgsnd        : 보낸 메시지 
    long   ru_msgrcv        : 받은 메시지 
    long   ru_nsignals      : 수신된 신호 
    long   ru_nvcsw         : 자발적인 컨텍스트 전환 
    long   ru_nivcsw        : 비자발적 컨텍스트 전환

     

    2) 반환값

      성공시 0, 실패하면 -1 (이외 여러 오류가 발생할 수 있으며, 일반적으로 EFAULT(errno 코드)가 발생.

     

    아쉽게도 샘플이 기존 게시물에 포함되어있지 않았다. 필자의 기억으로는 프로세스 메모리 사용량을 확인한 경험이 있다고 기억이 됨에 따라 크게 무리 없이 사용하였던것으로 기억한다. 이러한 함수도 있다 정도만 기억하고 있다가 필요시 찾아서 활용하는 정도로만 기록해둔다.

     

    도움이 되었길 바란다.

     

    반응형
    • 네이버 블러그 공유하기
    • 네이버 밴드에 공유하기
    • 페이스북 공유하기
    • 카카오스토리 공유하기