2016-09-17 18 views
0

私は同じマシン上のHTTPサーバーの前でVarnishを実行する8コアサーバーを持っています。ワニスが使用するCPUコアの数を制限する方法は?

ワニスを4コア以下で使用するように制限するにはどうすればよいですか?

私は、ドキュメント内のワーカープールの読みましたが、それはまた、これを言う:ニススレッドモデルを使用して、複数のスレッドプールを使用することができますが、私たちは、このパラメータを変更しないでくださいすることをお勧めいたします」

当社に基づいています。 2つ以上のプールを追加すると、ワニスのパフォーマンスは向上しません。

メモスレッドを持つことを提案するチューニングのアドバイスを実行する場合は、これは古いアドバイスですので、最大で2つのスレッドプールを持つことをお勧めしますが、プールあたりのスレッド数を増やすことができます。

したがって、2つのスレッドプールで十分です。その場合、2つのCPUコアだけが使用されますか?

私はこれまでの文書を検索しても、明確な答えは見つかりませんでした。

答えて

0

私の知る限り、Varnishには、動作するコアの数を制限する組み込みの方法はありません。プロセスがオペレーティングシステムレベルでどのように動作するかを操作する必要があります。 Linuxを使用していると仮定すると、起動コマンドを変更してtasksetを使用して、特定のコアまたはコア範囲にプロセスを固定することが最も簡単な方法です。例えば、サービスユニットのオーバーライドで:

# /etc/systemd/system/varnish.service.d/override.conf 
ExecStart= 
ExecStart=/usr/bin/taskset -c 4-7 /usr/sbin/varnishd \ 
    -j unix,user=vcache -F -a :6081 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m 

これは、第六、第七、8つのコアにvarnishd処理を制限します。あなたがハイパースレッディングを有効にしている場合、それはちょっと厄介です。あなたの8つの物理コアは16個の論理コアとして存在し、「真の」コアは「仮想」と織り交ぜています。その場合は、taskset -c 8,10,12,14またはtaskset -c 9,11,13,15を試してみてください。または、ワニスを物理的なコアに限定する気にならない場合は、taskset -c 8-15を試してみてください。

その他のオプションには、cgroupの設定やVarnishのコンテナ化(またはシステムの仮想化が含まれますが、それはテーブルにないものとします)があります。 tasksetオプションがうまく動作しない場合、またはLinuxで動作していない場合は、質問を追加情報で更新してください。

関連する問題