亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

挑戰16:被限流的CPU

Kubernetes中的CPU限制并不总是显而易见,这可能会导致延迟突然飙升。

要明白为什么,记得它们是如何运作的很重要。

当你设置一个CPU限制时,你为该进程定义了一个CPU时间配额。

例如,1vCPU 限制相当于每 100 毫秒一个完整的核心。

如果你只用了 0.5 vCPU,那么剩下的就浪费掉了。然而,如果你用不了 1.5 vCPU,当你尝试使用,内核会给你用完整的 1 vCPU,但剩下的 0.5 vCPU 就要等到下一周期(即下一 100 毫秒)用了。

但这还没完。你可以在最初的几毫秒内用光你的CPU分配;如果你还需要更多CPU,你还是得等到下一个周期。

使用线程会让情况变得更复杂,因为每个线程也需要CPU时间。

想象一个有10个线程的过程,每个线程需要0.2vCPU。该过程被限制在一个CPU上。以下哪个说法是对的:

  • 进程不会被限制。
  • 每个线程都可以使用0.1 vCPU,直到它们达到限制。
  • 线程共享1 vCPU的配额。如果总使用量超过1 vCPU,所有线程都会被限流。
  • 以上情况均不适用。
解决办法

正确答案是选项3:线程共享1个vCPU的限制额度。如果总需求超过1个vCPU,它们都会被限流。

这是因为所有线程都由同一个进程创建,而cgroup对进程的限制同样适用。

如果一个线程在最初的10毫秒内使用了1个vCPU的所有可用CPU配额,不仅会用完整个预算,还会...

  • 其他线程在这100毫秒的周期里无法运行,并且它们的运行将被限制。
  • 当前线程也将被限制运行90毫秒(100毫秒减去10毫秒)。

如果你运气不好,在下一个时间片里另一个线程可能会用尽分配给它的CPU时间,导致其他线程饥饿。

你怎么搞定这个?

正确设置CPU限制其实很复杂;在大多数情况下,不设置限制反而更好。如果不设置CPU限制的话,多余的CPU资源就可以被需要的进程利用。

关于是否设定CPU限制,有两篇文章很受欢迎。

如果你喜欢这个,你也会喜欢

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
手記
粉絲
75
獲贊與收藏
404

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消