【问题标题】:Can memcached make full use of multi-core?memcached能否充分利用多核?
【发布时间】:2014-03-18 03:55:03
【问题描述】:

memcached 是否能够充分利用多核?或者有什么办法调整这个?

【问题讨论】:

    标签: memcached multicore parallel-processing


    【解决方案1】:

    memcached 有“-t”选项:

           -t <threads>
              Number of threads to use to process incoming requests. This option is only meaningful
              if memcached was compiled with thread support enabled. It is typically not useful  to
              set  this higher than the number of CPU cores on the memcached server. The default is
              4.
    

    所以,我相信它可以使用你所有的 CPU 内核,当然如果它是用相应的选项编译的。

    【讨论】:

      【解决方案2】:

      memcached 默认情况下是多线程的,并且在使许多内核饱和时没有问题。在更大规模的并行机器(例如 256 核 CMT 机器)上使所有内核饱和有点困难,因为将数据输入和输出网络变得更加困难。

      如果您发现某种争用导致您无法使内核饱和,请提交错误或开始讨论。

      【讨论】:

        【解决方案3】:

        根据英特尔的this 研究,Memcached v.1.6 测试版无法在多核系统上很好地扩展。他们的实验表明,随着核心数量从 1 增加到 8,最大吞吐量(中位 RTT

        【讨论】:

          【解决方案4】:

          小心。这个术语相当混乱。 Memcached 手册页说 -t 选项仅适用于内核数量。但是,这很奇怪,因为线程和进程非常不同。线程与核心数量无关。进程绝对可以在多个内核上运行,而线程不能(除非它们调用操作系统例程,否则它们可以线程切换并打包超过 100% 的 cpu 使用率)。线程共享内存,仅依靠指令指针来区分谁是谁。除非提前明确声明为共享,否则进程不共享任何内容,并且共享是通过操作系统进行的。

          总的来说,我希望 Memcached 人员更清楚地了解他们的应用是多处理还是多线程,因此它是否可以使用超过 100% 的 cpu。

          【讨论】:

          • [线程与内核数无关] 它说将线程数设置为内核数的原因是您通常希望一个内核执行给定线程。除此之外,cpu 将不得不在线程之间进行上下文切换,这会在不同程度上影响性能,具体取决于您要执行的操作
          猜你喜欢
          • 2011-05-06
          • 1970-01-01
          • 2012-07-23
          • 2011-01-17
          • 2015-05-16
          • 2022-09-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多