<table id="qs2qo"></table>
  • <bdo id="qs2qo"><center id="qs2qo"></center></bdo>
    • 自動秒收錄
    • 軟件:1973
    • 資訊:56157|
    • 收錄網站:175404|

    IT精英團

    如何正確計算Kubernetes容器的CPU利用率

    如何正確計算Kubernetes容器的CPU利用率

    瀏覽次數:
    評論次數:
    編輯: 澤洋
    信息來源: ITPUB
    更新日期: 2022-05-09 18:32:41
    摘要

    本文轉自博客園,原文:https://www.cnblogs.com/apink/p/15767687.html,版權歸原作者所有。參數解釋使用Prometheus配置kubernetes環境

    • 正文開始
    • 相關閱讀
    • 推薦作品

    本文轉自博客園。原文:https://www.cnblogs.com/apink/p/15767687.html.版權歸原作者所有。

    參數解釋

    在kubernetes環境中使用Prometheus配置容器的CPU利用率時,經常會遇到CPU利用率超過100%的情況。這里有一個解釋:

    container_spec_cpu_period

    當容器受CPU限制時,CFS調度的時間窗口(也稱為容器CPU的時鐘周期)通常是100,000微秒。

    container_spec_cpu_quota

    指容器的總CPU時間周期。如果quota設置為700,000,這意味著容器的可用CPU時間是7*100,000微秒,這通常對應于kubernetes的resource.cpu.limits的值

    container_spec_cpu_share

    它是指容器使用的已分配主機CPU的相對值。比如share設置為500m,表示窗口啟動時向主機節點申請0.5個cpu,即50000微秒,通常對應kubernetes的resource.cpu.requests的值

    container_cpu_usage_seconds_total

    統計容器一秒鐘的CPU消耗率,需要注意的是容器的所有核心。

    container_cpu_system_seconds_total

    統計數字

    容器內核態在一秒時間內消耗的 CPU

  • container_cpu_user_seconds_total

    統計容器用戶態在一秒時間內消耗的 CPU

    參考官方地址https://docs.signalfx.com/en/latest/integrations/agent/monitors/cadvisor.htmlhttps://github.com/google/cadvisor/blob/master/docs/storage/prometheus.md

  • 具體公式

    1. 默認如果直接使用 container_cpu_usage_seconds_total 的話,如下

      sum(irate(container_cpu_usage_seconds_total{container="$Container",instance="$Node",pod="$Pod"}[5m])*100)by(pod)

      默認統計的數據是該容器所有的 CORE 的平均使用率

    2. 如果要精確計算每個容器的 CPU 使用率,使用 % 呈現的形式,如下

      sum(irate(container_cpu_usage_seconds_total{container="$Container",instance="$Node",pod="$Pod"}[5m])*100)by(pod)/sum(container_spec_cpu_quota{container="$Container",instance="$Node",pod="$Pod"}/container_spec_cpu_period{container="$Container",instance="$Node",pod="$Pod"})by(pod)

      其中 container_spec_cpu_quota/container_spec_cpu_period,就代表該容器有多少個 CORE

    3. 參考官方 git issue

      https://github.com/google/cadvisor/issues/2026#issuecomment-415819667

    docker stats

    docker stats 輸出的指標列是如何計算的,如下:

    首先 docker stats 是通過 Docker API /containers/(id)/stats 接口來獲得 live data stream,再通過 docker stats 進行整合。

    在 Linux 中使用 docker stats 輸出的內存使用率(MEM USAGE),實則該列的計算是不包含 Cache 的內存。

    cache usage 在 ≤ docker 19.03 版本的 API 接口輸出對應的字段是 memory_stats.total_inactive_file,而 > docker 19.03 的版本對應的字段是 memory_stats.cache。

    docker stats 輸出的 PIDS 一列代表的是該容器創建的進程或線程的數量,threads 是 Linux kernel 中的一個術語,又稱 lightweight process & kernel task。

    1. 如何通過 Docker API 查看容器資源使用率,如下

      $ curl -s --unix-socket /var/run/docker.sock "http://localhost/v1.40/containers/10f2db238edc/stats" | jq -r
      {
        "read": "2022-01-05T06:14:47.705943252Z",
        "preread": "0001-01-01T00:00:00Z",
        "pids_stats": {
          "current": 240
        },
        "blkio_stats": {
          "io_service_bytes_recursive": [
            {
              "major": 253,
              "minor": ,
              "op": "Read",
              "value": 
            },
            {
              "major": 253,
              "minor": ,
              "op": "Write",
              "value": 917504
            },
            {
              "major": 253,
              "minor": ,
              "op": "Sync",
              "value": 
            },
            {
              "major": 253,
              "minor": ,
              "op": "Async",
              "value": 917504
            },
            {
              "major": 253,
              "minor": ,
              "op": "Discard",
              "value": 
            },
            {
              "major": 253,
              "minor": ,
              "op": "Total",
              "value": 917504
            }
          ],
          "io_serviced_recursive": [
            {
              "major": 253,
              "minor": ,
              "op": "Read",
              "value": 
            },
            {
              "major": 253,
              "minor": ,
              "op": "Write",
              "value": 32
            },
            {
              "major": 253,
              "minor": ,
              "op": "Sync",
              "value": 
            },
            {
              "major": 253,
              "minor": ,
              "op": "Async",
              "value": 32
            },
            {
              "major": 253,
              "minor": ,
              "op": "Discard",
              "value": 
            },
            {
              "major": 253,
              "minor": ,
              "op": "Total",
              "value": 32
            }
          ],
          "io_queue_recursive": [],
          "io_service_time_recursive": [],
          "io_wait_time_recursive": [],
          "io_merged_recursive": [],
          "io_time_recursive": [],
          "sectors_recursive": []
        },
        "num_procs": ,
        "storage_stats": {},
        "cpu_stats": {
          "cpu_usage": {
            "total_usage": 251563853433744,
            "percpu_usage": [
              22988555937059,
              6049382848016,
              22411490707722,
              5362525449957,
              25004835766513,
              6165050456944,
              27740046633494,
              6245013152748,
              29404953317631,
              5960151933082,
              29169053441816,
              5894880727311,
              25772990860310,
              5398581194412,
              22856145246881,
              5140195759848
            ],
            "usage_in_kernelmode": 30692640000000,
            "usage_in_usermode": 213996900000000
          },
          "system_cpu_usage": 22058735930000000,
          "online_cpus": 16,
          "throttling_data": {
            "periods": 10673334,
            "throttled_periods": 1437,
            "throttled_time": 109134709435
          }
        },
        "precpu_stats": {
          "cpu_usage": {
            "total_usage": ,
            "usage_in_kernelmode": ,
            "usage_in_usermode": 
          },
          "throttling_data": {
            "periods": ,
            "throttled_periods": ,
            "throttled_time": 
          }
        },
        "memory_stats": {
          "usage": 8589447168,
          "max_usage": 8589926400,
          "stats": {
            "active_anon": ,
            "active_file": 260198400,
            "cache": 1561460736,
            "dirty": 3514368,
            "hierarchical_memory_limit": 8589934592,
            "hierarchical_memsw_limit": 8589934592,
            "inactive_anon": 6947250176,
            "inactive_file": 1300377600,
            "mapped_file": ,
            "pgfault": 3519153,
            "pgmajfault": ,
            "pgpgin": 184508478,
            "pgpgout": 184052901,
            "rss": 6947373056,
            "rss_huge": 6090129408,
            "total_active_anon": ,
            "total_active_file": 260198400,
            "total_cache": 1561460736,
            "total_dirty": 3514368,
            "total_inactive_anon": 6947250176,
            "total_inactive_file": 1300377600,
            "total_mapped_file": ,
            "total_pgfault": 3519153,
            "total_pgmajfault": ,
            "total_pgpgin": 184508478,
            "total_pgpgout": 184052901,
            "total_rss": 6947373056,
            "total_rss_huge": 6090129408,
            "total_unevictable": ,
            "total_writeback": ,
            "unevictable": ,
            "writeback": 
          },
          "limit": 8589934592
        },
        "name": "/k8s_prod-xc-fund_prod-xc-fund-646dfc657b-g4px4_prod_523dcf9d-6137-4abf-b4ad-bd3999abcf25_0",
        "id": "10f2db238edc13f538716952764d6c9751e5519224bcce83b72ea7c876cc0475"
    2. 如何計算

      官方地址

      https://docs.docker.com/engine/api/v1.40/#operation/ContainerStats

      The precpu_statsis the CPU statistic of the previousread, and is used to calculate the CPU usage percentage. It is not an exact copy of the cpu_statsfield.

      If either precpu_stats.online_cpusor cpu_stats.online_cpusis nil then for compatibility with older daemons the length of the corresponding cpu_usage.percpu_usagearray should be used.

      To calculate the values shown by the statscommand of the docker cli tool the following formulas can be used:

    • used_memory = memory_stats.usage - memory_stats.stats.cache
    • available_memory = memory_stats.limit
    • Memory usage % = (used_memory / available_memory) * 100.0
    • cpu_delta = cpu_stats.cpu_usage.total_usage - precpu_stats.cpu_usage.total_usage
    • system_cpu_delta = cpu_stats.system_cpu_usage - precpu_stats.system_cpu_usage
    • number_cpus = lenght(cpu_stats.cpu_usage.percpu_usage)or cpu_stats.online_cpus
    • CPU usage % = (cpu_delta / system_cpu_delta) * number_cpus * 100.0




    詳細解釋Linux中的diff命令和例子
    ? 上一篇 2022-05-09
    解決緩存崩潰問題的一行代碼
    下一篇 ? 2022-05-09
    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    • 代碼| C語言根據可執行文件名獲取進程運行信息
      1閱讀 0條評論 個贊
      如下示例可根據可執行文件名獲得線程數、虛擬內存占用大小、物理內存占用大小、進程PID、CPU占用率和進程啟動次數等信息。1.程序源碼main.c:#include#include<……
    • Linux最常用的命令:解決95%以上的問題
      1閱讀 0條評論 個贊
      Linux是目前應用最廣泛的服務器操作系統,基于Unix,開源免費,由于系統的穩定性和安全性,市場占有率很高,幾乎成為程序代碼運行的最佳系統環境。linux不僅可以長時間的運行我們編寫的程序代碼,還可……
    • 臉書數據庫項目負責人:我從做基礎設施中學到的42件事
      1閱讀 0條評論 個贊
      最近讀到了分布式系統研究者MaheshBalakrishnan的一篇博客《42thingsIlearnedfrombuildingaproductiondatabase》。同樣做……
    • Spring Boot內存泄漏 所以很難排除故障!
      1閱讀 0條評論 個贊
      作者|紀兵來源|http://suo.im/5MABXL背景為了更好地實現對項目的管理,我們將組內一個項目遷移到MDP框架(基于SpringBoot),隨后我們就發現系統會頻繁報出Swap區域……
    • MYSQL如果索引優化僅僅是添加索引 太年輕而不簡單
      0閱讀 0條評論 個贊
      MYSQL的索引優化,如果此時此刻看到索引的優化,僅僅想到添加適合的索引,是不完全的,索引的優化本身就具有很多的不確定性。1索引會隨著時間的推移,有性能的衰減2索引會隨著數據量的增加,有性能的衰……
    • Java“年度加密漏洞”修復 網友:更多堅持Java 8的理由
      9閱讀 0條評論 個贊
      文|Travis出品|OSC開源社區(ID:oschina2013)甲骨文于昨日推送了安全更新修復了一個漏洞,該漏洞允許攻擊者偽造某些種類的SSL證書和握手、雙因素認證信息,以及由一系列廣……
    • MySQL語句優化——隱式字符編碼轉換
      1閱讀 0條評論 個贊
      MySQL中我們知道有:如果對索引字段做函數操作,可能會破壞索引值的有序性,因此優化器就決定放棄走樹搜索功能。隱式類型轉換也會導致放棄走樹搜索。因為類型轉換等價于在條件字段上使用了函數比如:假設tra……
    • 一天一技能:協調與多流程的完美結合
      7閱讀 0條評論 個贊
      我們知道,協程本質上是單線程單進程,通過充分利用IO等待時間來實現高并發。在IO等待時間之外的代碼,還是串行運行的。因此,如果協程非常多,多少每個協程內部的串行代碼運行時間超過了IO請求的等待時間,那……
    • epoll這個Linux高性能服務的本質真的不簡單
      1閱讀 0條評論 個贊
      設想一個場景:有100萬用戶同時與一個進程保持著TCP連接,而每一時刻只有幾十個或幾百個TCP連接是活躍的(接收TCP包),也就是說在每一時刻進程只需要處理這100萬連接中的一小部分連接。那么,如何才……
    • 運維數字化轉型的幾點思考
      1閱讀 0條評論 個贊
      這個月底要召開一個企業運維數字化轉型的研討會,昨天一個合作伙伴和我討論一些研討會的話題問題。數字化轉型是近期十分熱門的話題,各大國企央企也把數字化轉型作為未來幾年的工作重點。不過針對于IT運維,數字化……
    • 低代碼實時倉儲系統的設計與實踐
      1閱讀 0條評論 個贊
      1導讀本文介紹58信安基于Flink實現低代碼實時數倉構建系統,我們將數倉構建這一過程進行抽象,通過工程化的思想去解決,將固有領域問題交給系統,讓開發人員關注數據本身,解放人力縮短數倉構建周期。2背景……
    • 阿帕奇建筑師遵循的30條設計原則
      0閱讀 0條評論 個贊
      作者介紹Srinath,科學家,軟件架構師。ApacheAxis2項目的聯合創始人,ApacheSoftware基金會的成員,WSO2流處理器(wso2.com/analytics)的聯席架構師?!?/div>
    • 如何讓Kubernetes集群優雅地使用GPU節點
      2閱讀 0條評論 個贊
      如何讓你的Kubernetes集群使用GPU節點CUDA驅動程序如果您還沒有這樣做,請確保您已在GPU節點上安裝了NVIDIACUDA驅動程序。CUDA是來自nvidia的并行計算平臺。ht……
    • 透徹理解數據資產、數據資源、數據管理、數據治理等概念的區別
      1閱讀 0條評論 個贊
      以下文章來源于公眾號-大魚的數據人生,作者討厭的大魚先生數據成為生產要素后,各種跟數據相關的概念就出來了,其實很多概念沒有權威定義,大家各有各的理解,這導致了理解上的歧義。數據管理、數據治理、數據資源……
    • 甲骨文(第11代)單實例-室內空調(第11代)遷移模擬測試
      0閱讀 0條評論 個贊
      Oracle11.2.0.4單實例----Oracle19C-RAC遷移模擬測試總體思想:通過RMAN物理備份在備庫恢復主庫數據,后續通過在主庫停業務后,將從備份后的所有日志都同步到新庫應用,重新配置……
    • 如何優雅地升級Kubernetes集群的Docker和Containerd版本
      1閱讀 0條評論 個贊
      前言公司用的k8s集群是“多環境合一”的方式,集群流量入口也摒棄了常見的traefik和ingress-nginx,直接用了一個國內不常見的底層基于Envoy的APIGateway網關服務。當然還有……
    • 服務器端高并發分布式架構的演進之路
      1閱讀 0條評論 個贊
      1.概述本文以淘寶作為例子,介紹從一百個到千萬級并發情況下服務端的架構的演進過程。同時列舉出每個演進階段會遇到的相關技術,讓大家對架構的演進有一個整體的認知。文章最后匯總了一些架構設計的原則。特別說……
    • 緊急情況下數據庫表被鎖 抓瞎?
      4閱讀 0條評論 個贊
      以下文章來源于公眾號-程序新視界,作者二師兄在程序員的職業生涯中,總會遇到數據庫表被鎖的情況,前些天就又撞見一次。由于業務突發需求,各個部門都在批量操作、導出數據,而數據庫又未做讀寫分離,結果就是:數……
    • 微服務架構下基于Prometheus構建綜合監控平臺的最佳實踐
      2閱讀 0條評論 個贊
      隨著Prometheus逐漸成為云原生時代的可觀測事實標準,那么今天為大家帶來在微服務架構下基于Prometheus構建一體化監控平臺的最佳實踐和一些相關的思考,內容主要包括以下幾個部分:微服……
    • 記得服務器被黑過一次 沒想到能輕松搞定~
      1閱讀 0條評論 個贊
      常在河邊走,哪能不濕鞋。自認為安全防范意識不錯,沒想到服務器被入侵挖礦的事情也能落到自己頭上。本文簡要記錄發現服務器被入侵挖礦的過程,同時分析木馬的痕跡和信息,最后給出解決方法。服務器被入侵挖礦過程事……
    • 12萬血本無歸!小白個人賬戶失血的背后:理財“殺豬”的模式套路
      0閱讀 0條評論 個贊
      目前有部分投資人報案,而平臺已經處于徹底失聯狀態。從2000元半信半疑試水入場,到數萬元滿懷期待加碼投入,直至最后12萬元血本無歸。近兩日,一自稱理財小白的讀者向北京商報記者講述了他今年以來的血淚投資史,快錢沒賺成反被騙,和他一樣,很多投資人都未曾想到的是,這是一個螳螂捕蟬黃雀在后的擊鼓傳花游戲:“投資人”抱著僥幸心理等待收益,但背后的資金盤卻瞄準時間一把收割?!?/div>
    • 如何優雅地升級Kubernetes集群的Docker和Containerd版本
      1閱讀 0條評論 個贊
      前言公司用的k8s集群是“多環境合一”的方式,集群流量入口也摒棄了常見的traefik和ingress-nginx,直接用了一個國內不常見的底層基于Envoy的APIGateway網關服務。當然還有……
    • 全國公安機關三年破獲經濟犯罪案件24萬起 挽回經濟損失1905億元
      5閱讀 0條評論 個贊
      三年來,全國公安機關共破獲經濟犯罪案件24萬起,挽回經濟損失1905億元;連續組織開展打擊非法集資犯罪專項行動,依法辦理P2P網貸平臺案件300余起;組織開展打擊地下錢莊犯罪“殲擊”專項行動,對危害經濟安全的非法資金通道、職業犯罪團伙實施集中打擊,摧毀2825個跨區域犯罪團伙?!?/div>
    • 監管之聲在這個地方 改善小微金融和消費金融服務
      1閱讀 0條評論 個贊
      優化金融供給,提升服務效能?!?/div>
    • 如何巧用百科增加網站排名 流量翻倍?
      1閱讀 0條評論 個贊
      怎么巧用百科讓網站排名上升流量倍增?很多朋友的網站優化以后還是沒有得到很好的排名,沒關系,今天給大家分享一個技巧,就是使用百科讓沒排名的網站迅速排名,需要的朋友可以參考下……
    • seo經典案例網站文章不收錄真實原因分析
      2閱讀 0條評論 個贊
      和別人一樣的內容,別的網站都收錄,為什么我的網站沒有收錄呢?下面我們來看看百度收錄有沒有可以讓我們鉆空子的漏洞,和網站文章不收錄真正緣故起因分析,需要的朋友可以參考下……
    • JD.COM面試問題:ElasticSearch深度分頁解決方案
      0閱讀 0條評論 個贊
      以下文章來源于月伴飛魚,作者日常加油站前言Elasticsearch是一個實時的分布式搜索與分析引擎,在使用過程中,有一些典型的使用場景,比如分頁、遍歷等。在使用關系型數據庫中,我們被告知要注意甚至……
    • 零入侵:一個注解 循環重試功能的優雅實現
      0閱讀 0條評論 個贊
      前言在實際工作中,重處理是一個非常常見的場景,比如:發送消息失敗。調用遠程服務失敗。爭搶鎖失敗。這些錯誤可能是因為網絡波動造成的,等待過后重處理就能成功。通常來說,會用try/catch,while循……
    • 樊華控股5月27日公布第一季度財報 5月25日公布財務賬目
      1閱讀 0條評論 個贊
      金融虎訊 5月17日消息,泛華控股(Nasdaq: FANH)宣布,宣將在2022年5月26日美股市場收盤后發布其2022年第一季度未經審計的財務業……
    • 央行、銀監會公布首套房貸利率下限
      8閱讀 0條評論 個贊
      對于貸款購買普通自住房的居民家庭,首套住房商業性個人住房貸款利率下限調整為不低于相應期限貸款市場報價利率減20個基點?!?/div>
    • 15家銀行信用卡年報:鋪天蓋地的郵政儲蓄 奮力復興的浦發
      1閱讀 0條評論 個贊
      信用卡行業正在進入以存量經營為核心的新常態。2021年,以促活、調優、融合為重點,全行業的變革繼續加速。年報……
    • 長沙成立調查組調查比亞迪雨花區工廠氣體排放
      1閱讀 0條評論 個贊
      比亞迪官方微博發布關于“長沙雨花區工業園排放導致周邊居民投訴”的聲明稱,比亞迪長沙雨花區工業園于2012年投產使用,園區排放符合國家相關法規及標準。在緊挨工業園區的部分居民區,或存在異味情況,公司已采取相關措施,并積極改善。針對網傳“排放超標引起流鼻血”的情況,比亞迪方面稱這屬于惡意捏造關聯,該企業已報警,并將追究相關人員的法律責任?!?/div>
    • 油價飆升!金獸蘋果打不過沙特石油土豪
      0閱讀 0條評論 個贊
      業績再好也擋不住大環境變天?!?/div>
    • 運行和維護監控中的采樣數據和統計數據
      8閱讀 0條評論 個贊
      2006年的時候,Oracle公司的《Oracle通訊》雜志向我約稿,那時候正好是Oracle公司在大力推廣Oracle10g的時候,當時我問編輯,對這篇文章有什么要求。編輯說,對于優化中數據采集工……
    • 知網涉嫌壟斷?市場監管總局回應!人民網評論來了
      1閱讀 0條評論 個贊
      對此,人民網評論稱,知網屢受消費方詬病,頻惹眾怒,甚至引發涉嫌行業壟斷的質疑,按理早該深刻反思自身行為的合理性。收取高額費用、連年漲價,表面上是經營方式問題,但從深層次上看是相關企業缺乏對市場的尊重、對作者和用戶的尊重、對科學事業的尊重?!?/div>
    • 阿帕奇建筑師遵循的30條設計原則
      0閱讀 0條評論 個贊
      作者介紹Srinath,科學家,軟件架構師。ApacheAxis2項目的聯合創始人,ApacheSoftware基金會的成員,WSO2流處理器(wso2.com/analytics)的聯席架構師?!?/div>
    • Spring Boot內存泄漏 所以很難排除故障!
      1閱讀 0條評論 個贊
      作者|紀兵來源|http://suo.im/5MABXL背景為了更好地實現對項目的管理,我們將組內一個項目遷移到MDP框架(基于SpringBoot),隨后我們就發現系統會頻繁報出Swap區域……
    • 全球10大加密公司:比安列第四以太坊邊緣的比特幣
      0閱讀 0條評論 個贊
      近幾個月來,隨著通脹攀升,以及在動蕩的市場中,受歡迎的貨幣作為安全港和財富存儲設備的吸引力飆升,機構投資者對加密貨幣的興趣不斷增加。加密信息公司Chainalysis在4月20日的一份報告中披露,全球加密投資者在2021年實現了1627億美元的總收益,高于前一年的355億美元。美國以超過470億美元的收入領先其他國家,其次是英國、德國和日本?!?/div>
    • 如何優化新站?全新在線網站優化方案經驗分享
      8閱讀 0條評論 個贊
      那么一個新的網站接手后,站內優化應該怎么做呢?我把我的經驗看法簡單的寫出來,需要的朋友可以參考下……
    • 晉商消費金融董事長上官玉將上任:盈利能力、業務合規、消費者投訴有待改善
      1閱讀 0條評論 個贊
      繼新總裁任職資格獲批后,晉商消費金融又迎來了新任董事長。昨日,山西銀保監局公布了關于上官玉將任職資格的批復,經審核,核準上官玉將晉商消費金融股份有限公司董事、董事長任職資格,擬任人應自批復之日起3個月內到任。這也意味著,上官玉將將接替趙基全出任晉商消金董事長一職。據金融虎網了解,隨著兩位新任高管的履新,晉商消費金融在盈利能力、業務合規性和消費投訴方面的問題亟待進一步改善?!?/div>
    最近發布資訊
    更多
    本地特级毛片,老师脱裙子让我看内裤,人妻av乱片aV出轨avApp
    <table id="qs2qo"></table>
  • <bdo id="qs2qo"><center id="qs2qo"></center></bdo>