【问题标题】:CPU affinity for mysql servermysql 服务器的 CPU 亲和性
【发布时间】:2012-08-27 21:02:51
【问题描述】:

我有 4 个 CPU 的 linux 服务器。我已经安装了 mysql 并且我有在后台运行 24/7 的 CPU 繁重的任务。我对每个进程使用 CPU 亲和力有什么好处?例如:

1 CPU = background task/daemon
2 CPU = background task/daemon
3 CPU = background task/daemon
4 CPU = mysql

在任何给定时间,每个后台任务都会占用多达 80% 的 CPU。

更新: 我的任务是 lxml 解析器(python)。

【问题讨论】:

  • 你可能没有你的操作系统那么聪明,那你为什么要这样做呢?
  • 嗯,这正是我的问题。将任务分配给特定的 CPU 或操作系统是否有好处?跨 3 个核心的 3 个任务或每个附加到每个核心的 3 个任务 = 相同的结果?
  • tadman 在一般情况下是正确的,但某些调度程序可能针对某些机器/任务进行了“优化”。如果您的调度程序针对特定的预期任务集进行了优化,那么您可以看到安装不同的调度程序(如果可能)或强制执行特定的关联性的好处。

标签: python mysql linux performance


【解决方案1】:

我会看看您的流程在做什么。如果调度程序不断将任务切换到不同的内核/CPU,那么您可以通过将它们锁定到特定的内核/CPU 来获得性能提升。好处在于不必每次都在两个内核/CPU 之间进行昂贵的上下文切换。

如果您没有看到这种情况发生,那么当调度程序可能需要对它们进行洗牌时,我认为不需要将它们锁定到特定内核。

如果您正在寻找更具体的答案,您应该研究一下您的 Linux 内核正在使用什么调度程序以及它如何调度进程。一旦您了解了它是如何安排它们的,使用配置/标志可能会有所帮助,这样它就可以很好地处理您所有的后台繁重任务。但请记住,如果您做的事情过于极端,您将面临进程/线程饥饿、运行时间极长或总体性能不佳的巨大风险。

【讨论】:

  • 不要忘记,由于热管理问题,当内核数量较少且负载较重时,现代英特尔 CPU 会更好地工作。与故意分散进程以防止这种情况相比,单个内核可以以更高的时钟速度在“Turbo”模式下运行。
猜你喜欢
  • 2012-01-09
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多