2010-05-28 34 views

回答

6

默認情況下,memcached是多線程的,並且沒有使多個內核飽和的問題。在更大規模的並行盒子(例如256核心CMT盒子)上飽和所有核心有點困難,只是因爲難以將數據導入和導出網絡。

如果您發現某些區域存在某種爭用阻止了內核飽和,請提交錯誤或開始討論。

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核心,當然,如果它與相應的選項編譯。

+0

非常感謝你〜 – 2010-05-29 02:35:20

+0

請註明爲「接受」,如果它是有幫助的答案你 – 2010-05-29 06:11:58

0

小心。這個術語很混亂。 Memcached手冊頁說-t選項只有核心數量不錯。然而,這很奇怪,因爲線程和進程是非常不同的。線程與核心數量無關。進程絕對可以在多個cor上運行,而線程不能(除非他們調用OS例程,然後他們可以線程切換並打包100%以上的cpu使用)。線程共享內存,並僅依賴指令指針來區分誰是誰。除非將進程顯式聲明爲提前共享,並且通過操作系統共享,否則進程將不分享任何內容。總體而言,我希望Memcached人員瞭解他們的應用程序是多處理還是多線程的,因此如果它可以使用超過100%的cpu,就可以獲得更高的清晰度。

+2

[主題無關與核心數量] 之所以它說你的線程數設置爲核心的數量是你通常希望有一個核心執行給定的線程。除此之外,CPU將不得不在上下文之間切換,這會根據您嘗試執行的操作而在不同程度上影響性能 – concept47 2015-08-04 22:53:35

4

根據英特爾的研究this,Memcached v.1.6 beta在多核系統上無法很好地擴展。他們的實驗表明,隨着內核數量從1增加到8,最大吞吐量(中值RTT爲1毫秒SLA)僅增加一倍。