Php-affinity CPU アフィニティを設定することで、プロセスを CPU コアにバインドできます。一般に、次のシナリオでプロセスの CPU アフィニティを変更する必要がある場合があります。
頻繁な並列操作
スレッドのスケーラビリティ テスト (シミュレート) CPU コア数の増加による線形拡張)
時間に敏感な決定的なプロセスの実行
nginx、swoole、など。CPU アフィニティを設定するためのメソッドを提供します。 nginx は、プロセスを CPU コアにバインドし、プロセスの切り替えによって生じるオーバーヘッドを回避するために、ワーカーの数が CPU コアの数と同じであることを公式に推奨しています。
Php 自体には CPU アフィニティを設定する機能がありません。これは 2 つの方法で実現できます。
システム コマンドを呼び出して、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; }
次の 3 つの関数が提供されます:
setaffinity - CPU アフィニティの設定
getaffinity - CPU アフィニティの取得
getcpucores – CPU コアの数を取得します
API は次のとおりです:
参考:
https://zh.wikipedia.org / wiki/%E5%A4%84%E7%90%86%E5%99%A8%E4%BA%B2%E5%92%8C%E6%80%A7
http://www.ibm.com/developerworks/cn/linux/l-affinity.html
http://www.cnblogs.com/LubinLew/p/cpu_affinity.html
プロジェクトのホームページ: http://www.open-open.com/lib/view/home/1448371981438