[ 리눅스 ] cpu 정보 정확하게 확인하자!

2012. 1. 18. 17:07

1. 리눅스에서 하드웨어 cpu 갯수를 확인 하다 보면 어떤게 물리적으로 cpu가 몇 개 꽂혀 있는지 잘 모르겠습니다.
    cpuinfo에 대해 알아봐야 할 것 같습니다.

2. 기본 명령어

# cat /proc/cpuinfo

3. 제가 보고 있는 서버는 Quad Core 2.4GHz 1개 짜리 서버입니다.
   그런데 cpuinfo에는 다음과 같이 나옵니다.


processor       : 7
vendor_id       : GenuineIntel
cpu family      : 6
model           : 44
model name      : Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz
stepping        : 2
cpu MHz         : 2400.212
cache size      : 12288 KB
physical id     : 1
siblings        : 8
core id         : 10
cpu cores       : 4
apicid          : 53
fdiv_bug        : no
hlt_bug         : no
f00f_bug        : no
coma_bug        : no
fpu             : yes
fpu_exception   : yes
cpuid level     : 11
wp              : yes

위와 같은 내용이 8번 나옵니다. processor 0~7까지.
어떻게 된 것일까요?? 자세히 알아보겠습니다.

4. physical id 는 물리적인 cpu 당 1개씩 할당 됩니다.

# cat /proc/cpuinfo | grep "physical id"
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1
physical id     : 1

: id 값이 1종류 라는 것은 cpu 갯수는 1개라는 결론입니다.
  정리해 보면 실제 물리적 cpu 갯수는 다음 명령으로 정확하게 나오겠습니다.

# cat /proc/cpuinfo | grep "physical id" |  uniq –dc | wc –l

: 중복을 제거하고 카운팅 했으니 이 값이 물리적 CPU 갯수가 되겠죠.

5. 다음으로 “cpu cores : 4” 물리적 CPU 1개당 코어수 입니다.

6. 근데 왜 cpuinfo 에서는 총 8개에 processor 로 나오는 것일까요??

7. “siblings : 8” 에 그 해답이 있습니다.
    core 수가 4개 인데 siblings가 8개 라는 건 HT ( HyperThread )가 되어 있는 것입니다.
    만일, HT 가 아니라면 siblings은 4가 나왔을 것이고 processor 는 4개가 나왔겠죠.

8. 항상 궁금 하면서도 모르고 지나갔던 부분이었는데 속이 시원하네요. ^^

,