我有一个4核服务器,我想在它上面运行redis.为了充分利用4核的功能,预计将启动4个redis实例,因为redis设计为单线程.
但是,我很好奇如何确保4个实例在4个不同的内核上运行?实例如何确定启动时运行的核心?
Did*_*zia 14
Redis本身并不提供这样的保证.
如果启动4个实例,则将有4个不同的进程,操作系统必须在4个核心上进行调度.操作系统可以执行此负载平衡,从而优化系统性能.
现在,如果您真的想将每个实例绑定到特定的核心,现代操作系统通常会提供工具来强制执行特定CPU核心上的进程.
例如,在Linux上,您可以查看taskset和numactl命令.
实际上,您需要注意这一点,因为一旦在特定核心上启动Redis(设置CPU掩码),所有线程和子进程都将继承此CPU掩码.因此,当Redis尝试触发后台保存操作或后台AOF重写时,它将严重影响Redis实例的性能.这是因为主Redis线程将通过后台操作(通常是CPU消耗)共享CPU核心.
如果你真的想与CPU结合发挥(但它真的是一个好主意吗?),你需要到N的Redis实例绑定到N + 1个CPU核心,保持自由一个核心的后台操作,并确保最多一个背景对于这些实例,操作可以同时运行.
| 归档时间: |
|
| 查看次数: |
1970 次 |
| 最近记录: |