PHP 扩展 php-affinity

码农软件 · 软件分类 · 高性能网络开发库 · 2019-08-31 22:29:47

软件介绍

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

  •  频繁的并行运算

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

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

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

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

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

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

php-affinity是使用c编写的php扩展,项目地址:https://github.com/huyanping/php-affinity

    /**
                     * 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;
                    }

提供了如下三个函数:

  1. setaffinity – 设置cpu亲和性

  2. getaffinity – 获取cpu亲和性

  3. getcpucores – 获取cpu核心数量

API 如下:

参考文献:

  1. https://zh.wikipedia.org/wiki/%E5%A4%84%E7%90%86%E5%99%A8%E4%BA%B2%E5%92%8C%E6%80%A7

  2. http://www.ibm.com/developerworks/cn/linux/l-affinity.html

  3. http://www.cnblogs.com/LubinLew/p/cpu_affinity.html

本文地址:https://codercto.com/soft/d/13606.html

引爆用户增长

引爆用户增长

黄天文 / 机械工业出版社 / 2017-11-1 / 79.00

本书是用户增长领域的开创性著作,是作者在去哪儿、360、百度等知名企业多年用户增长工作的经验总结。宏观层面,从战略高度构建了一套系统的、科学的用户增长方法论;微观层面,从战术执行细节上针对用户增长体系搭建、用户全生命周期运营等总结了大量能引爆用户增长的实操方法和技巧。 不仅有方法论和技巧,而且非常注重实操。对电商、团购、共享经济、互联网金融等4大行业的50余家企业(360、美团、滴滴等)的1......一起来看看 《引爆用户增长》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具