Cyrix, AMD 등의 인텔외의 CPU에서 SMP 를 사용할수 있나요?
짧은 대답: 아니요.
긴 대답: 인텔은 APIC SMP안 에 대한 소유권을 주장 하고 있습니다. 그리고 위 회사들이 그 안을 사용하고 있지 않고 있습니다. (이것은 미래에 바뀔수 있겠지요). 사이릭스와 AMD는 소유권이 보호되지 않는 OpenPIC를 지원합니다만, 현재까지 그것을 사용하는 마더보드가 존재하지 않습니다.
왜 오래된 내 Compaq 에서 작동하지 않나요?
MP1.1/1.4 호환 모드로 맞추어 놓으세요.
"Configure Hardware" -> "View / Edit details" -> "Advanced mode" (F7 일 겁니다.) "APIC mode" 설정에서 "full Table mode"로 합니다. 이것은 컴팩의 공식적인 권장사항 입니다.(Daniel Roesen)
(Adrian Portelli)은 다음과 같이 했습니다 :
서버 부팅시 F10을 누르면 시스템 설정으로 들어갑니다.
엔터를 누르고 스플레쉬 화면을 지나갑니다.
재빨리 CTRL+A 를 누릅니다.
"Advanced Mode" 설정 메세지가 나타날 것입니다.
"Configure Hardware" -> "View / Edit details" 를 선택하고,
설정 화면이 나타나면
"APIC Mode" 까지 스크롤 한다음 "Fully Mapped"를 선택합니다.
저장하고 리부팅합니다.
왜 ALR에서 작동하지 않나요?
Robert Hyatt로부터: ALR Revolution quad-6 는 매우 안전해 보인다. 몇몇 오래된 revolution quad (P6 프로세서가 없는)는 불확실...
왜 SMP 가 느리죠? 또는 왜 한개의 CPU가 다른 CPU에 비해 매우 낮은 보고밉스 값을 나타내지요?
Alan Cox 로 부터: 만약 프로세서들 중 하나의 보고밉스 값이 매우 낮다면, 캐쉬가 작동하지 않는것 입니다. 당신의 마더보드는 아마도 버그가 있는 BIOS를 사용하고 있을것입니다. 패치(BIOS 업그레이드?)를 하던지 돌려보내든지, 새로 사던지 하세요.
2.0 커널 (> 2.0.36) 에서 MTRR 패치는 이 문제를 해결해 줄것입니다. (커널 설정에서 "Handle buggy SMP BIOSes with bad MTRR setup" 를 선택하세요).
마지막 버젼의 2.2 대 커널들은 버그가 있는 SMP BIOS 문제를 알아서 처리할것 이라고 생각합니다.
IBM 머쉰에서 문제들이 있다고 들었습니다.
몇몇 IBM 의 EBDA 에서 MP1.4 bios 블럭을 가집니다. 이것은 허락되지만 2.2 커널 이하에서는 지원되지 않습니다.
오래된 486SLC IBM SMP 박스에서 Linux/SMP 는 하드웨어 FPU 가 필요합니다.
인텔 MP 1.4가 1.1 규정에 비해 이점이 있나요?
아뇨 (Alan 에 의하면 :) ), 1.4 는 stricker specs of 1.1 일 뿐이다.
SMP 에서 왜 시계가 그렇게 빨리 가지요?
2.0 대의 커널에서 알려진 문제이다, 2.2 대의 커널로 업그레이드를 고려해라.
Jakob Oestergaard 로 부터: 또는, xntpd의 실행을 고려하세요. 이것은 당신의 시간을 정확하게 맞춰 줄겁니다. (커널에서의 RTC 지원도 이 현상을 막아준다라고 저는 생각합니다. 저의 경우 이것은 해당되었구요. 그러나 확실하지 않으므로 이것은 그저 행운일지도 모르지요.)
이것을 예방할 수정이 2.2.x 대의 커널에 있었습니다.
왜 내 프로세서들의 번호가 0 과 1이 아닌 0 과 2 로 되지요?
CPU 번호는 마더보드 제조업체들에 의해 할당되는 것이며, 이것은 아무 의미도 가지지 않습니다. 무시하세요.
내 quad-Xeon 시스템이 부팅시 정지됩니다.
(Doug Ledford) LILO 를 LARGE_EBDA 지원하게 재컴파일 하십시요. 그리고 커널 빌드시 항상 make bzImage 로 하십시요. 이것은 인텔 다중 지온 보드의 SMP 부팅시 정지 를 막아줍니다. 그러나 이것은 LILO 에서 root= 옵션이 더이상 작동 하지 않습니다. 그러므로 확실히 rdev 로 당신의 커널이 정확한 루트 파티션을 사용하도록 해야 합니다.
(Robert M. Hyatt) 3개의 CPU를 사용한다면, 네번째 소켓에 터미네이터가 있나요?
부팅시 IOAPIC 시그날과 함께 정지 됩니다.
부팅 옵션에 "noapic" 를 넣거나(John Aldrich) 그리고(또는) "reboot=bios" 를 사용합니다. (Terry Shull).
내 시스템이 NFS에 많은 부하가 걸렸을때 정지 됩니다.
커널 버젼 2.2.x 이상과 knfsd 패치를 사용 해보십시요. 이것은 현재 조사중입니다. (Wade Hampton)
내 시스템이 oops 메시지없이 정지 됩니다.
만약 당신이 커널 2.2.11 또는 2.2.12를 사용하고 있다면 마지막 버젼의 커널을 사용하십시요. 2.2.13에서 몇가지 SMP 관련 패치가 있었습니다. 몇몇 사람들에게서 이 버젼(2.2.11 과 2.2.12)가 SMP 모드에서 안정적이지 않다는 보고가 있었습니다 (NFS 문제들도). 시리얼 콘솔을 사용해 커널의 oops 메세지를 캡춰해 볼수 있습니다. (Wade Hampton)
계속 문제가 있다면(그리고, 다른 사항들 조차 도움이 되지 않았다면), 당신은 2.3 대의 커널을 시도해 볼수 있습니다. 이 버젼의 커널들은 더 많고, 강력한 SMP/APIC 코드를 가지고 있습니다. 그리고 automatic hard-lockup-prevention code 는 그저 조용히 멎어 (시스템이) 버리는 것이 아니라 쓸모있는 oopses 메세지를 남길것입니다. (Ingo Molnar)
(Osamu Aoki) 가 : 당신은 또란 BIOS 와 관련된 모든 전력 절약 모드를 불가능하게 하게 해야합니다. 다음은 올바른 설정의 예입니다. (듀알 Celeron 466 / Abit BP6):
POWER MANAGEMENT SETUP. ACPI: Disabled POWER MANAGEMENT: Disabled PM CONTROL by APM: No |
시스템 정지 디버깅
이절은 Wade Hampton에 의해 씌여졌음.
시스템 정지 디버깅의 좋은 수단은 Andrea Arcangeli에 의한 ikd 패치를 사용하는 것입니다. ftp://ftp.suse.com/pub/people/andrea/kernel-patches
몇개의 디버깅 옵션이 있는데, soft lockup 옵션은 사용하지 마세요. 새로운 SMP 머쉰들은 NMI oopser상에서 커널 디버깅 옵션을 사용합니다. NMI oopser 의 작동 확인은 /cat /proc/interrupts 의 결과에 NMI 가 있는지 보면 됩니다. 이제 시스템이 정지되면 당신은 oops 메세지를 얻을수 있을것입니다.
또한, %eip 옵션을 시험해 보아도 좋습니다. 이것은 커널이 커널 함수가 불려질때마다, 콘솔상으로 %eip 주소를 출력해 줍니다. 시스템이 정지될때, 다음 두번째 칼럼에 의한 첫번째 칼럼을 적어둔후, System.map 파일에서 그 주소를 찾아 봅니다. 이것은 콘솔모드에서만 할수 있습니다.
또한 시리얼 콘솔은 커널 정지를 디버깅하는데 대단히 편리합니다. (단지 SMP 커널만이 아닌.)
로그의 "APIC error interrupt on CPU#n, should never happen" 메시지
다음과 같은 메세지는
APIC error interrupt on CPU#0, should never happen. ... APIC ESR0: 00000002 ... APIC ESR1: 00000000 |
이번 장에서는 SMP 머쉰의 비정상적인 작동의 원인들을 찾을수 있을것이다. (Jakob �stergaard)
냉각
Ralf B�chle 로부터 : [이 경우 팬들의 크기에 관련이 있었다] 공기의 흐름이 중요합니다. 너무 작은 케이스는 문제를 일으킬수 있습니다. 반대로 쓸데없이 큰 케이스도 문제의 소지가 있습니다. 일반적인 타워케이스가 데스크탑들 보다 약간 냉각효율이 좋다고 봅니다. 요컨대, 좋은 케이스는 공기역학적으로 설계되어 있겠지요.
당연히 여러분은 전자상가에서 다른 팬을 추가할수 있습니다. 또한 여러분은 메인보드에 장착되어 있는 lm 센서로 CPU와 메인보드의 온도,전압등을 모니터링 할수 있습니다. (http://www.netroedge.com/~lm78) 이것은 과열문제를 도와줄수 있습니다. (Wade Hampton)
나쁜 메모리
싸구려 램을 사지 마세요. 그리고 다른 램 모듈들을 혼합해서 사용하지 마십시요.
특히 Tyan 마더보드들은 램 속도와 관련하여 문제가 있습니다. (다음장의 Tyan 마더보드들에 대한 해결책을 보세요.)
CPU가 8ns 램을 사용해야 하는 경우, 10ns의 PC100램을 사용한 마더보드들에서 버그 보고가 있었습니다. (Wade Hampton)
다른 스텝핑을 가진 프로세서들의 나쁜 조합
/proc/cpuinfo 을 확인해서 프로세서들이 같은 스테핑(stepping)을 가지고 있는지 확인해 봅니다.
만약 당신의 시스템이 불안정 하다면 오버클럭을 하지 마세요!
만약 안정적이라 하더라도, 오버클럭은 하지 않는게 좋습니다.
Ralf B�chle로부터 : 오버클럭킹은 미묘한 문제들을 일으킵니다. 좋은 예로, 나의 오버클럭한 오래된 기계들중에 640x400 의 프랙탈 픽셀들을 그려내는데 오류를 일으킵니다. 이 문제들은 도구를 사용하여 비교하면 나타납니다. 그러므로, 오버 클럭킹은 절대 (never, nuncas, jamais, niemals) 하지 마세요.
2.0.x 대의 커널과 fast ethernet (Robert G. Brown)
2.0.x 커널에서 놓은 성능의 빠른 이더넷 시스템이 중요한(그리고 알려진) 문제를 넥트웍 인터럽트 핸들에서 가지고 있습니다.
해결책은 마지막 개발 버젼의 100BT 드라이버를 다음에서 구하는 것입니다. CESDIS 리눅스 이더넷 드라이버 사이트 (SMPCHECK을 정의한).
440FX 칩셋에서의 버그 (Emil Briggs)
만약 당신의 시스템의 마더보드가 440FX 칩셋을 사용하며, 시스템이 정지되는 문제가 있다면 칩셋의 문서화된 정오표에 의한 것일수 있습니다.
참조 : 인텔 440FX PCIset 82441FX (PMC) 와 82442FX (DBX) 규격의 업데이트. pg. 13
http://www.intel.com/design/pcisets/specupdt/297654.htm
이 문제는 BIOS 이 업그레이드 (또는 커널 패치)로 해결할수 있습니다. 그리고 실제로 David Wragg 는 Richard Gooch 의 MTRR 패치를 포함하는 커널 패치를 썼습니다. 더 많은 정보는 다음을 참고:
리눅스 SMP로 부팅하기전에 emm386.exe를 실행시키지 마세요.
Mark Duguid 로 부터, 특히나 W6LI 마더보드에서는. ;)
만약 당신의 시스템이 리부팅후 멎어 버린다면, 두가지 원인이 있을수 있습니다. (BIOS 와 메모리와 관련된) (Jakob �stergaard)
만약 BIOS 의 설정중 "memory hole at 16M" 또는 "OS/2 memory > 64MB" 을 disable 로 하십시요, 리눅스는 이 옵션들에 반응하지 않습니다.
만약 당신이 64MB 이상의 메모리를 가지고 있다면, 그리고 당신이 lilo 설정에 수동으로 메모리양을 적어 주었다면, 그 설정을 실제의 메모리양에서 1MB 적게 적어 주세요. 예를 들어 128MB 를 가지고 있다면, append="mem=127M"
IRQ 와 관련된 문제들중 알아야 할것
몇몇 카드들이 인식되지 않거나, IRQ 충돌 현상이 있다면 카드들을 서로 다른 슬롯으로 옮겨 보거나, IRQ 를 바꿔봅니다.
hASCII 에 의해 : 리로 설정 파일에서 "append="hisax=9,2,3"" (ISDN +Hisax 지원을 위한) 을 지웁니다. (커널 2.1.xx). 2.0.xx 에서는 문제 없음.
BIOS 설정에서 "MP 1.4 mode" 또는 "route PCI interrupts through IOAPIC", 또는 "OS Type" 와 같은 설정들을 DOS 또는 Novell 로 설정하지 마세요. (Ingo Molnar).
플로피와 사운드 카드가 동시에 사용할때
만약 플로피를 사용하려 할때(예를 들어 사운드를 플레이 하면서) 시스템 정지가 일어 난다면, drivers/pci/quirks.c 파일을 다음과 같이 고칩니다. /int isa_dma_bridge_buggy = 1; 이 문제는 내 Dell WS400 dual PII/300, 2.2.x, SMP에서 일어 났습니다. (Wade Hampton).
주의할점: 몇몇 많은 특정 정보는 다음 사이트에서 찾을 수 있다. 리눅스 SMP를 동작시킬 수 있는 마더보드
(St�phane �colivet)
현재로 살만한 가장 저가의 SMP 리눅스 박스는 듀얼 셀러론 시스템이다. 그러한 시스템은 인텔에 따르면 공식적으로는 가능하지 않다고한다. 2세대 셀러론 (128kb L2 캐시)를 고려하는게 좋다.
인텔에서부터의 공식적인 대답: 가능하지 않습니다, 셀러론은 SMP 모드에서는 작동할 수 없습니다.
현실적인 대답: 가능하지만 슬롯 1 프로세서에 대해 하드웨어 변경을 요구합니다. 변형은 Tomohiro Kawada의 페이지 듀얼 셀러론 시스템 에서 확인할 수 있다. 물론, 이러한 종류의 변형은 제품에 대한 보증을 기대하지 말아야 한다. 몇몇 셀러론의 버젼들은 370 소켓 포맷에 적용이 가증하다. 그러한 경우에 변형은 슬롯 1 어댑터에 소겟 370 위에서 이루어 질 수도 있고 SMP 사용에 맞추어서 미리 만들어진채로 팔리기도 한다. (Andy Poling, Hans - Erik Skyttberg, James Beard)
두개의 셀러론을 소켓 370 포맷으로 집어넣는 마더보드(ABIT BP6)가 있습니다. (Martijn Kruithof, Ryan McCue). ABIT 컴퓨터 BP6는 테스트를 해봤으며 듀얼 ppga 소켓 370 을 이용 리눅스에 적용했다. (Andre Hedrick).
동작할 수 있습니다. 하지만 이러한 종류의 시스템을 오버클럭 한다는 것은 하나의 프로세서 시스템에서의 오버클럭만큼 쉽지 않습니다. 생산적인 시스템을 위해서는 그리 썩 좋은 생각은 아니다. 개인적인 사용을 위한 것이라면 듀얼 300A를 450Mhz 로 안정적으로 쓰고 있다는 보고가 있습니다.(많은 사람들이 보고 하고 있음)
불가능 합니다. 셀러론 프로세서들은 펜티엄 II와 거의 같은 특성을 갖고 있기 때문이다. 만일 여러분이 여러분의 시스템에 2개 이상의 프로세서를 원한다면 여러분은 펜티엄 프로나 펜티엄 제온, 펜티엄 III(?)를 고려해야 할 것이다.
재사용이 가능한 셀러론 프로세서와 펜티엄 프로세서를 같은 환경에서 사용한다면 이론적으로 가능하다.
Alexandre Charbey가 그런 시스템을 만든 적이 있음:
Asus P2B-D motherboard, proc 1: Celeron 366, proc 2: Pentium II 400@266
66Mhz and 75Mhz 버스 진동수
가장 빠른 프로세서(셀러론의 경우에서)는 두번째 슬롯에 위치해 있어야 한다. 가장 빠른 프로세서와의 교체는 엄청난 실패를 가져온다.