どのように私は、CPUへのよりよいPHPを作るのですか?

StackOverflow https://stackoverflow.com/questions/381885

  •  23-08-2019
  •  | 
  •  

質問

私は(Site5が運営)* NIX共有サーバー上で実行していますよ。私は時折、いくつかのオフライン計算を行って、バックグラウンドで実行されるPHPスクリプトを持っています。それが実行されながら、約100%のCPUを使用しています。

:私はこのような、素敵な-INGのそれを試してみました
nice -n 19 php script.php

しかし、それはすべての違いを確認していないようです。

役に立ちましたか?

解決

あなたはあなたのコードを(int型$ micro_seconds)はusleep飛散ことができます。これは、他のもののための無料のCPUを残して、時間のわずかな量のために停止するスクリプトを強制されます。

それはしかし、必要なのでしょうか?あなたのスクリプトは、優先度が低い場合は、優先度の高い他のプロセスがCPUは、彼らが必要な時間を取得していないだろう必要な場合は、それは... CPUの100%を使用していても構わないスクリプトまで(残りの部分を取得100%)?

他のヒント

可能な場合は、

でもナイス値が負、それは100%のCPUを使用します。しかし、カーネルが一緒に来て、他の(非ナイス値が負の)プロセスを優先させて頂きます。

システムが応答し、そしてあなたはそれを実行している間、他の仕事を成し遂げることができます限り、私はそれについて心配しないでしょう。私は私のシステム上で分散コンピューティングクライアントを実行し、そしてそれは、利用可能なCPUサイクルを吸い上げます。それは、最も低い優先度で実行されるので、必要に応じて、任意のおよび他のすべてのプロセスがそれを先取りします。

あなたの方法としては、バックグラウンドであり、プロセスがCPUバウンドであると思われる100%のCPUを使用しています。バインドされ、ユーザが予想されないので、唯一の選択肢は、IOバインドされますので、それは、バックグラウンドです。あなたのプロセスは本当に面白いIOを行うべきでない場合は、スクリプト自体はCPUバインドされ、だけではなく、バグがあることが予想される。

プロセスは、常に可能な限り速く行くようにしようとします。彼らはIOがバインドされている場合、彼らはCPUがバインドされている場合、彼らは100%のCPUを使用しようと、IOの100%を使用します。適切に記述されたプロセス・スケジューラは自動的に大きなプロセスは低い優先順位を取得することを意味し、すべてのプロセスに公平感を提供することを目指しています。あなたはさらに素敵に優先順位を下げることができます。 CPU使用率が約100%がまだあるという事実が、現在CPUバインドされている他のプロセスはありませんが、最も可能性の高いネットワークからの入力を待っていることを意味します。

ニース変更する頻度が100%のCPUでのPHPの結果、コンテキスト・スイッチではなく、どのくらいのかなりのプロセスがある場合。

プログラムは、システムコールを実行した瞬間には、カーネルが本当の仕事をして前に別のプロセスにCPUを得ることができます。あなたのPHPはそれがフルスピードを実行しているとき、すべてのシステムコールを作るようには見えません。それはあなたが行っていない、任意のブロックのI / O(ソケット、ファイルなど)を任意のコードブロックがビジー待ちで立ち往生しているかどうかを確認します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top