NAME

sysinfo - 시스템 정보 반환

SYNOPSIS

#include <sys/sysinfo.h>

int sysinfo(struct sysinfo *info);

DESCRIPTION

sysinfo()는 메모리 및 스왑 사용, 그리고 평균 부하에 대한 몇 가지 통계를 반환한다.

리눅스 2.3.16까지는 sysinfo()가 다음 구조체로 정보를 반환했다.

struct sysinfo {
    long uptime;             /* 부팅 후 지난 초 */
    unsigned long loads[3];  /* 1분, 5분, 15분 평균 부하 */
    unsigned long totalram;  /* 사용 가능한 주 메모리 총크기 */
    unsigned long freeram;   /* 사용 가능한 메모리 크기 */
    unsigned long sharedram; /* 공유 메모리 양 */
    unsigned long bufferram; /* 버퍼에서 쓰는 메모리 */
    unsigned long totalswap; /* 스왑 공간 총크기 */
    unsigned long freeswap;  /* 아직 사용 가능한 스왑 공간 */
    unsigned short procs;    /* 현재 프로세스 개수 */
    char _f[22];             /* 구조체를 64비트로 채우기 */
};

위 구조체에서 메모리 및 스왑 필드의 크기는 바이트 단위이다.

리눅스 2.3.23(i386) 및 2.3.48(모든 아키텍처)부터는 다음 구조체이다.

struct sysinfo {
    long uptime;             /* 부팅 후 지난 초 */
    unsigned long loads[3];  /* 1분, 5분, 15분 평균 부하 */
    unsigned long totalram;  /* 사용 가능한 주 메모리 총크기 */
    unsigned long freeram;   /* 사용 가능한 메모리 크기 */
    unsigned long sharedram; /* 공유 메모리 양 */
    unsigned long bufferram; /* 버퍼에서 쓰는 메모리 */
    unsigned long totalswap; /* 스왑 공간 총크기 */
    unsigned long freeswap;  /* 아직 사용 가능한 스왑 공간 */
    unsigned short procs;    /* 현재 프로세스 개수 */
    unsigned long totalhigh; /* 상위 메모리 총크기 */
    unsigned long freehigh;  /* 사용 가능한 상위 메모리 크기 */
    unsigned int mem_unit;   /* 메모리 단위 크기의 바이트 수 */
    char _f[20-2*sizeof(long)-sizeof(int)];
                             /* 구조체를 64비트로 채우기 */
};

위 구조체에서 메모리 및 스왑 필드의 크기는 mem_unit 바이트가 단위이다.

RETURN VALUE

성공 시 sysinfo()는 0을 반환한다. 오류 시 -1을 반환하며 오류를 나타내도록 errno를 설정한다.

ERRORS

EFAULT
info가 유효한 주소가 아니다.

VERSIONS

리눅스 0.98.pl6에서 sysinfo()가 처음 등장했다.

CONFORMING TO

이 함수는 리눅스 전용이므로 이식성이 있어야 하는 프로그램에서는 사용하지 말아야 한다.

NOTES

이 시스템 호출에서 제공하는 정보 모두를 /proc/meminfo/proc/loadavg를 통해서도 얻을 수 있다.

SEE ALSO

proc(5)


2021-03-22