이름
sysinfo - 전체적인 시스템 통계 정보를 반환한다.
사용법
#include <sys/sysinfo.h>
int sysinfo(struct sysinfo *info);
설명
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 bytes로 채운다(pad)*/
};
sysinfo는 전체적인 시스템 통계 정보를 가져올 수 있는 간단한 방법을 제공한다. 또한 /dev/kmem를 읽는것보다 훨씬 호환성이 좋다. 사용 예를 볼려면, intro(2)를
참조해라.
반환값
성공시, 0을 반환한다. 에러시, -1을 반환하며, errno는 적당한 값으로 설정된다.
에러
EFAULT struct sysinfo가 가리키는 포인터가 유효하지 않다.
호환
이 함수는 리눅스에 의존적이므로 호환성을 염두에 둔 프로그램에서 사용해서는 안된다.
리눅스 커널은 0.98.pl6 이후에 sysinfo시스템 콜을 가지고 있다. 리눅스 libc는 5.3.5 이후에 sysinfo() 루틴을 포함하였으며 glibc에서는 1.9 이후에 포함하였다.
* SMS(System Management System)와 유사한 시스템을 구현하려 한다면,
각 시스템별로 상이한 인터페이스를 사용하지 마시고, DMTF(www.dmtf.org)의
표준 스펙을 사용하시길 권고합니다.
- WBEM 스펙사용
- WBEM 구현(공개/상용)
- 참고
SNIA CIMON(SNIA) ,Pegasus(The Open Group), WMI(MS), OpenWBEM(Caldera International), WBEM Services(Sun)등
redbook 중 AIX 5L performance Tools Handbook의
14장 APIs for performance monitoring
을 참고하시면 됩니다.
4.3.3에는 추가 fileset을 설치해야 하며 5.1부터는 default로 perfstat관련 API가 설치됩니다.
OS를 적어주셔야 답이 나올 것 같습니다.대부분 아시는 것과 같이
OS를 적어주셔야 답이 나올 것 같습니다.
대부분 아시는 것과 같이 top, ps, df의 소스를 보시면 됩니다.
----------------------------------------
http://moim.at
http://mkhq.co.kr
음.. 모든 OS 에 적용할만 표준 함수가 없나 보군요.솔라리스하
음.. 모든 OS 에 적용할만 표준 함수가 없나 보군요.
솔라리스하고 linux 에서 알고 싶습니다.
ps 같은 프로그램 소스를 분석하는게 좋은 자세라고 생각하는데, 개발 일정이 짧게 잡혀서 이렇게 질문 드립니다.
linux의 경우 함수가 존재하기보다는/proc 아래 파일들을 읽으면
linux의 경우 함수가 존재하기보다는
/proc 아래 파일들을 읽으면 됩니다.
Written By the Black Knight of Destruction
[code:1]이름 sysinfo - 전체적인 시스템
가 있습니다 :D
---------------------------------------
blog : http://myohan.egloos.com
제가 알고 있는 방법은 다음과 같습니다. 당연히 표준적이고 더 쉬운 방법
제가 알고 있는 방법은 다음과 같습니다. 당연히 표준적이고 더 쉬운 방법이 있을 수도 있습니다.
>> linux
* cpu : /proc/stat 를 읽어 cpu~ 부분을 사용
* disk : setmntent(), getmntent(), statfs(), endmntent() 사용
* memory : /proc/meminfo 를 읽어 Mem:~ 부분을 사용
* process : /proc/숫자(pid) 읽기
>> solaris
* cpu : kstat_open(), kstat_chain_update(), kstat_lookup(), kstat_read(), kstat_data_lookup(), kstat_close() 을 이용해서
* disk : "/etc/mnttab"과 getmntent(), statvfs() 사용
* memory : sysconf(), swapctl() 사용
* process : /proc/pid 읽기
----------------------------------------
http://moim.at
http://mkhq.co.kr
* HPUX$ man 하나씩또는 대충.. pstat_ge
* HPUX
$ man 하나씩또는 대충..
pstat_getcrashdev(), pstat_getcrashinfo(), pstat_getdisk(),
pstat_getdynamic(), pstat_getfile(), pstat_getfile2(),
pstat_getfiledetails(), pstat_getipc(), pstat_getlv(), pstat_getlwp(),
pstat_getmpathname(), pstat_getmsg(), pstat_getnode(),
pstat_getpathname(), pstat_getproc(), pstat_getprocessor(),
pstat_getprocvm(), pstat_getsem(), pstat_getshm(), pstat_getsocket(),
pstat_getstable(), pstat_getstatic(), pstat_getstream(),
pstat_getswap(), pstat_getvminfo(), pstat() - get system information
* SMS(System Management System)와 유사한 시스템
* SMS(System Management System)와 유사한 시스템을 구현하려 한다면,
각 시스템별로 상이한 인터페이스를 사용하지 마시고, DMTF(www.dmtf.org)의
표준 스펙을 사용하시길 권고합니다.
- WBEM 스펙사용
- WBEM 구현(공개/상용)
- 참고
SNIA CIMON(SNIA) ,Pegasus(The Open Group), WMI(MS), OpenWBEM(Caldera International), WBEM Services(Sun)등
* 최근 릴리즈된 운영체제들은 대체로 이를 내장하고 있는것으로 알고 있습니다.
OS별로 다르게 구현하신다면..
AIX 인 경우 perfstat API를 이용하시면 됩니다.
redbook 중 AIX 5L performance Tools Handbook의
14장 APIs for performance monitoring
을 참고하시면 됩니다.
4.3.3에는 추가 fileset을 설치해야 하며 5.1부터는 default로 perfstat관련 API가 설치됩니다.
댓글 달기