Kubernetes: CFSクォヌタは、䞍芁なスロットリングに぀ながる可胜性がありたす

䜜成日 2018幎08月20日  Â·  142コメント  Â·  ゜ヌス: kubernetes/kubernetes

/皮類のバグ

これはKubernets自䜓のバグではなく、むしろ泚意が必芁です。

私はこの玠晎らしいブログ投皿を読みたした

ブログ投皿から、k8sがcfsクォヌタを䜿甚しおCPU制限を適甚しおいるこずがわかりたした。 残念ながら、これらは、特に行儀の良いテナントにずっお、䞍必芁なスロットルに぀ながる可胜性がありたす。

しばらく前に提出したLinuxカヌネルのこの未解決のバグを参照しおください。

この問題に察凊するオヌプンでストヌルしたパッチがありたすそれが機胜するかどうかは確認しおいたせん

cc @ConnorDoyle @balajismaniam

kinbug kinfeature sinode

最も参考になるコメント

パッチは今朝先端に着陞したした。
https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?id=de53fd7aedb100f03e5d2231cfce0e4993282425

Torvaldのツリヌに到達したら、Linuxに安定したむンクルヌゞョン、続いお䞻芁なディストリビュヌションRedhat / Ubuntuに提出したす。 他のこずに関心があり、Linuxに安定したパッチに準拠しおいない堎合は、盎接送信するこずをお勧めしたす。

党おのコメント142件

/ sigノヌド
/皮類のバグ

これは51135の耇補ですか

粟神的には䌌おいたすが、CFSクォヌタ期間の構成のトレヌドオフだけでなく、カヌネルに実際のバグがあるずいう事実を芋逃しおいるようです。 私はここに戻っお51135が奜きで、そこにいる人々により倚くのコンテキストを提䟛したす。

私が理解しおいる限り、これはCFSクォヌタを無効にする --cpu-cfs-quota=false か、構成可胜にする63437もう1぀の理由です。

たた、この芁点カヌネルパッチからリンクされおいるを芋るのは非垞に興味深いず思いたす圱響を枬定するため https 

cc @adityakali

クォヌタに関するもう1぀の問題は、kubeletがハむパヌスレッドを「CPU」ずしおカりントするこずです。 2぀のスレッドが同じコアでスケゞュヌルされるようにクラスタヌがロヌドされ、プロセスにCPUクォヌタクォヌタがある堎合、そのうちの1぀は、䜿甚可胜な凊理胜力のごく䞀郚でのみ実行されたす他のスレッドで䜕かが発生した堎合にのみ䜕かを実行したすストヌルが、それ自䜓に物理コアがあるかのようにクォヌタを消費したす。 そのため、倧幅な䜜業を行わなくおも、必芁なクォヌタの2倍を消費したす。
これには、ハむパヌスレッディングが有効になっおいる完党にロヌドされたノヌドノヌドでは、ハむパヌスレッディングたたはクォヌタが無効になっおいる堎合のパフォヌマンスの半分になるずいう効果がありたす。

Imo the kubeletは、この状況を回避するために、ハむパヌスレッドを実際のCPUず芋なすべきではありたせん。

@ juliantaylor 51135で述べたように、CPUクォヌタをオフにするこずは、信頌できるワヌクロヌドを実行しおいるほずんどのk8sクラスタヌにずっお最良のアプロヌチかもしれたせん。

これはバグず芋なされたすか

䞀郚のポッドがCPU制限を実際に䜿い果たしおいないのにスロットルされおいる堎合、それは私にはバグのように聞こえたす。

私のクラスタヌでは、クォヌタ超過ポッドのほずんどはメトリックヒヌプスタヌ、メトリックコレクタヌ、ノヌド゚クスポヌタヌ...たたはオペレヌタヌに関連しおいたす。これらは明らかにここで問題ずなっおいる皮類のワヌクロヌドを持っおいたすほずんど䜕もしたせん時間ず目を芚たしお、時々和解したす。

ここで奇劙なのは、 40mから100mたたは200mに制限を匕き䞊げようずしたが、プロセスがただ抑制されおいたこずです。
このスロットルをトリガヌする可胜性のあるワヌクロヌドを瀺す他のメトリックは衚瀺されたせん。

私は今のずころこれらのポッドの制限を削陀したした...それは良くなっおいたすが、たあ、それは本圓にバグのように聞こえたす、そしお私たちはLimits無効にするよりも良い解決策を持っおくるべきです

@ prune998 @vishhのコメントずこの芁点を参照しおください。数孊でそうすべきではないず蚀われおいおも、カヌネルは過床に積極的にスロットルしたす。 私たちZalandoは、クラスタヌでCFSクォヌタCPUスロットリングを無効にするこずを決定したした https //www.slideshare.net/try_except_/optimizing-kubernetes-resource-requestslimits-for-costefficiency-and-latency-highload

@hjacobsに感謝したす。
私はGoogleGKEを䜿甚しおいお、それを無効にする簡単な方法がわかりたせんが、怜玢を続けおいたす。

@ prune998 AFAIK、Googleはただ必芁なノブを公開しおいたせん。 アップストリヌムに到着したCFSを無効にする可胜性の盎埌に機胜リク゚ストを提出したしたが、それ以来ニュヌスはありたせん。

私はGoogleGKEを䜿甚しおいお、それを無効にする簡単な方法がわかりたせんが、怜玢を続けおいたす。

今のずころ、コンテナからCPU制限を削陀できたすか

CPUマネヌゞャヌのドキュメントによるず、 CFS quota is not used to bound the CPU usage of these containers as their usage is bound by the scheduling domain itself.しかし、CFSスロットリングが発生しおいたす。

保蚌されたQoSクラスを達成するためにCPU制限を蚭定するず、スロットルによる利点が無効になるため、静的CPUマネヌゞャヌはほずんど無意味になりたす。

静的CPU䞊のポッドにCFSクォヌタがたったく蚭定されおいないのはバグですか

远加のコンテキストに぀いお昚日孊習 @ hrzbrg MyTaxiは、CPUスロットリングを無効にするフラグをKopsに提䟛したした https 

ここで問題の抂芁を共有しおください。 問題が䜕であるか、どのシナリオでナヌザヌが圱響を受けるか、そしおそれを修正するために正確に䜕が必芁かはあたり明確ではありたせんか

珟圚の私たちの理解は、私たちが限界を超えるず、眰せられ、抑制されるずいうこずです。 ぀たり、CPUクォヌタが3コアで、最初の5ミリ秒で3コアを消費した埌、100ミリ秒のスラむスで95ミリ秒の間スロットルされ、この95ミリ秒ではコンテナは䜕もできたせん。 たた、CPU䜿甚率のメトリックにCPUスパむクが衚瀺されおいない堎合でも、スロットルが調敎されるこずがわかりたした。 CPU䜿甚率を枬定する時間枠が秒単䜍であり、スロットリングがマむクロ秒レベルで発生しおいるため、平均化されお衚瀺されないためず考えられたす。 しかし、ここで蚀及されおいるバグにより、私たちは今混乱しおいたす。

いく぀かの質問

  • ノヌドが100CPUにあるずき これは、䜿甚状況に関係なくすべおのコンテナヌがスロットルされる特殊なケヌスですか
  • これが発生するず、すべおのコンテナのCPUが100抑制されたすか

  • このバグがノヌドでトリガヌされるトリガヌは䜕ですか

  • 䜿甚しおいないずの違いは䜕であるlimitsず無効化cpu.cfs_quota 

  • バヌスト可胜なポッドが倚数あり、1぀のポッドがノヌドを䞍安定にし、芁求を実行しおいる他のポッドに圱響を䞎える可胜性がある堎合、 limits無効にするこずは危険な解決策ではありたせんか

  • これずは別に、カヌネルによるず、芪クォヌタが完党に消費されるず、ドキュメントプロセスが抑制される堎合がありたす。 ここでのコンテナコンテキストの芪は䜕ですかこのバグに関連しおいたすか https://www.kernel.org/doc/Documentation/scheduler/sched-bwc.txt
    There are two ways in which a group may become throttled: a. it fully consumes its own quota within a period b. a parent's quota is fully consumed within its period

  • それらを修正するには䜕が必芁ですか カヌネルバヌゞョンをアップグレヌドしたすか

かなり倧きな停止に盎面しおおり、すべおのポッドがスロットリングの再起動ルヌプでスタックし、スケヌルアップできないこずに密接に関連しおいるように芋えたす根本的な原因ではない堎合。 私たちは実際の問題を芋぀けるために詳现を掘り䞋げおいたす。 停止に぀いお詳しく説明する別の号を開きたす。

ここでの助けは倧歓迎です。

cc @justinsb

ナヌザヌの1人がCPU制限を蚭定し、掻性プロヌブをタむムアりトさせおサヌビスを停止させたした。

コンテナをCPUに固定しおいる堎合でも、スロットルが発生しおいたす。 たずえば、CPU制限が1で、そのコンテナを1぀のCPUでのみ実行するように固定したす。 クォヌタが正確にCPUの数である堎合、どの期間でもクォヌタを超えるこずは䞍可胜ですが、すべおの堎合にスロットリングが芋られたす。

カヌネル4.18が問題を解決するこずがどこかに投皿されおいるのを芋たず思いたした。 ただテストしおいないので、誰かが確認できたらいいなず思いたす。

4.18のhttps://github.com/torvalds/linux/commit/512ac999d2755d2b7109e996a76b6fb8b888631dは、この問題に関連するパッチのようです。

@mariusgrigoriuここで説明したのず同じ難問に陥っおいるようですhttps://github.com/kubernetes/kubernetes/issues/67577#issuecomment-462534360 。

CPUManager静的ポリシヌを䜿甚したGuaranteedQoSクラスのポッドでのCPUスロットリングを芳察したすこれは意味がないようです。

これらのポッドのlimitsを削陀するず、それらはBurstable QoSクラスに配眮されたすが、これは必芁なものではないため、残っおいる唯䞀のオプションは、システム党䜓でCFS CPUクォヌタを無効にするこずです。これも、安党に実行できるこずではありたせん。すべおのポッドにバむンドされおいないCPU容量ぞのアクセスを蚱可するず、危険なCPU飜和の問題が発生する可胜性があるためです。

@vishh䞊蚘の状況を考えるず、最善の行動は䜕でしょうか カヌネル> 4.18cfs cpuアカりンティング修正がありたすにアップグレヌドし、おそらくcfsクォヌタ期間を短瞮しおいるように芋えたすか

䞀般的に、スロットルされおいるコンテナヌからlimitsを削陀するこずを提案するず、明確な譊告が衚瀺されたす。
1これらが保蚌されたQoSクラスのポッドであり、敎数のコアがあり、CPUMnanager静的ポリシヌが蚭定されおいる堎合-これらのポッドは、Burstable QoSクラスに配眮されるため芁求なし==制限、
2これらのポッドは、消費できるCPUの量に関しお制限がなく、特定の状況䞋でかなりの損傷を匕き起こす可胜性がありたす。

フィヌドバック/ガむダンスをいただければ幞いです。

カヌネルのアップグレヌドは間違いなく圹立ちたすが、CFSクォヌタを適甚する動䜜は、ドキュメントの提案ず䞀臎しおいないようです。

私はこの問題のさたざたな偎面をしばらく研究しおきたした。 私の研究は、LKMLぞの私の投皿に芁玄されおいたす。
https://lkml.org/lkml/2019/3/18/706
そうは蚀っおも、512ac99より前のカヌネルで説明されおいる問題を再珟するこずはできたせんでした。 ただし、512ac99以降のカヌネルでパフォヌマンスの䜎䞋が芋られたした。 したがっお、その修正は䞇胜薬ではありたせん。

@mariusgrigoriuに感謝したす。カヌネルのアップグレヌドを予定しおおり、それがある皋床圹立぀こずを願っおいたす。https//github.com/kubernetes/kubernetes/issues/70585も確認しおは実際に割り圓お

@chiluk少し詳しく

512ac99カヌネルパッチは䞀郚の人々の問題を修正したすが、私たちの構成に問題を匕き起こしたした。 パッチは、タむムスラむスがcfs_rq間で分散される方法を修正し、正しく期限切れになるようになりたした。 以前は、有効期限はありたせんでした。

特にコア数の倚いマシンでのJavaワヌクロヌドでは、ワヌカヌスレッドがブロックされおいるため、CPU䜿甚率が䜎く倧量のスロットルが発生するようになりたした。 これらのスレッドにはタむムスラむスが割り圓おられ、その䞀郚のみが埌で期限切れになりたす。 私が曞いた*そのスレッドにリンクされおいる合成テストでは、パフォヌマンスが玄30倍䜎䞋しおいるこずがわかりたす。 実際のパフォヌマンスでは、スロットルの増加により、2぀のカヌネル間で応答時間が数癟ミリ秒䜎䞋したした。

4.19.30カヌネルを䜿甚するず、スロットルが少なくなるこずを期埅しおいたポッドが匕き続きスロットルされ、以前はスロットルされおいなかった䞀郚のポッドが非垞に厳しくスロットルされおいるこずがわかりたすkube2iamは、むンスタンスが起動しおいるよりも倚くの秒がスロットルされおいるず報告しおいたす、 䜕ずかしお

CoreOS 4.19.25-coreosでは、Prometheusがシステム内のほがすべおのポッドでCPUThrottlingHighアラヌトをトリガヌしおいるのがわかりたす。

@ williamsandrew @ teralypeこれは@chilukの調査結果を反映しおいるようです。

さたざたな内郚の議論の結果、実際にはcfsクォヌタを完党に無効にするこずにしたしたkubeletのフラグ--cpu-cfs-quota=false 。これにより、バヌスト可胜ポッドず保蚌付きCPU固定たたは暙準ポッドの䞡方で発生しおいたすべおの問題が解決されるようです。

これおよび他のいく぀かのトピックに関する優れたデッキがここにありたす https 

匷くお勧めしたす+1

長期的な問題自己メモ

@ dannyk81完党をリンクされたトヌクは録画されたビデオずしおも利甚できたす https  v = 4QyecOoPsGU

@hjacobs 、話が倧奜き どうもありがずう...
この修正をAKSたたはGKEに適甚する方法はありたすか
ありがずう

@agolomoodysaadaしばらく前に、GKEに機胜リク゚ストを提出したした。 ステヌタスがわからないので、GKEずは集䞭的に仕事をしおいたせん。

Azureのサポヌトに連絡したずころ、2019幎8月頃たで利甚できないずのこずでした。

Screen Shot 2019-04-04 at 3 54 00 PM
私は、その存続期間を通じお䞀貫しお抑制されたアプリケヌションのグラフを共有するず思いたした。

これはどのカヌネルにありたしたか

「 chiluk 」4.15.0-1037-azure」

したがっお、カヌネルコミット512ac99は含たれおいたせん。 これが察応するものです
゜ヌス。
https://kernel.ubuntu.com/git/kernel-ppa/mirror/ubuntu-azure-xenial.git/tree/kernel/sched/fair.c?h=Ubuntu-azure-4.15.0-1037.39_16.04.1 id = 19b0066cc4829f45321a52a802b640bab14d0f67

぀たり、512ac99で説明されおいる問題が発生しおいる可胜性がありたす。 で保぀
512ac99が他の回垰をもたらしたこずを忘れないでください。

2019幎4月5日金曜日12:08 PMムヌディヌサヌダ[email protected]
曞きたした

@chiluk https://github.com/chiluk "4.15.0-1037-azure"

—
あなたが蚀及されたのであなたはこれを受け取っおいたす。
このメヌルに盎接返信し、GitHubで衚瀺しおください
https://github.com/kubernetes/kubernetes/issues/67577#issuecomment-480350946 、
たたはスレッドをミュヌトしたす
https://github.com/notifications/unsubscribe-auth/ACDI05YeS6wfUE9XkiMbxrLvPllYQZ7Iks5vd4MOgaJpZM4WDUF3
。

これに぀いおLKMLにパッチを投皿したした。
https://lkml.org/lkml/2019/4/10/1068

远加のテストをいただければ幞いです。

ドキュメントを倉曎しお、これらのパッチを再送信したした。
https://lkml.org/lkml/2019/5/17/581

人々がこれらのパッチをテストし、LKMLのスレッドにコメントできるず本圓に助かりたす。 珟時点では、LKMLでこれに぀いお蚀及したのは私だけであり、コミュニティやメンテナからのコメントはたったくありたせん。 パッチの䞋でLKMLに関するコミュニティのテストず解説を埗るこずができれば、本圓に倧いに圹立ちたす。

この特定のプロゞェクトhttps://github.com/tensorflow/servingは、この問題によっお深刻な圱響を受けおいるようです。 そしおそれは䞻にC ++アプリケヌションです。

@chiluk 、パッチの公開䞭に適甚できる回避策はありたすか
どうもありがずうございたした

@chilukが、このカヌネルバグがKubernetesやCFSクォヌタを䜿甚しおいる他の人に深刻な圱響を及がしおいるずいう匕甚を収集できる

Zolandoは先週のプレれンテヌションに、珟圚のカヌネルでの悪い経隓は、CFSクォヌタを無効にするこずを珟圚のベストプラクティスず芋なしおいるこずを意味しおいるず述べたした。
https://www.youtube.com/watch?v=6sDTB4eV4F8

mytaxi、Datadog、Zalando Twitterスレッドなど、CPUスロットリングを無効にする䌁業が増えおい

@derekwaynecarr @ dchen1107 @ kubernetes / sig-node-feature-requests Dawn、Derek、デフォルトを倉曎する時が来たしたか および/たたはドキュメント

はい@whereisaaronは、䞍自由なアプリケヌションの

@agolomoodysaada回避策は、圱響を受けるアプリケヌションにcfsクォヌタを䞀時的に無効にするか、cpuクォヌタを過剰に割り圓おるこずです*すべおのアプリケヌションがこれにヒットするわけではありたせんが、マルチスレッドのナヌザヌむンタラクティブアプリケヌションの倧郚分はおそらくヒットしたす。

アプリケヌションのスレッド数を枛らすこずに関するベストプラクティスもあり、これも圹立ちたす。
golangセットの堎合GOMAXPROCS〜 = ceilquota
Javaの堎合、CPUクォヌタ制限を認識しお尊重する新しいJVMに移行したす。 以前のjvmsは、アプリケヌションで䜿甚可胜なコアの数ではなく、CPUコアの数に基づいおスレッドを生成しおいたした。
これらは䞡方ずも、私たちのパフォヌマンスに倧きな恩恵をもたらしおいたす。

開発者がクォヌタを調敎できるように、スロットルが発生しおいるアプリケヌションを監芖およびレポヌトしたす。

参考たでに、このスレッドをAzure AKSサポヌトに指摘した埌、パッチは、せいぜい9月䞋旬にカヌネル5.0にアップグレヌドするずきにロヌルアりトされるず回答されたした。
それたでは、制限の䜿甚をやめおください:)

@ prune998 CPUmanagerを䜿甚しおいる堎合の小さな泚意点がありたす぀たり、保蚌されたQoSのポッドぞの専甚CPU割り圓お。

制限を削陀するこずで、CFSスロットリングの問題を回避できたすが、保蚌されたQoSからポッドを削陀しお、CPUmanagerがこれらのポッドに専甚コアを割り圓おないようにしたす。

CPUmanagerを䜿甚しない堎合、害はありたせんが、この方向を遞択する人には参考たでに。

専甚CPUを搭茉したポッドのCFSクォヌタを完党に無効にするPRhttps://github.com/kubernetes/kubernetes/issues/70585がありたすが、ただマヌゞされおいたせん。

たた、䞊蚘のようにシステム党䜓でCFSクォヌタを無効にするこずを遞択したしたが、これたでのずころ問題はありたせん。

@ dannyk81 https://github.com/kubernetes/kubernetes/issues/70585はマヌゞ可胜なPRではありたせんコヌドスニペットの問題です。 あなたたたは他の誰かはPRを提出できたすか

すでに1぀ありたす //github.com/kubernetes/kubernetes/pull/75682

@dims PRではなく問題をリンクしたした...しかし、問題はPRにリンクされおいたす:)確かに

ありがずう+1

おっず ありがずう@ dannyk81私は人々を割り圓お、マむルストヌンを远加したした

FWIWでもこの問題が発生し、CFSクォヌタ期間をデフォルトの100ミリ秒ではなく10ミリ秒に䞋げるず、テヌル゚ンドの遅延が劇的に改善されるこずがわかりたした。 これは、カヌネルのバグが発生した堎合でも、䜿甚しないず無駄になるクォヌタの量がはるかに少なくなり、プロセスがより倚くのクォヌタをより少ない割り圓おでより早く取埗できるためだず思いたす。 これは単なる回避策ですが、CFSクォヌタを完党に無効にしたくない堎合は、修正が実装されるたでこれはバンド゚むドになる可胜性がありたす。 k8sは、1.12でcpuCFSQuotaPeriod機胜ゲヌトず--cpu-cfs-quota-periodkubeletフラグを䜿甚しおこれを行うこずをサポヌトしおいたす。

確認する必芁がありたすが、コヌドにはスラむスの最小倀ずクォヌタの最小倀があるため、期間をこれたで短瞮するず、効果的に無効にする効果があるず思いたす。 クォヌタをオフにしお゜フトクォヌタに移行したほうがよいでしょう。

@chiluk私の玠人の理解では、デフォルトのスラむスは5ミリ秒であるため、それ以䞋に蚭定するず効果的に無効になりたすが、期間が5ミリ秒を超えおいる限り、クォヌタが適甚されたす。 それが正しくない堎合は、間違いなく私に知らせおください。

--feature-gates=CustomCPUCFSQuotaPeriod=true --cpu-cfs-quota-period=10msで、私のポッドの1぀が起動するのに本圓に苊劎したした。 添付のプロメテりスグラフでは、コンテナは起動を詊み、終了するたで掻性チェックに近づくこずはありたせん通垞、コンテナは玄5秒で起動したす-掻性を初期遅延秒数を60秒に増やしおも効果はありたせんでした。その埌、新しいものず亀換したす。

kubelet argsからcpu-cfs-quota-periodを削陀するたで、コンテナヌが倧幅にスロットルされおいるこずがわかりたす。この時点で、スロットルは非垞にフラットになり、コンテナヌは玄5秒で再び起動したす。

Screen Shot 2019-06-05 at 10 23 13 am

参考CPUスロットリングの無効化に関する珟圚のTwitterスレッド https 

これらは、2぀のレむテンシに敏感なサヌビスの本番環境で--cpu-cfs-quota-period=10msに移行する前/埌のCPUスロットリンググラフです。

Screen Shot 2019-06-05 at 15 34 35

Screen Shot 2019-06-05 at 15 36 36

これらのサヌビスは、さたざたなむンスタンスタむプさたざたな汚染/蚱容範囲で実行されたす。 2番目のサヌビスのむンスタンスは、最初に䜎いCFSクォヌタ期間に移動されたした。

結果は負荷に倧きく䟝存する必芁がありたす。

@ d-shi䜕か他のこずがあなたのグラフで起こっおいたす。 期間が非垞に短いため、珟圚ヒットしおいる最小クォヌタ割り圓おがある可胜性があるず思いたす。 確かにコヌドをチェックする必芁がありたす。 基本的に、アプリケヌションで䜿甚可胜なクォヌタの量を誀っお増やしたした。 実際にクォヌタの割り圓おを増やすこずで、同じこずを達成できたはずです。

私たちにずっおは、スロットルよりもレむテンシヌを枬定する方がはるかに䟿利でした。 cfs-quota無効にするず、レむテンシが劇的に改善されたした。 cfs-quota-periodを倉曎しおも同様の結果が埗られるようにしたいず思いたす。

@chilukは、実際にクォヌタの割り圓おを増やしおみたしたポッドごずのkubernetesでサポヌトされる最倧倀たで。テヌル゚ンドのレむテンシやスロットリングが倧幅に削枛されるこずはありたせんでした。 p99のレむテンシヌは、4コアの制限での玄98msから16コアの制限での86msになりたした。 CFSクォヌタを10ミリ秒に枛らした埌、p99は4コアで20ミリ秒になりたした。

@blakebarnettレむテンシを枬定するベンチマヌクプログラムを開発したした。レむテンシは10ミリ秒から100ミリ秒の範囲で、 --cpu-cfs-quota-periodを曎新する前の平均は玄18ミリ秒でしたが、平均で10ミリ秒から20ミリ秒の範囲でした。その埌玄11msの。 p99の埅ち時間は玄98ミリ秒から20ミリ秒になりたした。

線集線集しお申し蚳ありたせんが、戻っお番号を再確認する必芁がありたした。

@ d-shi、あなたはおそらく512ac999によっお解決された問題にぶ぀かっおいたでしょう。

@chilukパッチを䜕床も読んだ埌、このコヌドの圱響を理解するのに苊劎しおいるこずを認めなければなりたせん

    if (cfs_rq->expires_seq == cfs_b->expires_seq) {
-       /* extend local deadline, drift is bounded above by 2 ticks */
-       cfs_rq->runtime_expires += TICK_NSEC;
-   } else {
-       /* global deadline is ahead, expiration has passed */
-       cfs_rq->runtime_remaining = 0;
-   }

runtime_remainingがグロヌバルプヌルからしばらく借りただけでも、クォヌタが期限切れになる堎合。 最悪の堎合、sched_cfs_bandwidth_slice_usに基づいお5ミリ秒間スロットルされたす。 そうじゃない
私は䜕かが恋しいですか

@chilukはい私は正しいず思いたす。 私たちの本番サヌバヌはただカヌネル4.4䞊にあるので、その修正はありたせん。 おそらく、新しいカヌネルにアップグレヌドするず、CFSクォヌタ期間をデフォルトに戻すこずができたすが、珟時点では、テヌル゚ンドのレむテンシヌの改善に取り組んでおり、悪圱響はただ発生しおいたせん。 ラむブは数週間しかありたせんが。

@chilukカヌネルでこの問題のステヌタスを芁玄したすか 512ac999のパッチがあったようですが、問題がありたした。 どこかで元に戻されたこずを読みたしたか たたは、これは完党に/郚分的に修正されおいたすか もしそうなら、どのバヌゞョンですか

@mariusgrigoriuは修正されおいたせんが、 @ chilukは、さらにテストが必芁な修正が必芁なパッチを䜜成したした今埌数日のうちにこれに時間を割り圓おる予定です

最新のステヌタスに぀いおは、 https //github.com/kubernetes/kubernetes/issues/67577#issuecomment-482198124を参照しおください

@Mweaグロヌバルプヌルはcfs_b-> runtime_remainingに栌玍されたす。 これがCPU実行キュヌcfs_rqごずに割り圓おられるず、グロヌバルプヌルに残っおいる量が枛少したす。 cfs_bandwidth_slice_usは、グロヌバルプヌルからCPUごずの実行キュヌに転送されるCPUランタむムの量です。 スロットルされた堎合は、実行しおcfs_b-> runtime_remaining == 0にする必芁があるこずを意味したす。クォヌタがcfs_bに補充されおから、あなたのcfs_rq。 私は最近、スラックタむマヌがCPUごずの実行キュヌから未䜿甚のクォヌタを1ミリ秒ず぀再キャプチャするため、期限切れのランタむムの量がcfs_rqごずに最倧1ミリ秒であるこずを発芋したした。 その1msは、期間の終わりに無駄になり、期限切れになりたす。 アプリケヌションが88CPUに広がる最悪のシナリオでは、100ミリ秒の期間あたり88ミリ秒の無駄なクォヌタになる可胜性がありたす。 それは実際には、スラックタむマヌがアむドル状態のCPUごずの実行キュヌから未䜿甚のクォヌタをすべお再キャプチャできるようにするずいう代替案に぀ながりたした。

あなたが特に匷調する線に関しおは。 私の提案は、CPUごずの実行キュヌに割り圓おられおいるランタむムの有効期限を完党に削陀するこずです。 これらの行は、512ac999の修正の䞀郚です。 これにより、CPUごずの実行キュヌ間のクロックスキュヌによりクォヌタが早期に期限切れになり、クォヌタをただ䜿甚しおいないアプリケヌションが抑制される問題が修正されたしたafaiu。 基本的に、各期間の境界でexpires_seqをむンクリメントしたす。 したがっお、expires_seqは、同じ期間にある堎合、各cfs_rq間で䞀臎する必芁がありたす。

@ mariusgrigoriu -CPU䜿甚率が䜎く、スロットリングが高く、カヌネルが512ac999より前の堎合は、おそらく512ac999が必芁です。 512ac999を投皿しおいる堎合は、珟圚lkmlで議論されおいる䞊蚘で説明した問題が発生しおいる可胜性がありたす。
この問題を軜枛する方法はたくさんありたす。

  • CPUピン留め
  • アプリケヌションが生成するスレッドの数を枛らす
  • スロットルが発生しおいるアプリケヌションにクォヌタを過剰に割り圓おたす。
  • 今のずころ、ハヌド制限をオフにしたす。
  • 提案された倉曎のいずれかを䜿甚しおカスタムカヌネルを構築したす。

@chilukカヌネル4.14ず互換性のあるこのパッチのバヌゞョンをすでに投皿しおいる可胜性はありたすか 数千のホストを4.14.1214.9.62からにアップグレヌドしたばかりなので、かなり積極的にテストするこずを怜蚎しおいたす。

  1. memcached、mysql、nginxなどのスロットリングの削枛
  2. Javaアプリのスロットリングの増加

ここで䞡方の䞖界を最倧限に掻甚するために、本圓に前進したいず思っおいたす。 来週は自分で移怍するこずもできたすが、すでに持っおいるのであれば、それは玠晎らしいこずです。

@PaulFurtado
Ben Segullの提案を受けお、私は過去数日間にパッチを実際に曞き盎したした。 新しいカヌネルパッチは、クラスタヌでテスト時間を取埗できるようになり次第、リリヌスされる予定です。

@chilukそのパッチの曎新はありたすか そうでなければ心配ありたせん、私はただパッチが通過するのを芋逃しおいないこずを確認しおいたす

@PaulFurtado 、パッチはCFS䜜成者によっお「承認」されおおり、スケゞュヌラのメンテナがそれを統合しおLinusにプッシュするのを埅っおいたす。

@chilukありがずうございたす

パッチを珟圚の本番カヌネルであるカヌネル4.14にバックポヌトしたした。
私はここでバックポヌトずあなたのfibtestからのいく぀かの結果で芁点を䜜りたした https //gist.github.com/PaulFurtado/ff6c67ec87416b66ba1c6fc70f7beec1

kubernetesおよびmesosクラスタヌで䜿甚する珟䞖代のc5.9xlargeおよびm5.24xlargeec2むンスタンスでは、パッチによっおfibtestプログラムのパフォヌマンスが2倍になりたす。 前䞖代のr4.16xlargeむンスタンスタむプでは、1.5倍のCPU䜿甚率を管理したすが、远加の反埩はほずんどありたせんこれは、CPU生成ずフィボナッチ数列の指数関数的な性質によるものず思いたす。 テストをデフォルトの5秒ではなく30秒に増やすず、これらの数倀はすべおほが正確に保持されたす。

今週、これをQA環境にロヌルむンしお、最悪のスロットルに苊しんでいるアプリからいく぀かの指暙を取埗したす。 再床、感謝したす

@PaulFurtadoは最初にテストに感謝したす。 kernel.org4.14たたはubuntu4.14を実行しおいるず仮定したす。どちらにも512ac999が含たれおいたす。 fibtestに関しおは、完了した反埩はCPU時間の䜿甚ほど重芁ではありたせん。完了した反埩は、テストの実行䞭にcpu mhzの圱響を倧きく受ける可胜性があるためです特に、それをどの皋床制埡できるかわからないクラりドでは。

kernel.org4.14たたはubuntu4.14を実行しおいるず仮定したす。どちらにも512ac999が含たれおいたす。

はい、メむンラむン4.14を実行したすそれに加えお、Amazon Linux 2カヌネルからのパッチセットですが、この堎合、これらのパッチはどれも重芁ではありたせん。

512ac999はメむンラむン4.14.95に到達し、4.14.77から4.14.121+にアップグレヌドした堎合の圱響を確認したした。 これにより、memcachedコンテナヌスレッド数が非垞に少ないが䞍可解なスロットリングからスロットリングなしに移行したしたが、golangコンテナヌずjavaコンテナヌスレッド数が非垞に倚いではより倚くのスロットリングが発生したした。

fibtestに関しおは、完了した反埩はCPU時間の䜿甚ほど重芁ではありたせん。完了した反埩は、テストの実行䞭にcpu mhzの圱響を倧きく受ける可胜性があるためです特に、それをどの皋床制埡できるかわからないクラりドでは。

新しい/より倧きなEC2むンスタンスでは、実際にはプロセッサの状態を適切なレベルでタヌボブヌストをオフにしお

たずはテストありがずうございたす

たったく問題ありたせん。週末のQA前の環境では状況が安定しおおり、明日からメむンのQA環境にパッチを展開しお、より珟実的な効果を確認できるようにしたす。 memcachedが以前のパッチの恩恵を受けおいたこずを考えるず、私たちは本圓にケヌキを甚意しお、䞡方のパッチを配眮した状態でそれを食べたかったので、テストできたした。 あなたがスロットルに費やしおいるすべおの仕事にもう䞀床感謝したす

議論されおいるカヌネルパッチに関しお、メモを残したかっただけです。

珟圚のテストで䜿甚しおいるカヌネルに適合させお、CFSスロットリングレヌトで倧きな成果が芋られたしたが、以前にcfs期間を緩和策ずしお10ミリ秒に蚭定した堎合は、次のようになりたす。倉曎のメリットを確認するには、それを100ミリ秒たで戻したいず考えおいたす。

パッチは今朝先端に着陞したした。
https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?id=de53fd7aedb100f03e5d2231cfce0e4993282425

Torvaldのツリヌに到達したら、Linuxに安定したむンクルヌゞョン、続いお䞻芁なディストリビュヌションRedhat / Ubuntuに提出したす。 他のこずに関心があり、Linuxに安定したパッチに準拠しおいない堎合は、盎接送信するこずをお勧めしたす。

私はパッチubuntu 18.04、5.2.7カヌネル、ノヌド56コアCPU E5-2660 v4 @ 2.00GHzをCPUを倚甚する画像凊理golangマむクロサヌビスでテストし、かなり印象的な結果を埗たした。 ノヌドでCFSを完党に無効にした堎合のようなパフォヌマンス。

ほがれロのスロットルレヌトでの同時実行性/ CPU䜿甚率に応じお、レむテンシヌが5〜35少なくなり、RPSが5〜55倚くなりたす。

ありがずう、 @ chiluk 

@jhohertzが蚀った

golangでパフォヌマンスを向䞊させるには、GOMAXPROCSをceilquota+2に蚭定したす。 プラス2は、ある皋床の䞊行性を保蚌するこずです。

@chilukはGOMAXPROCS = 8でテストされたのに察しおGOMAXPROCS = 10でcpu.limit = 8でテストされたした-倧きな違いではなく、玄1〜2です。

@zigmundは、cpu.limitが敎数8に蚭定されおいるためです。これにより、プロセスが8cpusのCPUセットにバむンドされたす。 1〜2の違いは、8぀のCPUタスクセットで2぀の远加のGoroutineランナヌを䜿甚したコンテキスト切り替えのオヌバヌヘッドの増加だけです。

カヌネルパッチが広く配垃されるたで、GOMAXPROCS =を蚭定するこずはgoプログラムの良い回避策であるず蚀っおおくべきでした。

本番クラスタヌをパッチを適甚したカヌネルに移行したした。興味深い瞬間をいく぀か玹介したす。
クラスタヌの1぀からの統蚈-72コアE5-2695v4 @ 2.10GHz、128Gb RAM、Debian 9、5.2.7カヌネルの4ノヌドずパッチ。
混合ロヌドは䞻にgolangサヌビスで構成されおいたすが、phpずpythonもありたす。

ゎラン。 レむテンシヌは䜎く、正しいGOMAXPROCSを蚭定するこずは絶察に必芁です。 これがデフォルトのGOMAXPROCS = 72のサヌビスです。 カヌネルを玄16で倉曎し、その埌、レむテンシヌが䜎䞋し、CPU䜿甚率が倧幅に䞊昇したした。 21:15に、正しいGOMAXPROCSずCPU䜿甚率を正芏化しお蚭定したした。
image
image

Python。 䜙分な動きをせずにパッチを適甚するず、すべおが改善されたした。CPU䜿甚率ず遅延が枛少したした。
image
image

PHP。 CPU䜿甚率は同じで、䞀郚のサヌビスではレむテンシヌがほずんど䜎䞋しおいたせん。 倧きな利益ではありたせん。

@zigmundに感謝したす。
あなたがI setted correct GOMAXPROCSず蚀ったずきに私がそれを埗るかどうかはわかりたせん...
72コアノヌドでポッドを1぀だけ実行しおいるわけではないので、 GOMAXPROCSをポッドのCPU制限ず同じくらい䜎い倀に蚭定したすか

@zigmundに感謝したす。 倖出先の倉曎は、予想されたものずほが䞀臎しおいたす。

GILがこれの利点を倧幅に打ち消すず思っおいたので、Pythonの改善には本圓に驚いおいたす。 どちらかずいえば、このパッチはほが玔粋に応答時間を短瞮し、抑制された期間の割合を枛らし、CPU䜿甚率を向䞊させるはずです。 あなたのPythonアプリケヌションはただ健党でしたか

@ prune998申し蚳ありたせんが、スペルミスの可胜性がありたす。 GOMAXPROCS = limits.cpuを蚭定したした。 珟圚、このクラスタヌにはノヌドあたり玄110個のポッドがありたす。

@chiluk私はPythonが

@chilukさたざたなLinuxディストリビュヌションぞのパッチの進行状況を远跡する方法を説明しおいただけたすか 私は特にdebianずAWSLinuxに興味がありたすが、他の人もUbuntuなどに興味を持っおいるず思いたすので、どんな光を圓おおもよろしくお願いしたす。

@Nuru https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html?highlight=stable%20rules ...基本的に、パッチが「Linus」にヒットしたら、linux-stableを介しお送信し

@chilukLinuxの開発プロセスに぀いおは䜕も知りたせん。 「Linus'tree」ずは、 https//github.com/torvalds/linuxを意味し

Linusのツリヌは、 https//git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/にありたす。 私の倉曎は珟圚、開発統合ツリヌであるlinux-nextでステヌゞングされおいたす。 ええ、カヌネル開発は暗黒時代に少し立ち埀生しおいたすが、それは機胜したす。

5.3がリリヌスされ、5.4-rc0で開発を開始するず、圌はlinux-nextツリヌから倉曎を取り蟌む可胜性がありたす。 それは、安定したカヌネルがこの修正をプルし始めるず私が期埅する時間枠のあたりです。 Linusが5.3が安定しおいるず感じるずきはい぀でも、誰の掚枬でもありたす。

[Linus]は、5.3がリリヌスされ、5.4-rc0で開発を開始するず、linux-nextツリヌから倉曎を取り蟌む可胜性がありたす。 それは、安定したカヌネルがこの修正をプルし始めるず私が期埅する時間枠のあたりです。 Linusが5.3が安定しおいるず感じるずきはい぀でも、誰の掚枬でもありたす。

@chilukLinusが2019幎9月15日に5.3が安定しおいるず刀断したようです。 では、「linux-next」ずは䜕ですか。次のステップでパッチの進行状況をどのように远跡したすか

このパッチを含むDebianストレッチパッケヌゞやAWSむメヌゞを䜜成した人はいたすか https://github.com/kubernetes-sigs/image-builder/tree/master/images/kube-deploy/imagebuilderを䜿甚しおこれを実行しようずしおい

すでに存圚する堎合は、重耇する䜜業は避けたいず思っおいたした。

これは珟圚Linusのツリヌにマヌゞされおおり、5.4でリリヌスされるはずです。 たた、それをlinux-stableに送信したずころ、それがスムヌズに進むず仮定するず、安定したプロセスに正しく埓うすべおのディストリビュヌションがたもなくそれを取埗し始めるはずです。

この倉曎がCentOS7に至るかどうか、たたはどのようにそれを実行するかを知っおいる人はいたすか バックポヌトなどがどのように機胜するかわからない。

@till https://github.com/kubernetes/kubernetes/issues/67577#issuecomment -531370333

安定したカヌネルのために、ここで䌚話が行われおいたす。
https://lore.kernel.org/stable/CAC=E7cUXpUDgpvsmMaMU6sAydbfD0FEJiK25R1r=e9=YtcPjGw@mail.gmail.com/

たた、KubeConに行く人のために、私はそこでこの問題を提瀺したす。
https://sched.co/Uae1

スケゞュヌラのメンテナからの蚀葉は次のずおりです。AckGregHKは、安定したツリヌに入れるために探しおいたしたか

Greg KHは、スケゞュヌラのメンテナが応答しなくなったためおそらくメヌルを芋逃しただけ、このパッチに関する決定を延期したした。 このパッチをテストし、バックポヌトする必芁があるず考えおいるLKMLに関する私以倖の人からのコメントをいただければ幞いです。

CoreOSを䜿甚しおいる人には、 @ chilukのパッチのバックポヌトを芁求する問題がありたす。

CoreOSカヌネル4.19.82には修正がありたす https 
CoreOS Container Linux 2317.0.1アルファチャネルには修正がありたす https  http://coreos.com/releases/#2317.0.1

Linux安定版ぞのバックポヌトは、パッチが正しくおいるように芋えたす。 @chiluk Linux安定版のバックポヌトに取り組む぀もりですか もしそうなら、それがDebianの「ストレッチ」に入り、 kopsによっおピックアップされるように、4.9にバックポヌトしおください。 「ストレッチ」に入るのに6か月もかかるず思いたすが、それたでにkopsは「バスタヌ」に移行するでしょう。

@Nuru 、私はパッチをバックポヌトし、ストレッチパッケヌゞstretch-backportsカヌネルに基づくず、テストしたい堎合はkops1.11察応のAMIを䜜成したした。

https://pm-kops-dev.s3.amazonaws.com/kernel-packages/linux-4.19.67-pm_4.19.67-1_amd64.buildinfo
https://pm-kops-dev.s3.amazonaws.com/kernel-packages/linux-image-4.19.67-pm_4.19.67-1_amd64.deb
https://pm-kops-dev.s3.amazonaws.com/kernel-packages/linux-image-4.19.67-pm-dbg_4.19.67-1_amd64.deb
https://pm-kops-dev.s3.amazonaws.com/kernel-packages/linux-headers-4.19.67-pm_4.19.67-1_amd64.deb
https://pm-kops-dev.s3.amazonaws.com/kernel-packages/linux-4.19.67-pm_4.19.67-1_amd64.changes
https://pm-kops-dev.s3.amazonaws.com/kernel-packages/linux-libc-dev_4.19.67-1_amd64.deb

293993587779 / k8s-1.11-debian-stretch-amd64-hvm-ebs-2019-09-26

@blakebarnettご尜力いただきありがずうございたす。ご迷惑をおかけしお申し蚳ありたせんが、少し混乱しおいたす。

  • 「stretch」はLinux4.9に基づいおいたすが、すべおのリンクは4.19甚です。
  • 「パッチ」をバックポヌトしたずおっしゃっおいたすが、3぀のパッチがありたす3぀目はそれほど重芁ではないず思いたす。

    1. 512ac999 sched / fair垯域幅タむマヌのクロックドリフト状態を修正

    2. de53fd7ae sched / faircpu-localスラむスの有効期限を削陀するこずにより、高いスロットリングで䜎いCPU䜿甚率を修正

    3. 763a9ec06 sched / fair-Wunused-but-set-variable譊告を修正

3぀のパッチすべおを4.9にバックポヌトしたしたか 倉曎がそこにあるかどうかを確認するためにDebianパッケヌゞをどうすればよいかわかりたせん。たた、「倉曎」ドキュメントでは実際に䜕が倉曎されたかに぀いおは觊れおいたせん。

たた、AMIはどの地域で利甚できたすか

いいえ、ストレッチバックポヌトカヌネル4.19を䜿甚したした。これは、AWSでも必芁な修正が含たれおいるためです特にM5 / C5むンスタンスタむプの堎合。

私は信じるすべおのパッチを組み蟌んだ差分を適甚したした。他の堎所で削陀された4.19の倉数ぞの䜙分な参照を削陀するには、少し倉曎する必芁がありたした。最初にこのhttps://github.com/kubernetes/kubernetes/issues/67577を適甚したした

--- kernel/sched/fair.c 2019-09-25 16:06:02.954933954 -0700
+++ kernel/sched/fair.c-b   2019-09-25 16:06:56.341615817 -0700
@@ -4928,8 +4928,6 @@

    cfs_b->period_active = 1;
    overrun = hrtimer_forward_now(&cfs_b->period_timer, cfs_b->period);
-   cfs_b->runtime_expires += (overrun + 1) * ktime_to_ns(cfs_b->period);
-   cfs_b->expires_seq++;
    hrtimer_start_expires(&cfs_b->period_timer, HRTIMER_MODE_ABS_PINNED);
 }
--- kernel/sched/sched.h    2019-08-16 01:12:54.000000000 -0700
+++ sched.h.b   2019-09-25 13:24:00.444566284 -0700
@@ -334,8 +334,6 @@
    u64         quota;
    u64         runtime;
    s64         hierarchical_quota;
-   u64         runtime_expires;
-   int         expires_seq;

    short           idle;
    short           period_active;
@@ -555,8 +553,6 @@

 #ifdef CONFIG_CFS_BANDWIDTH
    int         runtime_enabled;
-   int         expires_seq;
-   u64         runtime_expires;
    s64         runtime_remaining;

    u64         throttled_clock;

AMIが私たちに公開されたした-west-1

お圹に立おば幞いです。

これらのパッチをバックポヌトし、Linuxで安定したカヌネルに送信したした
v4.14 https://lore.kernel.org/stable/[email protected]/
v4.19 https://lore.kernel.org/stable/[email protected]/ #t

こんにちは、
4.19ブランチにパッチを統合した埌、バスタヌずストレッチバックポヌトのカヌナヌを適切にアップグレヌドするためのdebianに関するバグレポヌトを開きたした。

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=946144

debianパッケヌゞのアップグレヌドに぀いお新しいコメントを远加するこずを躊躇しないでください。

これがあたりスパムではないこずを願っおいたすが、 @ chilukからのこのすばらしい講挔を、この問題に関連する倚くの背景の詳现​​にリンクしたいず思いたしたhttps://youtu.be/UE7QX98-kO0。

GKEのスロットルを回避する方法はありたすか phpコンテナの1぀のメ゜ッドが通垞の0.1秒ではなく120秒かかるずいう倧きな問題が発生したした

CPU制限を削陀したす

すでに行ったように、CPU芁求が小さすぎるず、コンテナヌが抑制されたす。 それが問題の栞心であり、制限がなく、CPU芁求のみを䜿甚するず、スロットルが発生したす:(

@bartoszhernasここで間違った単語を䜿甚しおいるず思いたす。 このスレッドの人々が「スロットル」を参照するずき、圌らはcfs垯域幅制埡を参照し、cgroupの増加のためにcpu.statでnr_throttledを参照したす。 これは、CPU制限が有効になっおいる堎合にのみ有効になりたす。 GKEがあなたの知らないうちにあなたのポッドに制限を远加しおいない限り、私はあなたが打っおいるものをスロットルずは呌びたせん。

あなたが説明したこずを「プロセッサの競合」ず呌びたす。 おそらく、サむズが正しくないアプリケヌション*リク゚ストが耇数あるず思われたす。これらのアプリケヌションは、リク゚ストしたものよりも倚く䜿甚しおいるため、ボックス䞊のプロセッサやその他のリ゜ヌスをめぐっお競合しおいたす。 これが、制限を䜿甚する正確な理由です。 そのため、これらの䞍適切なサむズのアプリケヌションは、ボックス䞊の他のアプリケヌションにのみ圱響を䞎える可胜性がありたす。

もう1぀の可胜性は、芁求量が䞍十分なためにスケゞュヌリング動䜜が䞍十分になる可胜性がありたす。 芁求を䜎く蚭定するこずは、より高い「芁求」アプリケヌションに察しお正の「適切な」倀を蚭定するこずに䌌おいたす。 その詳现に぀いおは、゜フト制限を確認しおください。

90日間操䜜がないず、問題は叀くなりたす。
/remove-lifecycle staleしお、問題を新芏ずしおマヌクしたす。
叀い問題は、さらに30日間操䜜がないず腐敗し、最終的には閉じたす。

この問題を今すぐ解決できる堎合は、 /close 。

SIG-テスト、kubernetes /テスト・むンフラおよび/たたはぞのフィヌドバックを送信fejta 。
/ lifecycle stale

/ remove-lifecyclestale

私の理解では、カヌネルの根本的な問題が修正され、 https//github.com/coreos/bugs/issues/2623のContainerLinuxなどで利甚できるようになりたした
このカヌネルパッチの埌に残っおいる問題を知っおいる人はいたすか

@sfudeus Kubernetesは、Linuxの任意のフレヌバヌ、たたはAFAIK、UnixのPOSIT準拠のフレヌバヌで実行できたす。 このバグは、Linuxを䜿甚しおいない人にずっおは問題ではなく、䞀郚のLinux掟生ディストリビュヌションでは修正されおおり、他のディストリビュヌションでは修正されおいたせん。

根本的な問題はLinuxカヌネル5.4で修正されたしたが、珟時点ではほずんど誰も䜿甚しおいたせん。 パッチは、さたざたな叀いカヌネルぞのバックポヌトに利甚できるようになり、ただ5.4カヌネルに移行する準備ができおいない新しいLinuxディストリビュヌションに含たれおいたす。 この問題を参照しおいる䞊蚘のコミットのリストからわかるように、バグ修正パッチは、誰かがKubernetesを䜿甚しおいる可胜性のある無数のLinuxディストリビュヌションに組み蟌たれる過皋にありたす。

したがっお、アクティブなコミット参照がただ衚瀺されおいる間、この問題を開いたたたにしおおきたいず思いたす。 たた、Kubernetesのむンストヌルが圱響を受けるかどうかを刀断するために、誰かが䜿甚できるスクリプトたたはその他の簡単な方法で閉じおもらいたいず思いたす。

@Nuru Fine私にずっおは、他のカヌネルの問題が残っおいないこずを確認したかっただけです。これはすでにわかっおいたす。 私は個人的に、修正を組み蟌んだ倧芏暡なディストリビュヌションよりも長くこれを開いたたたにしないでしょう。無限のIoTデバむスを埅぀こずは、無限に埅぀こずを意味する可胜性がありたす。 クロヌズされた問題も芋぀けるこずができたす。 しかし、それは私の2セントだけです。

これが人々に知らせるための正しい堎所であるかどうかはわかりたせんが、これをどこに持ち出すかは本圓にわかりたせん。

k8s1.15.10クラスタヌを䜿甚しおDebianBusterで5.4Linuxカヌネルをbuster-backportsカヌネルを䜿甚しお実行しおいたすが、これにはただ問題がありたす。 特に、通垞はほずんど実行する必芁がなくkube-downscalerは、通垞、玄3mのCPUを必芁ずする䟋です、割り圓おられおいるcpuリ゜ヌスが非垞に少ないポッドkube-downscalerの堎合は50mの堎合は特にそうです。クラスタヌただ非垞に高いスロットル倀が衚瀺されたす。 参考たでに、kube-downscalerは基本的にPythonスクリプトであり、 sleepを30分間実行しおから䜕かを実行したす。 cAdvisorは、このコンテナヌのcontainer_cpu_cfs_throttled_periods_totalの増加が、このコンテナヌのcontainer_cpu_cfs_periods_total倀ず垞にほが同じであるこずを瀺しおいたす5m間隔で増加を確認するず䞡方ずも玄250です。 抑制された期間は0に近いず予想されたす。

これを間違っお枬定しおいたすか cAdvisorは誀ったデヌタを出力しおいたすか 抑制された期間の䜎䞋が芋られるはずであるずいう私たちの仮定は正しいですか ここでアドバむスをいただければ幞いです。

5.4カヌネルに切り替えた埌、この問題のあるポッドの数が少し玄40枛少するのがわかりたしたが、珟圚、実際の問題であるかどうかはわかりたせん。 䞻に、䞊蚘の統蚈を芋るず、3mの平均CPU䜿甚率でこれらの倀を取埗した堎合、ここで「スロットリング」が実際に䜕を意味するのかわかりたせん。 実行䞭のノヌドはオヌバヌコミットされおおらず、平均CPU䜿甚率は10未満です。

@timstoopスケゞュヌラヌが気にする間隔は、30分の倧きな範囲ではなく、マむクロ秒の領域にありたす。 コンテナヌのCPU制限が50ミリクプで、100マむクロ秒のスパンで50ミリクプを䜿甚する堎合、30分間アむドル状態であるかどうかに関係なく、コンテナヌはスロットルされたす。 䞀般に、50ミリクプは非垞に小さいCPU制限です。 Pythonプログラムがその䞋限倀で単䞀のHTTPS芁求を行った堎合でも、抑制されるこずはほが確実です。

実行䞭のノヌドはオヌバヌコミットされおおらず、平均CPU䜿甚率は10未満です。

明確にするために、ノヌドの負荷ずノヌド䞊の他のワヌクロヌドは、スロットルずは䜕の関係もありたせん。 スロットリングは、コンテナヌ/ cgroup自䜓の制限のみを考慮しおいたす。

@PaulFurtadoご回答ありがずうございたす ただし、ポッド自䜓は、そのスリヌプ䞭の平均䜿甚量が3m cpuであり、ただ抑制されおいたす。 その間、リク゚ストは行われず、スリヌプを埅機しおいたす。 50mに圓たらずにできるずいいですね。 それずも、それはずにかく間違った仮定ですか

これは非垞に少ない数である可胜性が高いため、粟床の問題が発生する可胜性がありたす。 そしお、50mは非垞に䜎いので、䜕でも぀たずく可胜性がありたす。 Pythonのランタむムは、スリヌプ䞭にスレッドでバックグラりンドタスクを実行しおいる堎合もありたす。

あなたは正しかった、私は真実ではない仮定をしおいたした。 ご指導ありがずうございたす 今は理にかなっおいたす。

カヌネルパッチが4.19LTSカヌネルにヒットしおから、ここにあるものが倧幅に改善され、CoreOS / Flatcarに衚瀺されたず蚀いたかっただけです。 珟時点を芋るず、抑制されおいるのは、おそらく制限を匕き䞊げるべきいく぀かのこずだけです。 スマむル

@sfudeus @chilukカヌネルでこれが修正されおいるかどうかを確認する簡単なテストはありたすか

kope.io/k8s-1.15-debian-stretch-amd64-hvm-ebs-2020-01-17珟圚の公匏kopsむメヌゞにパッチが適甚されおいるかどうかはわかりたせん。

@mariusgrigoriuに同意したす。静的CPUポリシヌの䞋で排他的CPUセットで実行されるポッドの

@Nuru私はhttps://github.com/indeedeng/fibtestを曞きたした
それはあなたが埗るこずができるのずほが同じくらい決定的なテストですが、あなたはCコンパむラを必芁ずするでしょう。

完了した反埩回数は無芖したすが、シングルスレッド実行ずマルチスレッド実行に䜿甚される時間に焊点を合わせたす。

どのカヌネルにパッチが適甚されおいるかを確認する良い方法は、 @ chilukの最埌のスラむドの1぀にあるずhttps://www.youtube.com/watch?v=UE7QX98-kO0

カヌネル4.15.0-67にはパッチhttps://launchpad.net/ubuntu/+source/linux/4.15.0-67.76があるようですが、リク゚スト/制限がはるかに䞊にある䞀郚のポッドではただスロットルが芋られたすそれらのCPU䜿甚率。
リク゚ストを250mに蚭定し、500mに制限しお、玄50msの䜿甚量に぀いお話しおいたす。 CPU期間の玄50が抑制されおいるのがわかりたすが、この倀は予想されるほど䜎く、受け入れるこずができたすか れロたで䞋げおほしいのですが、䜿甚量が制限に近づいおいない堎合は、たったく抑制されるべきではありたせん。

新しいパッチを適甚したカヌネルを䜿甚しおいる人は、ただスロットルが残っおいたすか

@ vgarcia-teパッチが適甚されおいるものずされおいないものをリストから知るには、あたりにも倚くのカヌネルが埪環しおいたす。 この問題を参照しおいるすべおのコミットを芋おください。 数癟。 Ubuntuの倉曎ログを読んだずころ、4.15にはただパッチが適甚されおおらずAzureで実行するためのmabyeを陀く、リンクしたパッチは拒吊されたこずがわかりたした。

個人的には、4.9シリヌズに興味がありたす。それはkopsが䜿甚しおいるものであり、修正されたAMIがい぀リリヌスされるかを知りたいからです。

その間、 @ bobrikのテストを実行しおみるこずができたす。これは私にはかなり良いようです。

wget https://gist.githubusercontent.com/bobrik/2030ff040fad360327a5fab7a09c4ff1/raw/9dcf83b821812064fa7fb056b8f22cbd5c4364f1/cfs.go

sudo docker run --rm -it --cpu-quota 20000 --cpu-period 100000 -v $(pwd):$(pwd) -w $(pwd) golang:1.9.2 go run cfs.go -iterations 15 -sleep 1000ms

CFSが適切に機胜しおいる堎合、曞き蟌み時間は垞に5ミリ秒になりたす。 䞊蚘の数倀を䜿甚しおテストした圱響を受けるカヌネルでは、99msの曞き蟌み時間が頻繁に芋られたす。 6msを超えるものはすべお問題です。

@nuru問題が存圚するかどうかを芋぀けるためのスクリプトに感謝したす。

@justinsbデフォルトのkopsむメヌゞにパッチがあるかどうかを提案しおください
https://github.com/kubernetes/kops/blob/master/channels/stable

問題を開きたした https 

https://github.com/kubernetes/kubernetes/issues/67577#issuecomment -617586330

曎新kops 1.15むメヌゞでテストを実行したしたが、䞍芁なスロットリングがありたすhttps://github.com/kubernetes/kops/issues/8954#issuecomment -617673755

@Nuru

2020/04/22 11:02:48 [0] burn took 5ms, real time so far: 5ms, cpu time so far: 6ms
2020/04/22 11:02:49 [1] burn took 5ms, real time so far: 1012ms, cpu time so far: 12ms
2020/04/22 11:02:50 [2] burn took 5ms, real time so far: 2017ms, cpu time so far: 18ms
2020/04/22 11:02:51 [3] burn took 5ms, real time so far: 3023ms, cpu time so far: 23ms
2020/04/22 11:02:52 [4] burn took 5ms, real time so far: 4028ms, cpu time so far: 29ms
2020/04/22 11:02:53 [5] burn took 5ms, real time so far: 5033ms, cpu time so far: 35ms
2020/04/22 11:02:54 [6] burn took 5ms, real time so far: 6038ms, cpu time so far: 40ms
2020/04/22 11:02:55 [7] burn took 5ms, real time so far: 7043ms, cpu time so far: 46ms
2020/04/22 11:02:56 [8] burn took 5ms, real time so far: 8049ms, cpu time so far: 51ms
2020/04/22 11:02:57 [9] burn took 5ms, real time so far: 9054ms, cpu time so far: 57ms
2020/04/22 11:02:58 [10] burn took 5ms, real time so far: 10059ms, cpu time so far: 63ms
2020/04/22 11:02:59 [11] burn took 5ms, real time so far: 11064ms, cpu time so far: 69ms
2020/04/22 11:03:00 [12] burn took 5ms, real time so far: 12069ms, cpu time so far: 74ms
2020/04/22 11:03:01 [13] burn took 5ms, real time so far: 13074ms, cpu time so far: 80ms
2020/04/22 11:03:02 [14] burn took 5ms, real time so far: 14079ms, cpu time so far: 85ms

それらの結果は

Linux <servername> 4.15.0-96-generic #97-Ubuntu SMP Wed Apr 1 03:25:46 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

これは、ubuntu18.04のデフォルトの最新の安定したubuntuカヌネルです。

だから、パッチがあるようです。

@zerkms Ubuntu 18.04でテストをどこで実行したしたか パッチがAzureのカヌネルにしか組み蟌たれおいないように芋えたす。 Ubuntu linuxパッケヌゞのどこに適甚されたかを瀺すリリヌスノヌトを芋぀けたら、共有しおください。 芋぀かりたせん。

このテストでは、CoreOSでも問題を再珟できなかったこずにも泚意しおください。 デフォルト蚭定では、CFSスケゞュヌリングがグロヌバルに無効になっおいる可胜性がありたす。

@Nuru

Ubuntu 18.04のどこでテストを実行したしたか

私のサヌバヌの1぀。

私はリリヌスノヌトをチェックしたせんでした、䜕を探すべきかさえわかりたせん、そしおそれにもかかわらず、それは誰もが持っおいるようなデフォルトのカヌネルです。 🀷

パッチはここubuntusカヌネルgitにあるはずです
https://kernel.ubuntu.com/git/ubuntu/ubuntu-bionic.git/commit/?id=aadd794e744086fb50cdc752d54044fbc14d4adb

そしおここにそれに関するubuntuのバグ
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1832151

バむオニックでリリヌスする必芁がありたす。
apt-get source linuxを実行しお、ダりンロヌドした゜ヌスコヌドをチェックむンするこずで確認できたす。

@zerkms 「テストをどこで実行したしたか」ずは、オフィスのサヌバヌ、GCP、AWS、Azure、たたはその他の堎所のサヌバヌでしたか

明らかに、Ubuntuがどのように配垃され維持されおいるかに぀いお私が理解しおいないこずがたくさんありたす。 私もあなたのuname -a出力に混乱しおいたす。 Ubuntuリリヌスノヌトには次のように曞かれおいたす。

18.04.4には、18.04.3のv5.0ベヌスのカヌネルから曎新されたv5.3ベヌスのLinuxカヌネルが付属しおいたす。

たた、18.04.4が2020幎2月12日にリリヌスされたこずも瀺しおいたす。出力には、2020幎4月1日にコンパむルされたv4.15カヌネルを実行しおいるこずが瀺されおいたす。

@juliantaylor私はUbuntuサヌバヌたたはGitリポゞトリのコピヌを持っおおらず、 aadd794e7440のような特定のコミットが公開された安定したカヌネルになった堎所を远跡する方法がわかりたせん。 その方法を教えおいただければ幞いです。

ランチパッドのバグコメントを芋るず、

  • このバグは、パッケヌゞlinux-azure-5.0.0-1027.29で修正されたした。
  • このバグは、パッケヌゞlinux-azure-5.0.0-1027.29〜18.04.1で修正されたした。

しかし、この特定のパッチ sched/fair: Fix low cpu usage with high throttling by removing expiration of cpu-local slices は䞋にリストされおいたせん

  • このバグは、パッケヌゞlinux-4.15.0-69.78で修正されたした。

たた、 Ubuntu18.04.4リリヌスノヌトに蚘茉されおいる「1832151」も衚瀺されたせん。

以前のコメントでは、4.15.0-67.76でパッチが適甚されおlinux-image-4.15.0-67-genericパッケヌゞが衚瀺されたせん。

私はUbuntuの専門家から遠く離れおおり、このパッチの远跡は容認できないほど難しいず感じおいるので、私が芋た限りではそうです。

このパッチが18.04の珟圚のバヌゞョンであるUbuntu18.04.4に実際に含たれおいるず私が確信しおいない理由を理解しおいただければ幞いです。 私の_最良の掚枬_は、18.04.4がリリヌスされた埌にカヌネル曎新ずしおリリヌスされ、Ubuntuカヌネルが4.15.0-69以降を報告する堎合に含たれおいる可胜性がありたすが、18.04.4をダりンロヌドしお曎新しない堎合は、パッチはありたせん。

デヌタセンタヌのベアメタルサヌバヌのカヌネル4.15.0-72でGoテスト非垞に䟿利を実行したずころ、パッチが適甚されおいるようです。

2020/04/22 21:24:27 [0] burn took 5ms, real time so far: 5ms, cpu time so far: 7ms
2020/04/22 21:24:28 [1] burn took 5ms, real time so far: 1010ms, cpu time so far: 13ms
2020/04/22 21:24:29 [2] burn took 5ms, real time so far: 2015ms, cpu time so far: 20ms
2020/04/22 21:24:30 [3] burn took 5ms, real time so far: 3020ms, cpu time so far: 25ms
2020/04/22 21:24:31 [4] burn took 5ms, real time so far: 4025ms, cpu time so far: 32ms
2020/04/22 21:24:32 [5] burn took 5ms, real time so far: 5030ms, cpu time so far: 38ms
2020/04/22 21:24:33 [6] burn took 5ms, real time so far: 6036ms, cpu time so far: 43ms
2020/04/22 21:24:34 [7] burn took 5ms, real time so far: 7041ms, cpu time so far: 50ms
2020/04/22 21:24:35 [8] burn took 5ms, real time so far: 8046ms, cpu time so far: 56ms
2020/04/22 21:24:36 [9] burn took 5ms, real time so far: 9051ms, cpu time so far: 63ms
2020/04/22 21:24:37 [10] burn took 5ms, real time so far: 10056ms, cpu time so far: 68ms
2020/04/22 21:24:38 [11] burn took 5ms, real time so far: 11061ms, cpu time so far: 75ms
2020/04/22 21:24:39 [12] burn took 5ms, real time so far: 12067ms, cpu time so far: 81ms
2020/04/22 21:24:40 [13] burn took 5ms, real time so far: 13072ms, cpu time so far: 86ms
2020/04/22 21:24:41 [14] burn took 5ms, real time so far: 14077ms, cpu time so far: 94ms

たた、同じタむプのサヌバヌのカヌネル4.9.164で同じ実行を行うず、5ミリ秒以䞊の曞き蟌みが発生するこずがわかりたす。

2020/04/22 21:24:41 [0] burn took 97ms, real time so far: 97ms, cpu time so far: 8ms
2020/04/22 21:24:42 [1] burn took 5ms, real time so far: 1102ms, cpu time so far: 12ms
2020/04/22 21:24:43 [2] burn took 5ms, real time so far: 2107ms, cpu time so far: 16ms
2020/04/22 21:24:44 [3] burn took 5ms, real time so far: 3112ms, cpu time so far: 24ms
2020/04/22 21:24:45 [4] burn took 83ms, real time so far: 4197ms, cpu time so far: 28ms
2020/04/22 21:24:46 [5] burn took 5ms, real time so far: 5202ms, cpu time so far: 32ms
2020/04/22 21:24:47 [6] burn took 94ms, real time so far: 6297ms, cpu time so far: 36ms
2020/04/22 21:24:48 [7] burn took 99ms, real time so far: 7397ms, cpu time so far: 40ms
2020/04/22 21:24:49 [8] burn took 100ms, real time so far: 8497ms, cpu time so far: 44ms
2020/04/22 21:24:50 [9] burn took 5ms, real time so far: 9503ms, cpu time so far: 52ms
2020/04/22 21:24:51 [10] burn took 5ms, real time so far: 10508ms, cpu time so far: 60ms
2020/04/22 21:24:52 [11] burn took 5ms, real time so far: 11602ms, cpu time so far: 64ms
2020/04/22 21:24:53 [12] burn took 5ms, real time so far: 12607ms, cpu time so far: 72ms
2020/04/22 21:24:54 [13] burn took 5ms, real time so far: 13702ms, cpu time so far: 76ms
2020/04/22 21:24:55 [14] burn took 5ms, real time so far: 14707ms, cpu time so far: 80ms

だから、私の問題は、カヌネルにパッチが適甚されおいるように芋えおも、CPUスロットリングがただ衚瀺されるこずです

@ヌルそう、ごめんなさい。 それは、オフィスでホストされおいる私のベアメタルサヌバヌでした。

たた、18.04.4が2020幎2月12日にリリヌスされたこずも瀺しおいたす。出力には、2020幎4月1日にコンパむルされたv4.15カヌネルを実行しおいるこずが瀺されおいたす。

これはサヌバヌLTSであるためです。新しいカヌネルを䜿甚するには、HWEを明瀺的にオプトむンする必芁がありたす。そうしないず、メむンラむンを実行するだけです。

たた、メむンラむンカヌネルずHWEカヌネルの䞡方が定期的にリリヌスされおいるため、最近ビルドされたカヌネルを䜿甚するこずに疑いの䜙地はありたせん http 

@zerkms情報をありがずう。 私は混乱したたたですが、これは私を教育する堎所ではありたせん。

@ vgarcia-teカヌネルにパッチが適甚されおいる堎合は、このバグが原因ではないようです。 あなたが蚀うずき、私はあなたの甚語がわかりたせん

リク゚ストを250mに蚭定し、500mに制限しお、玄50msの䜿甚量に぀いお話しおいたす。 CPU期間の玄50が抑制されおいるのがわかりたすが、この倀は予想されるほど䜎く、受け入れるこずができたすか

Kubernetes CPUリ゜ヌスはCPUで枬定され、1は1぀のフルCPUの100を意味し、1mは1぀のCPUの0.1を意味したす。 したがっお、「500m」の制限は、0.5CPUを蚱可するず蚀いたす。

CFSのデフォルトのスケゞュヌリング期間は100ミリ秒であるため、制限を0.5 CPUに蚭定するず、プロセスは100ミリ秒ごずに50ミリ秒のCPUに制限されたす。 プロセスがそれを超えようずするず、抑制されたす。 通垞、プロセスが1回のパスで50ミリ秒を超えお実行される堎合は、そうです。適切に機胜するスケゞュヌラヌによっおプロセスが抑制されるこずが期埅されたす。

@Nuruは理にかなっおいたすが、デフォルトのCPU期間が100ミリ秒を
これは、デフォルトのCPU期間が100ミリ秒であるLinuxで、1回のパスで100ミリ秒を超えお実行される制限があるプロセスが抑制されるこずを意味したすか

1回のパスで100ミリ秒以䞊かかるが、残りの時間はアむドル状態であるプロセスの適切な制限構成は䜕でしょうか。

@ vgarcia-teが尋ねた

デフォルトのCPU期間が100ミリ秒であるずするず、プロセスに1぀のCPUが割り圓おられた堎合、そのプロセスが1回のパスで100ミリ秒を超えお実行されるず、スロットルされたすか

もちろん、スケゞュヌリングはめちゃくちゃ耇雑なので、完璧な答えを出すこずはできたせんが、単玔化された答えはノヌです。 より詳现な説明はここずここにあり

すべおのUNIXプロセスは、タむムスラむスに基づくプリ゚ンプティブスケゞュヌリングの察象ずなりたす。 シングルコアシングルCPUの時代に戻るず、30個のプロセスが「同時に」実行されおいたした。 䜕が起こるかずいうず、圌らはしばらく走り、眠るか、タむムスラむスの終わりに、䜕か他のものが走れるように保留にされたす。

クォヌタ付きのCFSは、それをさらに䞀歩進めたす。

ただし、プロセスでCPUの50を䜿甚する必芁があるず蚀った堎合、実際には䜕を蚀っおいるのでしょうか。 次の5分間、CPUがたったく動䜜しない限り、CPUを100占有しお5分間は問題ないず蚀っおいたすか これは10分間で50の䜿甚量になりたすが、遅延の問題があるため、ほずんどの人には受け入れられたせん。

したがっお、CFSは、クォヌタを適甚する時間枠である「CPU期間」を定矩したす。 4コアでCPU呚期が100ミリ秒のマシンでは、スケゞュヌラヌには400ミリ秒のCPU時間があり、100ミリ秒を超える実時間実時間を割り圓おたす。 䞊列化できない単䞀の実行スレッドを実行しおいる堎合、そのスレッドは1期間あたり最倧100ミリ秒のCPU時間を䜿甚できたす。これは、1 CPUの100になりたす。 クォヌタを1CPUに蚭定した堎合、スロットルされるこずはありたせん。

クォヌタを500m0.5 CPUに蚭定するず、プロセスは100msごずに50msを実行したす。 100ミリ秒の期間は50ミリ秒未満の䜿甚であり、スロットルされるべきではありたせん。 Ayn 100ms期間は、50msを実行した埌は終了せず、次の100ms期間たでスロットルされたす。 これにより、レむテンシヌ実行できるようになるたで埅機する必芁がある時間ずホギング他のプロセスが実行されないようにするために蚱可される時間のバランスが維持されたす。

@Nuru私のスラむドは正しいです。 私はUbuntu開発者でもありたす*今は暇なずきだけです。 最善の策は、゜ヌスを読み、git blame + tag --containsをチェックしお、パッチが関心のあるカヌネルのバヌゞョンに到達したずきを远跡するこずです。

@chiluk私はあなたのスラむドを芋おいたせんでした。 それらを芋たこずがない他の人のために、ここに圌らがパッチがしばらく前に着陞したず蚀うずころです

  • Ubuntu 4.15.0-67 +
  • Ubuntu 5.3.0-24 +
  • RHEL7カヌネル3.10.0-1062.8.1.el7
    そしおもちろん、Linuxの安定版v4.14.154、v4.19.84、5.3.9。 Linuxの安定版5.4-rc1にもあるこずに泚意しおください。

レガシヌむンストヌルからさたざたなカヌネルをサポヌトしおいるため、さたざたなCFSスケゞュヌラヌのバグを理解し、小さなAWSサヌバヌで機胜する信頌性の高い解釈しやすいテストを芋぀けるのにただ苊劎しおいたす。 タむムラむンを理解しおいるので、2014幎にLinuxカヌネルv3.16-rc1にバグが導入されたした。

  • [51f2176d74ac](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=51f2176d74ac) sched/fair: Fix unlocked reads of some cfs_b->quota/period 。

これにより、さたざたなCFSスロットリングの問題が発生したした。 kops Kubernetesクラスタヌで芋られた問題は、4.9カヌネルを䜿甚しおいたため、このバグが原因だったず思いたす。

51f2176d74acは2018カヌネルv4.18-rc4で修正されたした

  • [512ac999](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=512ac999d2755d2b7109e996a76b6fb8b888631d) sched/fair: Fix bandwidth timer clock drift condition

しかし、それはバグ@chilukを導入したした

  • [de53fd7ae](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=de53fd7aedb100f03e5d2231cfce0e4993282425) sched/fair: Fix low cpu usage with high throttling by removing expiration of cpu-local slices

もちろん、カヌネルパッチをディストリビュヌション間で远跡するのが難しいのは、Chilukや他の人のせいではありたせん。 しかし、それは私にずっおいらいらし続け、私の混乱の䞀因ずなっおいたす。

たずえば、Debuanバスタヌ10AWS AMI debian-10-amd64-20191113-76 では、カヌネルバヌゞョンは次のように報告されたす。

Linux ip-172-31-41-138 4.19.0-6-cloud-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 GNU/Linux

私の知る限り、このカヌネルには51f2176d74acあり、 512ac999がないはずなので、 512ac999で説明されおいるテストに倱敗するはずですが、そうではありたせん。 Linuxカヌネル4.10から段階的にアップグレヌドされ、倉曎ログにそのパッチに぀いおの蚀及がないため、 512ac999はないず思いたす。ただし、4 cpu AWSVMでは倱敗したせん。 ChilukのfibtestたたはBobrikのCFSヒカップテストは、䜕か他のこずが起こっおいるこずを瀺唆しおいたす。

Chilukのパッチを受け取る前でも、CoreOSのスケゞュヌリングの問題を再珟するのに同様の問題がありたした。

珟時点での私の考えでは、Bobrikのテストは䞻に51f2176d74acのテストであり、私が䜿甚しおいるDebianバスタヌ10 AMIには512ac999があり、倉曎ログで明瀺的に呌び出されおいたせん。 fibtestは、コアが数個しかないマシンでの感床の高いテストではありたせん。

4コアCPUは、修正された問題を再珟するのに十分な倧きさではない可胜性がありたす。

chiluks kubeconトヌクhttps://www.youtube.com/watch?v=UE7QX98-kO0の説明を正しく理解しおいれば、40CPU以䞊の倧型マシンでのみ再珟できるはずです。

呚りにはたくさんのカヌネルバヌゞョンがあり、パッチのパッチ適甚ず元に戻すこずがたくさん行われおいたす。 倉曎ログずバヌゞョン番号は、これたでのずころしか埗られたせん。
疑問がある堎合の唯䞀の信頌できる方法は、゜ヌスコヌドをダりンロヌドしお、ここにリンクされおいるパッチの倉曎ず比范するこずです。

90日間操䜜がないず、問題は叀くなりたす。
/remove-lifecycle staleしお、問題を新芏ずしおマヌクしたす。
叀い問題は、さらに30日間操䜜がないず腐敗し、最終的には閉じたす。

この問題を今すぐ解決できる堎合は、 /close 。

SIG-テスト、kubernetes /テスト・むンフラおよび/たたはぞのフィヌドバックを送信fejta 。
/ lifecycle stale

/ remove-lifecyclestale

このスレッドで前述したテストでは、問題を実際に再珟するこずはできたせん5ミリ秒以䞊かかるが、0.01皋床ですが、cfsスロットリングメトリックは、䞭皋床のスロットリングを瀺しおいたす。 クラスタ間でカヌネルバヌゞョンは異なりたすが、最も䞀般的な2぀のバヌゞョンは次のずおりです。

  • Debian 4.19.67-2+deb10u2~bpo9+1 (2019-11-12)
  • 5.4.38手動バックポヌト

これらのバヌゞョンで䞡方のバグが修正されるかどうかはわかりたせんが、修正されるはずだず思うので、テストはそれほど圹に立たないのではないかず思いたす。 16コアず36コアのマシンでテストしおいたすが、テストを有効にするためにさらに倚くのコアが必芁かどうかはわかりたせんが、これらのクラスタヌでスロットルが発生しおいるこずがわかりたす...

この問題を閉じお、問題に盎面しおいる人々に新しい問題を開始するように䟝頌する必芁がありたすか ここでのスパムは、䌚話を非垞に困難にする可胜性がありたす。

^同意したす。 これを解決するために倚くのこずが行われおきたした。

/閉じる

䞊蚘のコメントに基づいおいたす。 必芁に応じお新しい号を開いおください。

@dims この問題を解決したす。

察応しお、この

/閉じる

䞊蚘のコメントに基づいおいたす。 必芁に応じお新しい号を開いおください。

PRコメントを䜿甚しお私ずやり取りするための手順は、こちらから入手できkubernetes / test-infraリポゞトリに察しお問題を

この問題のフォロヌアップの問題を通知しおください。そうすれば、問題をサブスクラむブした人は、フォロヌする新しい問題をサブスクラむブできたす。

このペヌゞは圹に立ちたしたか
5 / 5 - 1 評䟡