当前位置: 首页 > 工具软件 > php-affinity > 使用案例 >

php ic 扩展,php-affinity

马嘉勋
2023-12-01

软件简介

Php-affinity 通过设置cpu亲和性,可以将进程绑定到一个cpu核心上。一般在如下场景我们可能会希望修改进程的cpu亲和性:

频繁的并行运算

线程可伸缩性测试(通过增加cpu核心数量模拟线性扩展)

运行时间敏感的,决定性的进程

向nginx,swoole等开源软件,都提供了设置cpu亲和性的方法。nginx官方建议worker数量等同于cpu核心数量也是为了将一个进程绑定到一个cpu核心上,同时避免进程切换带来的开销。

Php本身并没有提供设置cpu亲和性的函数,我们可以通过两种方式实现:

调用系统命令,修改当前进程cpu亲和性

编写php扩展,封装系统调用。

/**

* set CPU affinity

*

* @param $cpu_id

* @return bool

*/

functionsetaffinity($cpu_id){

$num= getcpucores();

if($cpu_id>= $num){

returnfalse;

}

$set= system_call($cpu_id);

if($set=== -1){

returnfalse;

}

returntrue;

}

/**

* get CPU affinity

*

* @return bool

*/

functiongetaffinity(){

$cpu_id= system_call();

if($cpu_id=== -1){

returnfalse;

}

return$cpu_id;

}

/**

* get number of CPU

*

* @return bool

*/

functiongetcpucores(){

$nums= system_call();

if($nums=== -1){

returnfalse;

}

return$nums;

}

提供了如下三个函数:

setaffinity – 设置cpu亲和性

getaffinity – 获取cpu亲和性

getcpucores – 获取cpu核心数量

API 如下:

参考文献:

 类似资料: