スレッドのCPU-株式の影響は何ですか

Vipinメノン:

私の質問は、より多くのJavaスレッドのレベルにあります。しかし、おそらくそれは同様にOSレベルのスレッドのためのより一般的なことかもしれません。

JAVAのSPECIFIC:の関連性であるものThreadPoolのチューニングサイズ(式)?衝撃性能とどのようにそれはコンテナで、ボンネットの下に動作します。(私は、CPUセットではなく、CPUシェアを理解することができると思い、私はここに振る舞うのスレッドどのように理解していないされているものCPU-株式知っています)。

だから私は読ん記事だったコンテナ内のJava(CloudFoundary上でアプリケーションを実行している間、私が観察している)、3および機能強化コンテナ限度を検出するためのJDK 10に持って来られました。

言った記事の内容:

のは、JVMは、それを実行しているノード上で使用可能なプロセッサ/コアの数に合わせて調整する方法でショートを見てみましょう。デフォルトでは、コア数に基づいて初期化されるパラメータの数が実際にあります。だから、GC-スレッド、JITスレッドなどのためであれば、通常のデフォルト値は「コア」利用可能の合計数です。

さて、もし

number_of_cpusは()/ 1024 cpu_shares()に基づいて計算されます

その後、聞かせてのは、CPUシェアが512であると言うシナリオではこの計算では、(私はその値が1 ??に丸められることを仮定している)0を与えるだろう。どのようにしてこの仕事をしますか?

ユージン:

はい、それはに丸められます1

実装は、下にある./hotspot/os/linux/osContainer_linux.cppと基本的には次のようになります。

share_count = ceilf((float)share / (float)PER_CPU_SHARES);

どこPER_CPU_SHARES = 1024とシェアはあなたの例の通りです512この関数は、になります1

私は非常に必ず私はあなたの編集で正しくあなたを理解していないのですが、cpu-share複数のコンテナが同じOSトライで実行されている事項は、CPUの100%を使用します。、1が持っているあなたが3個のコンテナがあると1024他の2つは持っている、512CPU-株式を。場合は、すべてのそれらの3がCPU時間の100%を取得しようと、これは何が起こるかです:時間の50%が持っているコンテナに行く1024株式を、他のものは、それぞれを取得します25%しかし、再び、これはCPUがのときのみです100%

それが唯一のJIT / GCスレッドに影響を与えます - - そして今JEPが再びことを読んでいない、あなたのアプリケーションスレッドを。それはまだ有効で、コンテナまたは全くコンテナです - あなたは可能性としてあなたはまだそう何でもその記事を示唆して、多くのスレッドを作成することができます。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=209742&siteId=1