Swoole通过process_cpu_affinity配置或swoole_set_cpu_affinity()实现CPU亲和性绑定,自动或手动将Worker/Task进程绑定到指定CPU核心,减少上下文切换开销,提升性能。

Swoole 提供了设置进程 CPU 亲和性(CPU affinity)的能力,通过将特定的进程绑定到指定的 CPU 核心上,可以减少上下文切换带来的开销,提升性能。在 Swoole 中,主要通过配置参数和底层 API 来实现 CPU 亲和性的控制。
Swoole 默认在某些版本中会自动开启 CPU 亲和性绑定,但也可以通过配置明确控制:
关键配置是 swoole.heartbeat_idle_time 和 swoole.process_cpu_affinity,但实际生效的是服务启动时的选项。对于 Server 类型的服务,使用以下方式设置:
立即进入“豆包AI人工智官网入口”;
立即学习“豆包AI人工智能在线问答入口”;
$server = new Swoole\Server("127.0.0.1", 9501);
$server->set([
    'worker_num' => 4,
    'enable_reuse_port' => true,
    'daemonize' => false,
    'process_cpu_affinity' => true, // 开启 CPU 亲和性自动绑定
]);
当 process_cpu_affinity 设置为 true 时,Swoole 会自动将每个 Worker 进程绑定到不同的 CPU 核心上,按顺序分配。
如果需要更细粒度地控制某个进程绑定哪个 CPU,可以在子进程中调用 swoole_set_cpu_affinity() 函数。
立即进入“豆包AI人工智官网入口”;
立即学习“豆包AI人工智能在线问答入口”;
$server->on('WorkerStart', function ($server, $workerId) {
    // 将前 4 个 worker 分别绑定到 CPU0 ~ CPU3
    $cpuNum = swoole_cpu_num();
    $cpuCore = $workerId % $cpuNum;
    swoole_set_cpu_affinity([$cpuCore]);
});
说明:
如果你启用了 Task 进程,同样可以在 TaskStart 回调中设置:
$server->on('Task', function ($server, $task) {
    // 处理任务逻辑
});
<p>$server->on('TaskProcessStart', function ($server, $workerId) {
$cpuNum = swoole_cpu_num();
$cpuCore = ($workerId - $server->setting['worker_num']) % $cpuNum;
swoole_set_cpu_affinity([$cpuCore]);
});</p>注意:Task 进程 ID 是从 worker_num 开始递增的,所以需要做偏移处理。
基本上就这些。开启 process_cpu_affinity 可以满足大多数场景,若需定制化绑定策略,则使用 swoole_set_cpu_affinity() 手动控制。不复杂但容易忽略细节。
以上就是Swoole如何设置进程的CPU亲和性的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                 
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                             
                                
                                 收藏
收藏
                                                                            Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号