CPU 활용에 관해...

xylophon의 이미지

안녕하세요. 몇일째 요 문제때문에 고민하다가 용기를 내어(?) 글을 써봅니다.
지금 연구실에서, 'XMD'라는, 공학용 시뮬레이션용 프로그램을 돌리고 있는데요..
제가 프로그래밍에 대해 잘은 몰라서 확실하게 알지는 못하지만
시뮬레이션 프로그램은 pthread library를 사용하는 smp지원버젼으로
컴파일했습니다. (makefile을 SMP용과 보통용 두개를 제공하더군요)
사용중인 시스템은 xeon dual에 Fedora core1(smp)를 깔아서 사용중이구요. 커널은 2.4대를 사용중입니다.

문제는 그 프로그램을 사용하면서 top으로 cpu 사용량을 보니까
cpu0,1,2,3 골고루 부하가 걸리는게 아니라 순간순간 cpu마다 부하량이
다르더군요.

19:42:30 up 54 min, 4 users, load average: 1.04, 1.02, 0.77
83 processes: 79 sleeping, 3 running, 1 zombie, 0 stopped
CPU states: cpu user nice system irq softirq iowait idle
total 104.0% 0.0% 3.2% 0.0% 0.0% 0.0% 292.0%
cpu00 0.3% 0.0% 1.3% 0.0% 0.0% 0.0% 98.2%
cpu01 69.5% 0.0% 0.1% 0.0% 0.0% 0.0% 30.2%
cpu02 2.9% 0.0% 1.3% 0.0% 0.0% 0.0% 95.6%
cpu03 31.2% 0.0% 0.5% 0.0% 0.0% 0.0% 68.1%
Mem: 2067940k av, 526160k used, 1541780k free, 0k shrd, 27388k buff
133064k active, 352648k inactive
Swap: 1052248k av, 0k used, 1052248k free 245632k cached

이런식으로 말입니다. 근데 이놈이 조금 있다가는 cpu03에 90% 걸리다가... 조금 있따가는 cpu00에 90% 걸리는 식으로 계속 변하내요. 그리고 시스템 감시기에서 프로세서 사용량을 보면 계속 25% 선에서 맴돌구요.

smp를 사용 안할때 30분정도 걸린 계산작업이 smp를 사용해도 시간에는 변화가 없습니다. 그냥 상식적으로 생각해보면.. cpu 2개(하이퍼스레딩으로 4개)에 골고루 부하가 걸리면서 시간이 짧아져야 된다고 생각되는데요.. 도대체 이유를 모르겠네요.

그리고 /proc/interrupts는

CPU0 CPU1 CPU2 CPU3
0: 80408 78079 92315 92094 IO-APIC-edge timer
1: 16 768 1319 2140 IO-APIC-edge keyboard
2: 0 0 0 0 XT-PIC cascade
8: 1 0 0 0 IO-APIC-edge rtc
12: 1015 6933 24831 60892 IO-APIC-edge PS/2 Mouse
14: 4653 6075 2571 8873 IO-APIC-edge ide0
15: 62 27480 34440 5353 IO-APIC-edge ide1
16: 0 0 0 0 IO-APIC-level usb-uhci
19: 0 0 0 0 IO-APIC-level usb-uhci
20: 272362 0 0 0 IO-APIC-level eth0
NMI: 0 0 0 0
LOC: 342755 342754 342754 342753
ERR: 0
MIS: 0

이렇게 나오네요.
일단 제가 보기엔 아래 다른분들이 호소하신것처럼 한쪽CPU에만 몰리는것 같진 않은데 왜 실행시에는 각 CPU를 번갈아가면서 사용률을 점유하는지 도통 모르겠습니다.

부디 조언 부탁드립니다~

bloodntear의 이미지

제 생각에는 cpu의 irq 밸런스가 안 맞는것 같습니다.

레드햇 어드밴스 서버의 kernel-utils 라는 패키지 안에

irqbalance라는 데몬이 포함 되어 있는데,

핫샷? 이라는 아주 좋은 기능도 있답니다.

그것을 한번 이용하여 보시는것도 좋으실것 같습니다.

패키지는 ftp.redhat.com 에서 구해 보십시오,

라이센스는 GPL 입니다.

음..., 커널도 레드햇 어드밴스 배포판 커널을 써야 되는지는 모르겠네요.

roll

비명은 지르지마라 , 달콤한 고통을 음미 못할수 있으니 ... 흐흐흐

bloodntear의 이미지

또는 메인보드 바이오스에서 하이퍼 쓰레딩 기능을 죽여 보십시오~

추상적인 답변만 계속...,

비명은 지르지마라 , 달콤한 고통을 음미 못할수 있으니 ... 흐흐흐

xylophon의 이미지

답글 감사합니다.^^ 그런데 초보이다 보니 질문이 꼬리에 꼬리를 다네요.^^
일단, core1 설치후에 커널을 2.6.1로 올려줬습니다. 그런데 irqbalance가 적용이 가능한지 궁금합니다. 그리고... 솔직히 고백하자면 irqbalance 사용하는법도 잘 모르겠네요. 말씀하신 '핫샷'이란건 더더욱...ㅠ.ㅠ 예전글들을 주욱 훑어보니 user space에서 실행시키라는 멘트를 본적이 있는데.. 조금 더 자세히 설명해 주실 수 없을까요?

아.. 그리고 말씀하신 HT는 바이오스에서 죽여봤는데... 속도에는 아무런 변화가 없었습니다. 예전과 마찬가지로 CPU 두개가 번갈아가며 100% 가까이 점유율이 걸리네요. (결국 50%만 사용하는것으로 나옵니다)
smp버젼이 아닌 커널에서는 (cpu 하나만 인식할때) 계속 100%에 가까운 점유율을 가지는 프로그램이거든요.

도움말 부탁드릴께요. 그럼 좋은하루 되시길!

drops02의 이미지

바이오스에서 cpu사용률을 50%가량으로 설정한게 아닐까요?
오버클라커들은 이 사용률을 100%로 해두고 오버클럭을 시도하는데..
실지로 해본 결과가아니라 저도 추정이라 생각하는데..

X%이상 사용률이 올라가면 발열같은 문제로 시스템을 좀 쉬게 해주는
설정인것 같아 보이던데(실제론 자세하게는 모르겟으나.. ) cpu사용률에
관한것 이라고만 알고 있습니다.

한 프로그램(쓰래드?)당 cpu의 몇%까지 사용하게 할것인가.. 하는..

이것을 100%까지는 안되고 82%까지 인가 사용가능하게 되있는것
같더만은..(동기화도 되는것 같고.. 죄송합니다. 확신을 가지고 이야기
하는게 아니라.. )

위와같이 설정하신후 한번 해보심이 HT도 켜놓아도 관계없을듯 하네요
HT라는게 그냥 부하 분산 쯤 아닌가요?(글을 보시면 아시겟지만 전공자도
아니고 그냥 추론으로 대강 이런것인가부다 하는 구경꾼유저인거죠 :) )

해결방안을 찾길 바라겠습니다. 저도 궁금하던 것이지만 xeon 유저도 아닌
지라..

- 나처럼

머리는 느려지고 늘어가는건 담배 꽁초 수..

Necromancer의 이미지

바이오스에서 cpu 사용률을 정한다는 말은 금시초문이네요.

제가 알기로는 cpu 보호기능은 온도를 기준으로 작동하는 걸로 알고 있습니다.
이경우 cpu 의 실제 처리속도가 느려지기 때문에 점유율에는 변화가 없거나 더
올라갑니다.

오버클러커들은 이 cpu 보호기능을 켜논다음 fsb를 올리거나 배수를 바꾸는
방법을 쓰는걸로 압니다. (그나마 배수 푸는 방법의 경우 요즘 나오는 cpu에는 다
막혀있어서 요즘에는 agp/pci 클럭을 고정시킨다음 fsb를 올리는 방법으로 오버를
시돠하죠)

Written By the Black Knight of Destruction

bloodntear의 이미지

irqbalance 는 smp 시스템에서 다중 cpu 간의 인터럽터 현상을 매 10초마다 체크하여 리밸런스 하는 데몬입니다.

설치 방법은 kernel-utils-2.4-6.1.ELXXXX.rpm 을 설치 하시면 되고요.

설치후 #chkconfig --level 345 irqbalance on

라는 명령어로 서비스에 올리시면 되십니다. (X 일 경우는 serviceconf를 사용 하셔도..)

환경 설정 파일은 /etc/sysconfig/irqbalance 이며

단 한가지의 옵션이 있습니다.

위에서는 hotshot 이라고 했는데 오타 였고요. oneshot 입니다.

ONESHOT=yes
after starting, wait for a minute, then look at the interrupt
load and balance it once; after balancing exit and do not change
it again.

어떻습니까. 도움이 되시겠나요?

위 커널 유틸스 패키지는 레드햇 엔터프라이즈 어드밴스 서버 2.1, 3 에서

구하실수 있습니다. (배포판 커널 유틸스에는 irq 밸런스만 빠져 있는걸로 알고 있습니다.)

라이센스는 GPL 이지만 레드햇 FTP 에서는 아마 SRPM 만 구하실수 있을겁니다.

이걸을 패키징 하셔서 쓰시면 되실겁니다.

레드햇 FTP 에서 못 구하셨다면,

whiteboxlinux.org 에서 SRPM iso 를 받아 ..., 구해 보십시오.

whiteboxlinux는 RHEL 클론 입니다. (좀더 자세한 내용은 여기 게시판에서
검색을...,)

수고 하십시오~

비명은 지르지마라 , 달콤한 고통을 음미 못할수 있으니 ... 흐흐흐

bloodntear의 이미지

혹시 이 글을 참조 하시는 분들을 위해 한가지 수정 합니다.

Irqbalance 데몬이 RedHat 9.0 커널 유틸스에도 포함이 되어있네요,

근데 제가 DSP 만 있어, 일반 ftp에서 다운 받아 설치하는 iso 파일에는
포함이 되어 있는지 모르겠습니다.

수고 하세요~

DSP--> 벤더 서버를 구입하면 따라오는..., (DELL, hp, IBM ,sgi)

비명은 지르지마라 , 달콤한 고통을 음미 못할수 있으니 ... 흐흐흐

댓글 달기

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