国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

添加K8S CPU limit會降低服務(wù)性能?

云計算 云原生
谷歌的最佳實踐告訴你,重要服務(wù)一定要配置 Guaranteed 的,這樣在資源不足的時候可以保證你的重要服務(wù)不被驅(qū)逐。

眾所周知,Kubernetes QOS 分為三個級別:

  • Guaranteed:Pod 里的每個容器都必須有內(nèi)存/CPU 限制和請求,而且值必須相等。如果一個容器只指明limit而未設(shè)定request,則request的值等于limit值。
  • Burstable:Pod 里至少有一個容器有內(nèi)存或者 CPU 請求且不滿足 Guarantee 等級的要求,即內(nèi)存/CPU 的值設(shè)置的不同。
  • BestEffort:容器必須沒有任何內(nèi)存或者 CPU 的限制或請求。

谷歌的最佳實踐告訴你,重要服務(wù)一定要配置 Guaranteed 的,這樣在資源不足的時候可以保證你的重要服務(wù)不被驅(qū)逐。

最佳實踐要求你這樣配置是從運維和后期運營的角度來說的,團隊剛起步,不設(shè)置資源請求和限制的情況下基本可以正常工作,但隨著團隊和項目的增長,您將開始遇到穩(wěn)定性問題。服務(wù)之間相互影響,這時候可能需要為服務(wù)添加限制,并且可以讓您免于遇到許多令人頭疼的問題。

這里我們應(yīng)該已經(jīng)清楚,通過遵循最佳實踐,使整個集群具有更大的靈活性和可靠性。

但是當(dāng)涉及到 CPU 限制時,事情就變得有趣了。CPU 是可壓縮資源。如果您的應(yīng)用開始達到 CPU 限制,Kubernetes 就會開始限制您的容器。這意味著 CPU 將受到人為限制,使您的應(yīng)用程序性能可能更差!

1. 為什么會這樣呢?

因為當(dāng)你在容器編排器中設(shè)置硬 CPU 限制時,內(nèi)核使用完全公平調(diào)度程序 (CFS) Cgroup來強制執(zhí)行這些限制。CFS Cgroup 機制使用兩個設(shè)置來管理 CPU 分配:配額和周期。當(dāng)應(yīng)用程序在給定時間段內(nèi)使用超過其分配的 CPU 配額時,它會受到限制,直到下一個時間段。

cgroup 的所有 CPU 指標都位于??/sys/fs/cgroup/cpu,cpuacct/<container>??. 配額和期間設(shè)置位于??cpu.cfs_quota_us??和中??cpu.cfs_period_us??

您還可以查看限制指標 cpu.stat。在里面 cpu.stat 你會發(fā)現(xiàn):

  • nr_periods– cgroup 任何線程可運行的周期數(shù)
  • nr_throttled– 應(yīng)用程序使用其全部配額并受到限制的可運行周期數(shù)
  • throttled_time– 控制 cgroup 中各個線程的總時間

2. 舉個簡單的例子

單線程應(yīng)用程序在具有 cgroup 約束的 CPU 上運行。此應(yīng)用程序需要 200 毫秒的處理時間來完成一個請求。不受約束,它的響應(yīng)看起來如下圖。

沒有配置限制的請求

現(xiàn)在,假設(shè)我們?yōu)閼?yīng)用程序分配了 0.4 CPU 的 CPU 限制。這意味著應(yīng)用程序每 100 毫秒周期獲得 40 毫秒的運行時間——即使這些時間 CPU 沒有其他工作要做。200 毫秒的請求現(xiàn)在需要 440 毫秒才能完成。

配置限制的請求

這個時候你查看下所在容器路徑下的 cpu.stat throttled_time 你會發(fā)現(xiàn)被限制了 240ms(對于每 100 毫秒的周期,應(yīng)用程序只能運行 40 毫秒,并被限制 60 毫秒。它已被限制了 4 個周期,因此 4 * 60 = 240 毫秒。)

換一個通俗點的說法,當(dāng)您要求 1 個 CPU 時,這意味著您的應(yīng)用程序每秒可以使用 1 個 CPU 內(nèi)核。如果它是一個單線程,它將能夠一直使用一個內(nèi)核。但是,如果它有 2 個線程,則每秒可以無限制地使用 2 個核心秒。因此,有了這個限制,它可以在 1/2 秒內(nèi)完全使用 2 個核心,然后會受到限制。(雖然這并不是真正以秒為單位來衡量的,實際是us,但我發(fā)現(xiàn)這樣更容易理解)。

看到這里,你可能會說,這只是一種約束,超出范圍的資源,就是不能使用,否則將被限制。

3. 是否存在不必要的限制

并沒有這么簡單,很多人反饋遭到了不必要的 cgroup 限制,甚至還沒有 CPU 上限,這里有激烈的討論:

  1. ????https://github.com/kubernetes/kubernetes/issues/67577????
  2. ????https://github.com/kubernetes/kubernetes/issues/51135????
  3. ????https://github.com/kubernetes/kubernetes/issues/70585????
  4. ????https://github.com/kubernetes/kubernetes/pull/75682????

運行容器時要檢查的關(guān)鍵指標是throttling. 這表明您的容器被限制的次數(shù)。我們發(fā)現(xiàn)很多容器無論 CPU 使用率是否接近極限都會受到限制。如下一個熱心網(wǎng)友反饋的案例:

在動畫中可以看到 CPU 限制設(shè)置為800m(0.8 個核心,80% 的核心),峰值使用率最高為200m(20% 的核心)。看到之后,我們可能會認為我們有足夠的 CPU 讓服務(wù)在它節(jié)流之前運行,對吧?. 現(xiàn)在看看這個:

即使 CPU 使用率低于 CPU 限制,您也會注意到發(fā)生了 CPU 限制。最大 CPU 使用率甚至沒有接近 CPU 限制。

限制就意味著服務(wù)性能下降和延遲增高。

4. 什么原因?qū)е碌哪兀?/span>

本質(zhì)上來說,這個問題是 linux 內(nèi)核導(dǎo)致,具體可以看下這個視頻:????https://www.youtube.com/watch?v=UE7QX98-kO0????

這個視頻大概意思是這樣的。

這里有一個多線程守護進程的例子,它有兩個工作線程,每個工作線程都固定在自己的核心上。如下圖,第一個圖顯示了 cgroup 在一段時間內(nèi)的全局配額。這從 20ms 的配額開始,這與 0.2 CPU 相關(guān)。中間的圖表顯示分配給每個 CPU 隊列的配額,底部的圖表顯示實際工作線程在其 CPU 上運行的時間。

在 10 毫秒:

  • Worker 1 收到了一個請求。
  • 一部分配額從全局配額轉(zhuǎn)移到 CPU 1 的每個 CPU 隊列。
  • Worker 1 需要 5ms 來處理和響應(yīng)請求。

在 17 毫秒:

  • Worker 2 收到了一個請求。
  • 一部分配額從全局配額轉(zhuǎn)移到 CPU 2 的每個 CPU 隊列。

Worker 1 需要精確 5 毫秒來響應(yīng)請求的機會是非常不現(xiàn)實的。如果請求需要其他一些處理時間會發(fā)生什么?

在 30 毫秒:

  • Worker 1 收到了一個請求。
  • Worker 1 只需要 1 毫秒來處理請求,而 CPU 1 的每個 CPU 存儲桶上還剩下 4 毫秒。
  • 由于每個 CPU 運行隊列上還有剩余時間,但 CPU 1 上沒有更多可運行線程,因此設(shè)置了一個計時器以將 slack 配額返回給全局存儲桶。這個定時器在worker 1停止運行后設(shè)置為7ms。

在 38 毫秒:

  • CPU 1 上設(shè)置的 slack 計時器觸發(fā)并將除 1 ms 之外的所有配額返回到全局配額池。
  • 這會在 CPU 1 上留下 1 毫秒的配額。

在 41 毫秒:

  • Worker 2 收到一個長請求。
  • 所有剩余時間都從全局存儲桶轉(zhuǎn)移到 CPU 2 的 per-CPU 存儲桶,Worker 2 使用所有時間。

在 49 毫秒:

  • CPU 2 上的 Worker 2 現(xiàn)在在未完成請求的情況下受到限制。
  • 盡管 CPU 1 仍有 1ms 的配額,但仍會發(fā)生這種情況。

雖然 1 毫秒可能對雙核機器沒有太大影響,但這些毫秒在高核數(shù)機器上加起來。如果我們在 88 核 (n) 機器上遇到此行為,我們可能會在每個周期內(nèi)耗費 87 (n-1) 毫秒。那可能無法使用的 87 毫秒或 0.87 CPU(每個Container)。這就是我們通過過度節(jié)流來達到低配額使用的方式。在最好的情況下,如果修復(fù),使受影響的應(yīng)用程序的每個實例的可用 CPU 增加 0.87,或者所需的 CPU 配額相應(yīng)減少。這些優(yōu)勢將在我們的集群中提高應(yīng)用程序密度并縮短應(yīng)用程序響應(yīng)時間。

當(dāng) 8 核和 10 核機器這個問題基本上沒有引起注意。現(xiàn)在核心數(shù)量風(fēng)靡一時,這個問題變得更加明顯。這就是為什么我們注意到在更高核心數(shù)的機器上運行同一應(yīng)用程序時會增加限制。

總結(jié)來說,時鐘偏差限制問題,這導(dǎo)致每個時期的配額都受到嚴格限制。這個問題一直是存在的,至少自提交 512ac999 和內(nèi)核 v4.18 以來,它就是這樣工作的。

5. linux 內(nèi)核是如何解決這個問題

當(dāng)且僅當(dāng)每個 CPU 的過期時間與全局過期時間匹配時,預(yù)補丁代碼才會在運行時過期??cfs_rq->runtime_expires != cfs_b->runtime_expires??。通過檢測內(nèi)核,我證明了這種情況在我的節(jié)點上幾乎從未出現(xiàn)過。因此,那 1 毫秒永不過期。該補丁將此邏輯從基于時鐘時間更改為周期序列計數(shù),解決了內(nèi)核中長期存在的錯誤。代碼如下:

- if (cfs_rq->runtime_expires != cfs_b->runtime_expires) { 
+ if (cfs_rq->expires_seq == cfs_b->expires_seq) { 
               /* 延長本地期限,漂移以 2 個滴答為界 */ 
                cfs_rq->runtime_expires + = TICK_NSEC
       } else { 
                /* 全局截止日期提前,過期已過 */ 
                cfs_rq->runtime_remaining = 0
        }

修改問題 5.4+ 主線內(nèi)核的一部分。它們已被反向移植到許多可用的內(nèi)核中:

  1. RHEL 7: 3.10.0–1062.8.1.el7+
  2. RHEL 8: 4.18.0–147.2.1.el8_1+
  • Linux-stable: 4.14.154+, 4.19.84+, 5.3.9+
  • Ubuntu: 4.15.0–67+, 5.3.0–24+
  • Redhat Enterprise Linux:
  • CoreOS: v4.19.84+

該錯誤????https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=763a9ec06c4????已被修復(fù)并合并到運行 4.19 或更高版本的 Linux 發(fā)行版的內(nèi)核中。

但是,在閱讀kubernetes issue時????https://github.com/kubernetes/kubernetes/issues/67577????,我們可以看到各種 Linux 項目一直在引用這個 issue,所以我猜一些 Linux 發(fā)行版仍然存在這個 bug,并且正在努力整合修復(fù)。

如果你的 Linux 發(fā)行版的內(nèi)核版本低于 4.19,我建議你為你的節(jié)點升級到最新的 Linux 發(fā)行版,但無論如何,你應(yīng)該嘗試移除 CPU 限制并查看是否有任何限制.

6. 總結(jié)

監(jiān)控你的容器,是否因為 throttle 而導(dǎo)致的性能不佳,如果確實發(fā)生了,最好通過分批升級內(nèi)核版本解決,如果無法升級,可以通過方式解決:

解除限制(個人覺得這個并不是一個好主意)

  • 有性能要求的 Pod 調(diào)度到帶特定污點的節(jié)點;
  • 對這些 Pod 刪除 CPU 限制,可以考慮在 namespace 級別添加限制。

增加資源

另外 CPU throttle 節(jié)流主要是因為 CPU 限制較低。它的限制影響 Cgroup 的行為。因此,一個快速解決該問題的方法是根據(jù)監(jiān)控將限值提高 10-25%,以確保降低峰值或完全避免峰值。

自動擴容

因為將 CPU 請求和限制設(shè)置為相同的值通常會給人們他們所期望的行為,解決此問題的簡單方法是將 CPU 請求和限制設(shè)置為相同的值并添加 HPA。讓 Pod 根據(jù)負載進行自動擴縮容。

責(zé)任編輯:張燕妮 來源: 云原生技術(shù)愛好者社區(qū)
相關(guān)推薦

2023-08-03 08:36:30

Service服務(wù)架構(gòu)

2022-04-22 13:32:01

K8s容器引擎架構(gòu)

2009-11-05 10:45:58

WCF服務(wù)

2021-03-11 12:31:33

K8sCoreDNSDNS服務(wù)器

2023-11-06 07:16:22

WasmK8s模塊

2022-06-01 08:00:58

KubernetesCPULinux

2011-07-19 10:46:49

Windows 7優(yōu)化

2023-03-08 18:43:50

GPU模型隔離

2023-09-06 08:12:04

k8s云原生

2012-12-24 09:55:15

JavaJava WebJava優(yōu)化

2023-09-08 08:09:12

k8sservice服務(wù)

2024-12-02 10:00:15

2010-01-08 09:43:23

SQL Server分Analysis Se

2023-08-04 08:19:02

2023-05-25 21:38:30

2020-05-12 10:20:39

K8s kubernetes中間件

2022-09-05 08:26:29

Kubernetes標簽

2021-06-30 10:16:54

微服務(wù)架構(gòu)測試

2019-09-05 09:10:35

KafkaK8SKubernetes

2023-04-12 11:28:36

Kubernetes服務(wù)器
點贊
收藏

51CTO技術(shù)棧公眾號

亚洲aⅴ网站| 图片区亚洲欧美小说区| 亚洲免费观看高清| 久久久久久久久影视| 91精品国产成人观看| 色先锋资源久久综合5566| 香蕉久久aⅴ一区二区三区| 黄动漫视频高清在线| 久久99国产精品免费网站| 91黄在线观看| 日韩激情毛片| 久久6免费高清热精品| 日本免费一级视频| 免费亚洲一区| 91精品国产91久久久久青草| 国产a久久精品一区二区三区| 欧美激情在线一区| 国产精品毛片无码| 日韩午夜在线视频| 亚洲成人福利在线观看| 国产麻豆精品在线观看| 欧美韩国日本精品一区二区三区| 国产国产精品| 国产精品久久久久999| 欧美天堂一区| 日日摸夜夜添一区| 欧美三级网址| 一夜七次郎国产精品亚洲| 欧美日韩视频网站| 亚洲欧美中文日韩在线| 国产精品论坛| 亚洲免费精彩视频| 青青热久免费精品视频在线18| 在线亚洲午夜片av大片| 黄色漫画在线免费看| 欧美成人在线直播| 国内福利写真片视频在线| 午夜精品福利一区二区三区av| 亚洲热app| 欧美精品一卡两卡| 8x8ⅹ拨牐拨牐拨牐在线观看| 亚洲男人天天操| 亚洲人成777| 91极品视频在线| 97精品一区二区| 国产精品嫩草在线观看| 久久久人人人| wwwwww欧美| 国产亚洲欧美激情| 国产日本韩国在线播放| 日韩欧美中文在线| 菠萝菠萝蜜在线视频免费观看| 亚洲国产成人精品久久| 九九热这里有精品| 68精品久久久久久欧美| 激情另类综合| 18禁裸男晨勃露j毛免费观看| 国产精品乱人伦一区二区| 欧美黑人巨大| 日韩欧美国产一区二区三区| 日韩欧美一区二区三区在线观看 | 91麻豆精品国产91久久久久久| av美女在线观看| 欧美第一淫aaasss性| 国模吧视频一区| 少妇高潮 亚洲精品| 久久精品凹凸全集| 久久国产精品精品国产色婷婷 | 欧美风情在线视频| 成人在线免费观看视视频| 精品一区二区日韩| 美女av网站| 日韩av在线资源| 中日韩免视频上线全都免费| 日韩视频在线观看国产| 国产精品伦一区| www视频在线免费观看| 精品三级av在线| 久久九九热re6这里有精品| 蜜桃av噜噜一区二区三| 卡一精品卡二卡三网站乱码| 亚洲一区二区三区视频| 老司机精品视频网站| 日韩精品久久一区| 欧美视频完全免费看| 高清电影在线观看免费| 久久精品一本久久99精品| 欧美在线免费看视频| 精品欧美国产| 91免费视频观看| 国产美女在线播放| 日韩午夜在线观看| 91成人午夜| 久久九九视频| 欧美国产精品中文字幕| 欧美风狂大伦交xxxx| 一区二区免费看| 韩国av一区二区三区| 视频在线观看你懂的| 日韩毛片高清在线播放| 国产精品视频资源| 蜜桃久久av一区| a视频v在线| 国产精品毛片久久| 久久精品国产精品亚洲精品色| 国产精品成人免费在线| 白白色在线观看| 国产精品wwww| 成人性生交大片| www日韩tube| 欧美激情国产精品| 首页国产欧美日韩丝袜| 16—17女人毛片毛片| 91麻豆精品国产自产在线 | 亚洲香蕉av在线一区二区三区| 在线观看视频免费| 精品亚洲男同gayvideo网站| 日本亚洲不卡| 午夜免费福利小电影| 777色狠狠一区二区三区| 欧美1级片网站| 少妇性饥渴无码a区免费| 日韩精品在线播放| 亚洲国产不卡| 亚洲精品视频在线免费| 久久精品99久久久香蕉| 不卡在线视频中文字幕| 黄色大片在线| 95av在线视频| 国产精品扒开腿做| 亚洲精品久久久久久久久久久| 91九色国产在线| 欧美激情在线一区二区| 欧美又大粗又爽又黄大片视频| 成人黄色国产精品网站大全在线免费观看 | 欧美1—12sexvideos| 欧美肥婆姓交大片| 图片区小说区区亚洲影院| 国产日产精品一区二区三区四区的观看方式| 91在线视频| 欧美精品日日鲁夜夜添| 99国产精品久久久久久久成人热 | 日韩视频在线你懂得| 在线欧美视频| 在线看av的网址| 成人毛片网站| 伊人精品影院| 丰满少妇在线观看| 国产精品av免费观看| 国产亚洲精品v| 亚洲视频tv| 成人免费91在线看| 欧美日韩和欧美的一区二区| 欧美.www| 高清毛片在线观看| 久久国产精品视频在线观看| 在线色欧美三级视频| 亚洲一区日韩精品中文字幕| 国产精品主播直播| 视频一区国产| 国产日韩在线精品av| 中日韩美女免费视频网站在线观看| 26uuu久久天堂性欧美| 久久精品99久久久久久久久| 国产无遮挡一区二区三区毛片日本| 午夜精品久久久久久毛片| 成人网址大全| 26uuu另类亚洲欧美日本一| 亚洲va国产va欧美va观看| 福利在线播放| 精品无人区一区二区三区竹菊| 欧美性一级生活| 久久99久久99| 天堂久久午夜av| 男女羞羞视频教学| 国产精自产拍久久久久久| 欧美日韩一区二区三区在线看| 国产精品视频| 99综合久久| 91大神在线资源观看无广告| 亚洲最大的免费| 日韩欧美国产三级电影视频| 久久久久99精品一区| 精品国产aⅴ| 超级碰碰不卡在线视频| av免费观看国产| 91视频88av| 欧美一级欧美三级在线观看 | 欧美精品成人91久久久久久久| 色综合久久久久综合99| 日韩不卡一区二区三区| 欧美大奶一区二区| 成人好色电影| 日本在线视频www| 成人信息集中地欧美| 国产亚洲精品综合一区91| 中文字幕av一区二区三区| 久久久久免费| 欧美激情三级| 色综合久久影院|