下一页 上一页 目录

4. x86 架构特定问题

4.1 为什么在我的机器上无法工作?

  1. 我可以在 SMP 中使用我的 Cyrix/AMD/非 Intel CPU 吗?

    可以。目前的 AMD Athlon MP 处理器支持使用 AMD 760MP 芯片组的 SMP。有几款主板采用了这款芯片组,例如 Tyan、ASUS 等。最新的 2.4.x 内核以及最新的 2.2.x 内核都支持 Athlon/SMP。(David Haring)

  2. 为什么我的旧 Compaq 电脑无法工作?

    将其置于 MP1.1/1.4 兼容模式。

    检查“配置硬件”->“查看/编辑详细信息”->“高级模式”(我认为是 F7)中的“APIC 模式”配置选项,并将其设置为“完整表模式”。这是 Compaq 官方建议。(Daniel Roesen)

    (Adrian Portelli)要执行此操作

    1. 在服务器启动时按 F10 进入系统配置实用程序
    2. 按 Enter 键关闭启动画面
    3. 立即按 CTRL+A
    4. 将出现一条消息,告知您现在处于“高级模式”
    5. 然后选择“配置硬件”->“查看/编辑详细信息”
    6. 然后您将看到高级设置(与普通设置混合在一起)
    7. 向下滚动到“APIC 模式”,然后选择“完全映射”
    8. 保存更改并重启

  3. 我无法让我的 Compaq SystemPro 在 SMP 模式下工作。

    (Maciej W. Rozycki) 您的 Compaq 很可能没有使用 82489DX APIC,因为它们推出得相当晚——在 1992 年末或 1993 年初。曾经有 i486 机器实现了 APIC 架构。82489DX 是用于它们的芯片,它包含一个本地 APIC 单元和一个 I/O APIC 单元。

  4. 为什么我的 ALR 无法工作?

    来自 Robert Hyatt:ALR Revolution quad-6 似乎很安全,而一些较旧的没有 P6 处理器的 revolution quad 机器似乎“不太可靠”……

  5. 为什么 SMP 运行如此缓慢? 或者 为什么一个 CPU 显示的 bogomips 值非常低,而第一个 CPU 正常?

    来自 Alan Cox:如果您的其中一个 CPU 报告的 bogomips 值非常低,则说明该 CPU 的缓存未启用。您的供应商可能提供了有缺陷的 BIOS。获取补丁来解决这个问题,或者最好将其退回并从有能力的供应商处购买主板。

    2.0 内核(> 2.0.36)包含 MTRR 补丁,应该可以解决这个问题(在“常规设置”菜单中选择选项“处理具有错误 MTRR 设置的错误 SMP BIOS”)。

    我认为在最新的 2.2 内核中,错误 SMP BIOS 处理是自动的。

  6. 我听说 IBM 机器有问题

    一些 IBM 机器在 EBDA 中有 MP1.4 bios 块,这在 2.2 内核以下是被允许但不被支持的。

    有一款旧的基于 486SLC 的 IBM SMP 机器。Linux/SMP 需要硬件 FPU 支持。

  7. Intel MP 1.4 规范比 1.1 规范有优势吗?

    没有(根据 Alan :)),1.4 只是 1.1 的更严格规范。

    请参阅 有用的指针,了解 MP 1.4 和 1.1 之间的比较。

  8. 当我运行 linux SMP 时,为什么时钟漂移如此迅速?

    这是 2.0 系列内核中 IRQ 处理和长内核锁的已知问题。考虑升级到更新的 2.2 内核。

    来自 Jakob Oestergaard:或者,考虑运行 xntpd。这应该使您的时钟保持准确。(我认为我听说在内核中启用 RTC 也可以修复时钟漂移。它对我有用!但我不确定这是否是普遍情况,还是我只是幸运)

    在较新的 2.2.x 系列中,有一些内核修复程序可能会解决这个问题。

  9. 为什么我的 CPU 编号为 0 和 2,而不是 0 和 1(或其他一些奇怪的编号)?

    CPU 编号由主板制造商分配,没有任何意义。忽略它。

  10. 我的四路 Xeon 系统在解压缩内核后立即挂起

    (Doug Ledford) 尝试使用 LARGE_EBDA 支持重新编译 LILO,然后确保在编译内核时始终使用 make bzImage。这似乎解决了 Intel 多路 Xeon 主板上的 SMP 启动挂起问题。但是,请注意,这似乎也会破坏 LILO,因为 root= 选项不再起作用,因此请确保在运行 lilo 的同时 rdev 您的内核映像,以确保内核在启动时加载正确的根文件系统。

    (Robert M. Hyatt) 对于 3 个 CPU,您在第 4 个插槽中安装了终结器吗?

  11. 启动期间机器挂起,并发出“unexpected IO-APIC”警告

    简短答案: 将您的 MP 设置从 1.4 更改为 1.1(BIOS 选项),并在启动提示符下使用“noapic”选项启动。

    详细答案: 此消息与您的性能问题或所有中断都转到一个 CPU 的原因无关。此消息是供 ACPI(IO-APIC) 维护人员在新硬件出现时关注的。(Earle Nietzel)

    总结官方内核文档中找到的文章

    1. “unexpected IO-APIC”只是表明您的主板不在白名单上。
    2. Cat 您的 /proc/interrupts,如果您看到任何带有 IO-APIC 的行,那么一切正常,因为 IO-APIC IRQ 已启用。

  12. 我是否需要同时将 MP 从 1.4 更改为 1.1 并在启动时使用 (noapic)?

    这取决于情况。

    我发现,如果我从 MP 1.4 降级到 1.1,则不需要关闭 IO-APIC。显然,一些基于 Xeon 的主板需要同时执行这两项操作,但 ASUS CUV4X 主板则不需要。不必要地关闭 IO-APIC 支持可能会给 ASUS 用户带来可能很小的性能损失。(Vladimir G. Ivanovic)

    如果选择了 MPS 1.1,一些 IBM Netfinity 机器在初始化板载 SCSI 控制器时会出现问题。将使用超时查询每个可能总线上每个可能设备的每个可能 LUB。启动需要无用的很长时间。(E. Robert Bogusta)

    有报告称,带有 ASUS4X-DLS 主板的系统在 MP 1.4 启用了 IO-APIC 的情况下运行良好。

    对于 CUV4X-D 主板,禁用 IDE 控制器后,您可能可以使用 MP 1.4 和启用 APIC 的方式启动。

  13. 运行“noapic”会造成性能损失吗?

    (David Mentre) 它有轻微的影响,除非您有高中断负载(即,几乎没有人)。

  14. 我的主板是带有 VIA 694XDP 芯片组的 ASUS-CUV4X-DLS。如果我使用 noapic 标志启动,机器启动正常,并且 /proc/cpuinfo 显示两个处理器。但是,/proc interrupts 不显示任何中断共享。

    您可能需要将 BIOS 版本升级到 1010。

  15. Xeon 与 Athlon 相比,有哪些优点和缺点?

    Xeon 的芯片组 (440GX) 和配套主板 (supermicro S2DGE) 我将要使用的可能比 Athlon 的芯片组(AMD 760/760MP)更可靠且在 Linux SMP 下得到更好的支持,仅仅是因为它们已经存在更长时间并且经历了更多的迭代。

    Xeon 的更大缓存(我正在考虑的双路 400 上为 1mb)可能会提高性能(并且考虑到我不只有一个科学代码计划在此系统上运行,专门为我的代码测试基准可能没有帮助)。

    Athlon 具有显著更快的时钟频率(以及 Thunderbirds 中的全速 L2 缓存,尽管只有 384kb)以及使用 PC2100 DDR 内存的更高内存带宽可能会有很大帮助。

    在 760MP 主板和 PC2100 内存发布之前,成本尚不清楚,但获得两个 1GHz 385km L2 Thunderbirds、双路主板和 512mb ECC PC2100 可能需要大约 950 美元,而获得两个 400MHz 1mb L2 Xeons、双路主板和 512mb ECC PC100 可能需要大约 750 美元。(Daniel Freedman)

  16. 我的系统在繁重的 NFS 流量期间锁定

    尝试使用更新的 2.2.x 内核和 knfsd 补丁。目前正在调查中。(Wade Hampton)

  17. 我的系统锁定,没有 oops 消息

    如果您使用的是内核 2.2.11 或 2.2.12,请获取最新的内核。例如,2.2.13 有许多 SMP 修复程序。一些人报告这些内核对于 SMP 不稳定。这些相同的内核可能存在 NFS 问题,可能导致锁定。此外,使用串行控制台捕获您的 oops 消息。(Wade Hampton)

    如果问题仍然存在(并且此列表上的其他建议也没有帮助),那么您可以尝试最新的 2.3 内核。它们具有更详细(且更健壮)的 SMP/APIC 代码,以及自动硬锁定预防代码,这将产生有意义的 oops 而不是静默挂起。(Ingo Molnar)

    (Osamu Aoki) 您还必须禁用所有 BIOS 相关的节能功能。良好配置示例(双路 Celeron 466 Abit BP6)


     POWER MANAGEMENT SETUP.
       ACPI:              Disabled
       POWER MANAGEMENT:  Disabled
       PM CONTROL by APM: No
    

    如果激活了电源管理功能,可能会发生一些随机冻结。

  18. 调试锁定

    (由 Wade Hampton 提供)

    调试锁定的一个好方法是从 Andrea Arcangeli 获取 ikd 补丁:ftp://ftp.suse.com/pub/people/andrea/kernel-patches

    有几个调试选项,但不要使用软锁定选项!对于较新的 SMP 机器,打开内核调试,然后打开 NMI oopser。要验证 NMI oopser 是否工作,在启动新内核后,/cat /proc/interrupts 并验证您是否正在获取 NMI。当机器锁定时,您应该会收到 OOPS。

    您也可以尝试 %eip 选项。这允许内核在每次调用内核函数时在控制台上打印 %eip 地址。当机器锁定时,写下按第二列排序的第一列,然后在 System.map 文件中查找地址。这仅在控制台模式下有效。

    另请注意,使用串行控制台可以极大地促进调试内核锁定,而不仅仅是 SMP 内核锁定!

  19. 日志中出现“CPU#n 上的 APIC 错误中断,不应该发生”消息

    类似如下的消息


    APIC error interrupt on CPU#0, should never happen.
    ... APIC ESR0: 00000002
    ... APIC ESR1: 00000000
    

    表示“接收校验和错误”。这不可能是由 Linux 引起的,因为 APIC 消息校验和部分完全在硬件中。这可能是边缘硬件。只要您没有看到任何不稳定性,它们就不是问题 - APIC 消息会重试直到传递。(Ingo Molnar)

4.2 可能的崩溃原因

在本节中,您将找到 SMP 机器崩溃的一些可能原因(感谢 Jakob �stergaard 的这部分内容)。据我(David)所知,这些问题是 Intel 特有的。

4.3 主板特定信息

请注意:有关更多具体信息,请参阅 传闻可以运行 Linux SMP 的主板 列表

已知有问题的主板

4.4 低成本 SMP Linux 机器(双路 Celeron 机器)

(St�phane �colivet)

目前可购买的处理器中,成本最低的 SMP Linux 机器是双路 Celeron 系统。根据 Intel 的说法,这样的系统在官方上是不可能的。最好考虑第二代 Celeron,即那些具有 128 Kb L2 缓存的 Celeron。

是否可以运行双路 Intel Celeron 机器?

来自 Intel 的官方回答: 否,Celeron 无法在 SMP 模式下工作。

实际回答: 这是可能的,但需要对 Slot 1 处理器进行硬件改动。Tomohiro Kawada 在他的 双路 Celeron 系统 页面上描述了这种改动。当然,这种修改会取消保修... 某些版本的 Celeron 处理器也以 Socket 370 格式提供。在这种情况下,改动可能只需在 Socket 370 到 Slot 1 的适配器上进行,甚至可以出售预先为 SMP 用途布线的适配器。(Andy Poling, Hans - Erik Skyttberg, James Beard)

还有一款主板 (ABIT BP6) 允许插入两个 Socket 370 格式的 Celeron (Martijn Kruithof, Ryan McCue)。ABIT Computer BP6 经过验证和测试,并且原生支持 linux,带有双 ppga socket 370 (Andre Hedrick)。

Linux 在双路 Celeron 系统上的表现如何?

很好,谢谢。

众所周知,Celeron 处理器很容易超频。那么双路 Celeron 系统呢?

可能可以工作。但是,超频这种系统不像超频单处理器系统那么容易。对于生产系统来说,这绝对不是一个好主意。对于个人使用,据报道双路 Celeron 300A 系统在 450 MHz 下运行非常稳定。(numerous people)

那么制造四路 Celeron 系统呢?

这是不可能的。Celeron 处理器的功能与基本的 Pentium II 芯片几乎相同。如果您希望系统中包含超过 2 个处理器,则必须考虑 Pentium Pro、Pentium II Xeon 或 Pentium III (?) 机器。

混合使用 Celeron 和 Pentium II 处理器怎么样?

使用“重新启用”的 Celeron 处理器和具有相同步进的 Pentium II 处理器的系统理论上可能可以工作。

Alexandre Charbey 制作了这样一个系统


下一页 上一页 目录