我们有一个运行 RHEL 4 AS 32 位(2.6.9-42.ELsmp #1 SMP)的系统,该系统具有 20GB RAM 和 8 个双核处理器,运行 Oracle 10g 数据库。
这有点过分了,但我很难解释为什么。我还想知道,由于系统配置不均衡,是否会出现与内存相关的问题 - 操作系统是否会花费太多资源来调度 CPU 等?
谢谢
答案1
至于核心与内存,你说的是 16 个核心上的 20GB;也就是(乐观地)每个核心 1.25 GB,如果你真的把所有 16 个核心都固定起来,那么内存就不算多。我们运行的系统内存/核心比率肯定高于 20GB/16,我们的供应商一直试图向我们推销可以配置数百 GB 内存的 24 个核心的机器。
就应用程序性能而言,16 个内核和 20GB RAM 对 Oracle 来说并不一定超配;我们肯定会运行这么大的系统。话虽如此,当您运行 32 位内核时,20GB RAM 对您来说没什么用;在 RHEL5-64 上重建将是一个不错的选择。
您还需要让您的 DBA 研究配置 Oracle 以利用大量物理内存 - 我们的 DBA 已在更大的 Oracle 服务器上“禁用 AMM 并配置 huge_pages”。
即使机器对于您当前的工作负载来说有点超出规格(并且只有长期的统计监控才能真正证实这一点),您很有可能会适应它;并且在无法预测的重负载期间,最好有一些开销可以使用,而不是立即死机。
希望有帮助!
答案2
不太可能。
你用服务器做什么?只需进行一点分析就能知道它是否真的超配。
答案3
我认为您不太可能遇到与 CPU 调度或内存映射相关的资源问题。除非需要,否则不会发生这些问题。即使发生,与调度的进程相比,它们的开销也相对较低。
我要看的是:
- 平均负载。这告诉您有多少个核心处于活动状态。最好使平均负载低于 CPU 数量。但如果平均负载远低于 CPU 数量,则服务器可能有太多核心。
- 内存利用率(不包括缓冲区)。您将需要比该级别更多的内存,但可能不会超过 2 倍或 3 倍。
如果您在服务器上运行虚拟主机,您可能希望为主机固定 CPU。您可能希望对高 CPU 单线程进程执行相同操作。如果这样做,请将负载分散到各个 CPU 上。