시스템 Resource 사용량을 측정하려면 어떻게 하면 되나요?

익명 사용자의 이미지

시스템 Status, 말하자면 top command를 사용했을때 나오는
CPU사용량, 메모리 사용량 등을 program에서 보려면 어떻게 하는지요?

익명 사용자의 이미지

http//kldp.org/script/bbs/read.php?table=qa2&no=292&o[sc]=c&o[ss]
=top&o[st]=a&o[at]=s&o[sct]=s&o[stt]=s

검색의 생활화~~~

익명 사용자의 이미지

넘 냉정하시네여 T_T;

죄송스럽지만 초보자가 질문좀 더 드릴께여.
sar나 vmstat에서 나오는 cpu idle time을 볼려면 어떻게 하는지요.

getrusage를 쓰면 얻는 ru_utime, ru_stime은 전체 system 기준이 아닌
현재 process기준 아닌가요?

익명 사용자의 이미지

/proc 의 파일들을 참조하면 원하시는 정보에 대한
값들을 매우 자세히 얻을수 있습니다.
man proc 하시면 /proc 파일시스템에 대한
상세 정보를 보실수 있습니다.

익명 사용자의 이미지

시스템의 resource를 정확화게 파악 할 수 있게 하는
lib 프로젝트가 따로 있습니다.

lib이름은 "libtop.a"입니다.
이 소스를 보시면 궁금하던것 이상의 것이 있습니다.
현재는 BSD, Linux, Sun등 소수의 unix를 지원하지만
앞으로 더욱 많이 지원하겠죠.

BSD port(free bsd)명도 libtop이었던걸로 기억합니다.

익명 사용자의 이미지

이글을 안보시겠지만... 다른 사람들을 위해서 써놓습니다.
제가 링크해놓은 자료는 본 게시판의 답변입니다.
제가 냉정하다고 하셨는데 그런 대답을 하기전에 링크의 내용을 보셨다면
그런 이야기가 나오지 않았을 겁니다.
옛말에 이런 이야기가 있죠?
말을 냇가까지는 몰아갈 수는 있지만 말이 물을 먹을지 안먹을지는 말자신
에게 달려다고요.
제가 링크를 건이유는 냉정해서가 아닙니다.
언제까지 님대신에 같은 게시물이 있는지 검색하고 링크를 달아줘야 할까요?
링크까지 달아주고 결과를 알려주었다면 고맙다는 소리는 못들어도
냉정하다는 소리는 하지 않으셔야합니다.
본문인 man 2 getrusage 이내용이 무언지를 몰라서 그러셨다면 이해가
갑니다만 그것도 아닌것 같군요.
모르는 것은 부끄러운 것이 아닙니다. 하지만 가르침에 반하는 것은 아주
부끄러운 일이죠.
본 사이트 운영자이신 권순선님이 하신 말이 있습니다.
말같이 않다면 개무시를 하라고...
만일 제 답변이 마음에 들지 않았다면 그냥 개무시를 하십시요.
감정상하게 답변글을 달지 마시고요.
(그렇다고 제가 답변을 일일이 읽어보는 것은 아닙니다만... ^^;)

jos77의 이미지

해당링크 눌러도 다른 답변 없이 이 글이 나오네요..? 원래 이런 건가요?
간혹가다가 게시판에 질문 올리면 링크 올리시는 분들 꽤 많은데 링크 눌렀을때 404 에러 나오면 무책임하다고 할 수 있다고 생각합니다... kldp 는 원래 그런지 몰라도 데브피아나 다른 사이트에선 그런 경우 안 겪었었는데... 아직 적응하기 힘드네요.

-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr

cppig1995의 이미지

2002년 글입니다. 그 이후로 KLDP BBS 기반이 두 번 바뀐 걸로 압니다.



한말글 프로그래밍 언어 "열정" http://me-lang.wo.tc

Real programmers /* don't */ comment their code.
If it was hard to write, it should be /* hard to */ read.

jos77의 이미지

윗분 질문이랑 같은 내용 질문하러 왔다가 답변을 확인해봤는데
cpu idle time 을 프로그램 실행 도중에 알아내려고 하는데 vmstat 에서 나오는 cpu - id 값 에 해당하는 게 없는 것 같네요

/proc/cpuinfo 엉뚱한 기본값들만 나오고 stat 은 뭐가 무슨 값인지 나오지도 않고... 지금 procps 소스까지 뒤지고 있는데 모르겠습니다. CHKw 이 함수는 설명된 곳이 아무데도 없고 (사용자 함수는 아닌 것 같은데)
잘 아시는 분 답변 좀 부탁드립니다.

-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr

jos77의 이미지

끙... 자문자답하네요

vmstat.c 소스 찾아보다가 getstat() 함수 보고 또 헷갈렸는데 사용자함수였군요. (이거땜시 버린 시간 엉엉엉)

해당내용은 /proc/stat 이 있고,

포맷은 cpu cpu유저 , cpuNIC , cpu시스템 , cpuIDLE , cpuIOwaittime , cpu_xxx , cpu_yyy , cpu_zzz 이고

vmstat 에 나오는 us , sy , id , wa , st 는 각각

us = cpu_use + cpu_nic
sy = cpu_sys + cpu_xxx + cpu_yyy
id = cpu_idl
wa = cpu_iow
st = cpu_zzz

의 us+sy+id_wa+st 의 백분율이군요.

cpu 1개에 대해선 알 수 있는데 듀얼코어등 멀티프로세서에 대해서는 알 수 없군요...

vmstat 비슷하게 새로 만들어야 되려나... 어쨌든 답변 찾는 분들 참고하시길.

-----
안녕하세요 소프트웨어 공학센터 장원석 책임입니다.
http://www.software.kr

bejoy4him의 이미지

저두 예전에 올렸던 질문인데...

저는 ps 소스를 이용해서 구했습니다.
그런데 그게 코어 1개에 대해서만 나왔던가? 기억이.... ㅡㅡ;;

ps는 procps 패키지에 포함되어 있습니다.
ps자체로는 파일이 많지 않아 그리 어렵지 않게 찾으실수 있으실 겁니다.

예전에 제가 올렸던 글은...
http://kldp.org/node/79350

그냥 참고만하세요...

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.