PHP 拡張子: php-affinity

WBOY
リリース: 2016-06-20 12:43:51
オリジナル
1478 人が閲覧しました

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

    関連ラベル:
    ソース:php.cn
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート