php-affinity

PHP 扩展
授权协议 MIT
开发语言 Objective-C
所属分类 程序开发、 高性能网络开发库
软件类型 开源软件
地区 国产
投 递 者 鄢开诚
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

  • 大佬地址: PHP插件 https://github.com/huyanping/php-affinity CPU亲和性理论 https://www.ibm.com/developerworks/cn/linux/l-affinity.html Install wget https://github.com/huyanping/php-affinity/archive/0.1.tar.gz tar

  • 软件简介 Php-affinity 通过设置cpu亲和性,可以将进程绑定到一个cpu核心上。一般在如下场景我们可能会希望修改进程的cpu亲和性: 频繁的并行运算 线程可伸缩性测试(通过增加cpu核心数量模拟线性扩展) 运行时间敏感的,决定性的进程 向nginx,swoole等开源软件,都提供了设置cpu亲和性的方法。nginx官方建议worker数量等同于cpu核心数量也是为了将一个进程绑定到一个

  • php-affinity 详细介绍 Php-affinity 通过设置cpu亲和性,可以将进程绑定到一个cpu核心上。一般在如下场景我们可能会希望修改进程的cpu亲和性: 频繁的并行运算 线程可伸缩性测试(通过增加cpu核心数量模拟线性扩展) 运行时间敏感的,决定性的进程 向nginx,swoole等开源软件,都提供了设置cpu亲和性的方法。nginx官方建议worker数量等同于cpu核心数量也

  • ubuntu10.04配置 nginx+php-fpm模式的详解 ppa安装php-fpm安装工具包 $ sudo apt-get install python-software-properties 添加ppa源 $ sudo add-apt-repository ppa:yola/php5 安装php5-fpm sudo  apt-get  update sudo  apt-get insta

  • user www www; worker_processes 8; worker_cpu_affinity 0001 0010 0100 1000 0001 0010 0100 1000; #error_log  /usr/local/nginx/logs/error.log; #error_log  /usr/local/nginx/logs/error.log  notice; #error_

  • 一、基本信息 指定服务安装的通用位置 mkdir /usr/local/services SERVICE_PATH=/usr/local/services 创建服务运行的账户 useradd -r -M -s /sbin/nologin www 安装所需依赖包 yum -y install pcre pcre-devel \ gperftools gcc zlib-devel \ libxml2

  • 在前阵子看到HelloDB的一篇文章“ 因为单机运行多个实例,必须对网络进行优化,我们通过多个的IP的方式,将多个MySQL实例绑定在不同的网卡上,从而提高整体的网络能力。还有一种更高级的做法是,将不同网卡的中断与CPU绑定,这样可以大幅度提升网卡的效率。 于是,对“将不同网卡的中断与CPU绑定,这样可以大幅度提升网卡的效率”比较感兴趣,所以找了点资料了解一下。先总结如下: 1. 不同的设备一般都

  • 然后断开了编译 原因是环境的路径问题,没有找到PHP环境中的php-config文件 解决办法: 【注意:每个人的环境均可能相同,路径自己替换】 ./configure --with-php-config=/www/server/php/72/bin/php-config 其中/www/server/php/72是我的PHP环境路径,按照自己的替换 如下就是成功了 [root@VM_0_26_c

  • nginx指令中的优化(配置文件) worker_processes 8; nginx进程数,建议按照cpu数目来指定,一般为它的倍数。 worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; 为每个进程分配cpu,上例中将8个进程分配到8个cpu,当然可以写多个,或者

  • php安装swoole扩展的方法,phpswoole扩展 本文实例讲述了php安装swoole扩展的方法。分享给大家供大家参考。具体如下: 我本机是OS X,想要安装swoole体验一下,于是: 复制代码 代码如下:andy@AndyMacBookPro:/usr/local/webdata/github$ cd swoole-src/ andy@AndyMacBookPro:/usr/local

  • nginx优化专题–进程数worker_cpu_affinity Nginx默认没有开启利用多核CPU,我们可以通过增加worker_cpu_affinity配置参数来充分利用多核CPU。CPU是任务处理,计算最关键的资源,CPU核越多,性能就越好。 配置Nginx多核CPU,worker_cpu_affinity使用方法和范例 首先了解我们服务器CPU的信息 cpu的信息配置在/proc/cpu

  • Nginx+PHP-fpm组合,以内存占用小,负载能力强壮的特点,成为小内存VPS建站的首选组合。我们一起来探讨一下nginx+php-fpm高负载的优化方法。 先来看看nginx配置参数的优化。nginx是前端接受浏览器端请求的web server, 配置可调的参数如下: 下面是示例nginx配置 user www-data; worker_processes  8; #worker_proce

  • docker pull w303972870/nginx-php PHP相关目录 日志目录:/data/php/logs 默认php-fpm.conf:/data/php/conf/php-fpm.conf 默认www.conf:/data/php/conf/php-fpm.d/www.conf 默认php.ini:/data/php/conf/php.ini 默认缓存目录:/data/php/t

  • Nginx+PHP+Mysql安装在公网IP为x.x.x.x的服务器上 需要下载安装的软件版本:nginx-1.14.0+php-5.6.36+mysql-5.6.40 安装Nginx 第一步,安装编译工具及库文件。 命令:yum -y install make automake autoconf libtool zlib zlib-devel gcc gcc-c++ openssl openss

  • Nginx+PHP+Mysql安装在公网IP为y.y.y.y的服务器上 需要下载安装的软件版本:nginx-1.14.0+php-5.6.36+mysql-5.6.40 安装Nginx 第一步,安装编译工具及库文件。 命令:yum -y install make automake autoconf libtool zlib zlib-devel gcc gcc-c++ openssl openss

  • NGINX + PHP-FPM 优化记录 最近做的 NGINX + PHP-FPM 优化,记录一下,留待后用。 测试环境,8 核 CPU,64G 内存。 1、PHP-FPM 配置文件 listen = 127.0.0.1:9000 修改为 listen = /tmp/php-fpm.sock listen.backlog 取消注释,并修改值为 102400 pm = dynamic 修改为 pm

  • 背景 最近将Wordpress迁移至阿里云。由于自己的服务器是云服务器,硬盘和内存都比较小,所以内存经常不够使,通过Linux命令查看后,发现启动php-fpm进程数有20多个,占用了将近1G的内存,整个服务器才1.5G的内存,最后通过对php-fpm进程数优化解决了此问题,服务器多节省出600M的内存,将php-fpm的优化方法和大家分享下。 备注:目前根据nginx、fpm-php进行了内存优

  • 1.worker_processes 越大越好(一定数量后性能增加不明显)2.worker_cpu_affinity 所有cpu平分worker_processes 要比每个worker_processes 都跨cpu分配性能要好;不考虑php的执行,测试结果worker_processes数量是cpu核数的2倍性能最优3.unix domain socket(共享内存的方式)要比tcp网络端口配

 相关资料
  • PHP 源码 Source Insight 相关资料 Extending and Embedding PHP PHP Internals Book 深入理解PHP内核 PHP扩展开发及内核应用 Laruence 鸟哥博客

  • 本文向大家介绍浅谈php扩展imagick,包括了浅谈php扩展imagick的使用技巧和注意事项,需要的朋友参考一下 PHP建图通常都用GD库,因为是内置的不需要在服务器上额外安装插件,所以用起来比较省心,但是如果你的程序主要的功能就是处理图像,那麼就不建议用GD了,因为GD不但低效能而且能力也比较弱,佔用的系统资源也颇多,另外GD的creatfrom也有bug,而imagick却是一个很好的替

  • 我安装laravel通过作曲家,但当运行的网站它给一个错误 我也安装了php5-mcrypt,但错误仍然存在。

  • 我是新来的。 当我在命令行中键入以下内容时: 我得到下面的错误。 需要Mcrypt PHP扩展。 后来我尝试进行故障排除。 然后我键入以下命令。 我得到的回应是: 我再次键入以下内容: 我不能再继续了。 有人能帮我吗?

  • 问题描述 使用 Dockerfile 安装 GD 的过程中,报错 Dockerfile 文件内容: 报错如下 然后我给zlib1g降级 又报错 好像大概是不然使用-y参数吧,但是我去掉了参数还是报错 报错如下 好像是降级需要确认,但是 Dockerfile 中又不能输入Y。 请问如何解决? 搜了半天没有找到方法 1. 运行环境 1). PHP 版本: php:7.3-fpm 2). 当前系统 ma

  • 我在phpinfo()中的“已解析的其他.ini文件”部分看不到mcryptphp_mcrypt'已经安装。我使用CentOs和nginx以及PHP5.3。3. 在/etc/php中。d/mcrypt。我写的ini扩展名=mcrypt。所以 我试图改变扩展路径在php.ini(ex扩展=/usr/lib64/php/模块/mcrypt.so),但它仍然不工作。

  • 我已经安装了家园,我试图在Laravel项目版本4.2上工作,但是我一直收到以下错误: 需要PHP扩展。 我已经在服务器上安装了Mcypt,并在PHP7INI文件中启用了它。由于某种原因,这个问题不想消失。 有什么建议,我可以做什么,以启用我的虚拟框的密码?

  • 我在nginxweb服务器上,我想删除来自url的扩展。 我目前有以下会议: 如果试图遵循一些类似的案例说明,但似乎没有任何工作与我的conf。 问题是这段代码 在两种情况下运行良好: 客户要求https://mywebsite.com/page.php:好的 客户要求https://mywebsite.com/page:好的 不重写url! 如果客户端试图访问具有文件扩展名的页面,我需要告诉NG