Redis是否需要綁定CPU?
在多核服務器上,綁定CPU可以減少上下文切換,尤其是服務器上還運行有其它應用時,REDIS主線程被調度到其它CPU核上時,這時會使用其它核上的L1、L2緩存,如果有其它應用程序也使用了緩存,這樣會降低命中率。
現在服務器一般都是多核的,綁定CPU看起來是一個必然正確的選項,但實際上是有風險的!
在NUMA架構下,操作系統的網絡中斷程序與REDIS線程可能不在同一個CPU socket上,會導致REDIS線程訪問內存變慢,這個時候就需要把網絡中斷程序與REDIS線程綁定在同一個CPU socket內的不同物理核上,以解決跨CPU socket訪問問題。
圖片
那綁定CPU還有其它風險嗎?
如果綁定了CPU邏輯核后,會導致REDIS子進程都會綁定在這個邏輯核上,這樣RDB、AOF等操作都會與REDIS主線程競爭同一個邏輯核。
優化方式為改綁定物理核,或者修改源碼使用后臺程序及子進程使用其它CPU。