Linux, Unix의 CPU 사용률에 대해..

holecjh의 이미지

Linux에서 top 명령어를 치면 아래처럼 나옵니다.

top - 13:37:51 up 3 days, 17:14,  3 users,  load average: 0.07, 0.10, 0.09
Tasks:  81 total,   1 running,  80 sleeping,   0 stopped,   0 zombie
Cpu(s):  7.5%us,  0.4%sy,  0.0%ni, 92.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1914436k total,  1829000k used,    85436k free,   159936k buffers
Swap:  1015804k total,      768k used,  1015036k free,   932484k cached
 
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    1 root      20   0 19232 1424 1224 S  0.0  0.1   0:01.08 init
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.02 kthreadd
    3 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0

여기서 각 프로세스의 CPU 사용률이 나오는데 이 수치의 정확한 의미가 뭔가요? (CPU% 부분)

그리고, 만약 전체 CPU 사용률이 10% 면 그 10% 중 특정 프로세스가 점유하는 %를 나타내려면 어찌해야 하는지..

예를들어 윈도우 tasklist의 경우 전체 cpu 사용률이 각 프로세스의 cpu 사용율을 더하면 100%가 되는걸로 알고 있는데..(작업관리자에서도 그렇게 보이구..)

Linux, Unix는 정확한 의미를 모르겠습니다.

도와주세요.

익명_사용자의 이미지

man top 해보시면 다음의 설명이 나옵니다.

Quote:

1. %CPU -- CPU Usage
The task's share of the elapsed CPU time since the last screen update, expressed as a percentage of total CPU time.
In a true SMP environment, if a process is multi-threaded and top is not operating in Threads mode, amounts greater than
100% may be reported. You toggle Threads mode with the `H' interactive command.
Also for multi-processor environments, if Irix mode is Off, top will operate in Solaris mode where a task's cpu usage will
be divided by the total number of CPUs. You toggle Irix/Solaris modes with the `I' interactive command.

top을 실행시키면 매3초마다 자동으로 화면을 갱신합니다. 또는 space를 누르면 바로 갱신하죠.
%CPU는 가장 마지막으로 갱신한 순간 부터, 현재 갱신한 순간까지의 시간동안 각 프로세스에게 소모된 CPU시간을 %로 나타내어 보여줍니다.

가령, 최근 3초동안,
init이 CPU를 2초 썼고,
kthreadd가 CPU를 1초 썼으면

init의 %CPU는 66.6%일것이고,
kthreadd의 %CPU는 33.3%이겠죠.

그런데, 위에 나와있듯이
어느 프로그램이 multi threading으로 다수의 쓰레드를 돌리고 있으며, 여러개의 CPU core가 돌아가고 있는 true SMP환경에서 top프로그램이 thread모드로 돌아가고 있는게 아니라면
합이 100%를 넘을수 있습니다.

예를들어,

program A가 3개의 쓰레드를 돌리고 있고, 최근 3초동안 3개의 다른CPU core가 각각의 쓰레드를 개별적으로 돌렸다면,
top은 최근 3초동안, program A가 CPU를 9초동안 사용한것으로 인식합니다.
따라서, %CPU는 300%가 되겠죠.

대문자 H를 누르면, 프로세스별 CPU%가 아니라, 쓰레드별 CPU%를 보여주므로 한개의 쓰레드가 CPU를 100%이상 쓰는 순간은 나타나지 않습니다.

익명 사용자의 이미지

그럼 말씀하신 3쓰레드의 프로세스의 CPU 사용률이 최고 300% 까지 간다면 CPU코어수 랑은 관련이 없는 건가요..?

현재 1코어짜리에서 top에서 H를 누르고 보고 있으면 각 쓰레드(현재 5개)에서 99% 인데 H를 off하고 보면 하나가 99%로 나와서요..

이게 만약 4코어 짜리에서는 400%로 보이나요..?

400%로 나오면.. 코어수로 나누어서 보는게 맞는 건지..

제가 이해를 못한 것 같아 죄송합니다. ㅠㅠ

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.