第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

收集CPU使用數(shù)據(jù)以進(jìn)行性能分析的程序

收集CPU使用數(shù)據(jù)以進(jìn)行性能分析的程序

Go
FFIVE 2023-08-14 16:44:06
我用 Go 編寫了一個復(fù)雜的程序(它使用了許多并發(fā)結(jié)構(gòu))。我想對我的程序的CPU使用率進(jìn)行準(zhǔn)確的分析,但我不知道從哪里開始。我特別想獲得以下方面的有用信息:同時運行的goroutines(即并發(fā)線程)的最大數(shù)量;如果我同時運行同一程序的多個實例,CPU 使用率會發(fā)生多少變化?堆棧利用率(它根據(jù)我使用的嵌套函數(shù)數(shù)量告訴我是否使用了很多(或一些)堆棧);我在 Linux Ubuntu 18.04.1 LTS 中工作。我應(yīng)該怎么做才能獲取這些信息?是否有任何程序(可能特定于 Golang)允許獲取此信息?
查看完整描述

1 回答

?
PIPIONE

TA貢獻(xiàn)1829條經(jīng)驗 獲得超9個贊

嗯,這是一個復(fù)雜的話題,因此不可能有一個明確的答案。

實際上,您所接近的在生產(chǎn)設(shè)置中被稱為“指標(biāo)收集”或“遙測”。

在大多數(shù)情況下,指標(biāo)的收集使用采樣方法:即收集感興趣的系統(tǒng)狀態(tài)的快照并將其發(fā)送到某處?!澳程帯蓖ǔJ且恍┫到y(tǒng),它允許將指標(biāo)的值保存在某處,并且通常還提供各種分析它們的方法。

在最簡單的情況下,分析是通過在某種 UI 中查看從收集的數(shù)據(jù)中繪制的圖表來完成的。更復(fù)雜的情況包括當(dāng)某些指標(biāo)的值高于(或低于)某個閾值時發(fā)出警報。

單個指標(biāo)是特定類型的一些命名值。


指標(biāo)可以從不同的數(shù)據(jù)源產(chǎn)生。用 Go 編寫的程序運行的相當(dāng)常見的設(shè)置的典型來源包括:

  • Go 運行時本身。

    這包括諸如 goroutine 的數(shù)量和垃圾收集統(tǒng)計數(shù)據(jù)之類的東西——由于顯而易見的原因,這些測量結(jié)果不可能在運行的 Go 程序之外獲得。

  • 操作系統(tǒng)提供的有關(guān)執(zhí)行程序的運行進(jìn)程的測量值。

    這包括在內(nèi)核的用戶和系統(tǒng)上下文中花費的 CPU 時間、操作系統(tǒng)所看到的內(nèi)存消耗、打開的文件(和套接字)描述符的數(shù)量、CPU 上下文切換的數(shù)量、磁盤 I/O 統(tǒng)計信息等等。

  • 由運行包含程序的容器的容器化軟件提供的測量結(jié)果。

    在 Linux 上,這通常由子系統(tǒng)提供cgroup,該子系統(tǒng)主要負(fù)責(zé)控制對進(jìn)程層次結(jié)構(gòu)施加的資源限制。


如何準(zhǔn)確地從這些數(shù)據(jù)源轉(zhuǎn)換數(shù)據(jù)是一個懸而未決的問題(這就是為什么它不適合 SO 格式)。

例如,要收集 Go 運行時統(tǒng)計信息,您可以使用expvar@Adrian 建議的機制,并定期輪詢其提供的 HTTP 端點以獲取數(shù)據(jù)。

或者,您可以在程序中運行一個內(nèi)部 goroutine,它定期從運行時獲取這些數(shù)據(jù)并將其推送到某個地方。

同樣,操作系統(tǒng)級進(jìn)程相關(guān)數(shù)據(jù)的采樣可以通過不同的方式完成。比如說,您可以使用類似的方法從您的程序中收集它們,github.com/shirou/gopsutil/process并將它們與從運行時統(tǒng)計數(shù)據(jù)收集的指標(biāo)一起推送,或者您可以使用一種或多種工具從外部收集這些數(shù)據(jù)。

(據(jù)我所知,收集操作系統(tǒng)級性能數(shù)據(jù)的技術(shù)含量最低但最容易訪問的方法是使用pidstat、iotop、等工具)。atopcpustat


保留和分析收集到的數(shù)據(jù)的問題再次是開放的。

首先,它可能很簡單,只需將所有內(nèi)容轉(zhuǎn)儲到結(jié)構(gòu)化文件中(每條記錄上可能帶有時間戳),然后使用您喜歡的任何內(nèi)容進(jìn)行處理(例如,RRD 工具或 R 或......等等)pyplot。

或者,您可以從一開始就拿起一把大槍,將您的指標(biāo)發(fā)送到 Graphite、Graphana、Zabbix、icinga 或當(dāng)前位于其臀部曲線頂部的任何內(nèi)容。


查看完整回答
反對 回復(fù) 2023-08-14
  • 1 回答
  • 0 關(guān)注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號