memcached是否能够充分利用多核?或者有什么方法可以调整它吗?
答案 0 :(得分:12)
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核心,当然如果它是用相应的选项编译的。
答案 1 :(得分:6)
默认情况下,memcached是多线程的,并且没有问题使许多内核饱和。在更大规模的并行盒(例如256核CMT盒)上使所有内核饱和有点困难,因为它越来越难以将数据输入和输出网络。
如果您发现某些争用的区域阻止您使内核饱和,请提交错误或开始讨论。
答案 2 :(得分:4)
根据英特尔的this研究,Memcached v.1.6 beta无法在多核系统上很好地扩展。他们的实验表明,随着核心数量从1增加到8,最大吞吐量(RTT <1ms SLA中位数)仅增加一倍。
答案 3 :(得分:1)
小心。这个术语很混乱。 Memcached手册页说-t选项只能达到核心数量。但是,这很奇怪,因为线程和进程非常不同。线程与核心数量无关。进程绝对可以在多个cor上运行,而线程不能运行(除非它们调用OS例程,然后它们可以在超过100%的cpu使用情况下进行线程切换和打包)。线程共享内存,只依赖于指令指针来区分谁是谁。除非事先明确声明为共享,并且通过操作系统进行共享,否则进程不会共享任何内容。
总体而言,我希望Memcached人员更加清楚他们的应用程序是多处理还是多线程,因此它是否可以使用超过100%的cpu。