摘要:如果使用過,如果有一顆的心的話,一定會覺得不但酷炫而且十分實用。不過如果想觀察一個程序從運行開始到結(jié)束的占用率怎么辦好辦,利用的異步觀察就行。
如果使用過glances,如果有一顆geek的心的話,一定會覺得不但酷炫而且十分實用。不過如果想觀察一個程序從運行開始到結(jié)束的cpu占用率怎么辦?好辦,利用python的psutil異步觀察就行。
介紹一下放在github上的一個項目: oscillo
使用方式使用方式很簡單,直接 pip install oscillo即可安裝使用.
命令行參數(shù)的格式是 "
name: 命令行的別名/id (任意字符串),當--commands/-c參數(shù)指定多個命令時,該值將作為命令的唯一標識,不可重復(fù)
command [args]: 需要測試資源消耗的命令,比如 gzip file.ext
示例如下,監(jiān)控gzip壓縮一個文件時耗費的cpu、memory和時間:
oscillo -c "gzip: gzip file.ext" -o output-file
-c 代表將執(zhí)行一個linux cmd 命令。參數(shù)后面可以跟以空格隔開的多個參數(shù)
-o 結(jié)果輸出文件:
命令執(zhí)行完成后,會在當前目錄下生成一個
{ "test": { "elapsed": 0.022143125534057617, //總執(zhí)行時間 "cpu": [], "memory": [] } }
同時會產(chǎn)生一個
在控制臺上,oscillo會打印summary信息,其中包含命令的耗時、最大內(nèi)存使用、最大cpu使用、退出碼等在控制臺上,oscillo會打印summary信息,其中包含命令的耗時、最大內(nèi)存使用、最大cpu使用、退出碼等
如果想對比多個命令對資源的消耗,可以使用 -c/--commands 選項指定多條命令, e.g.:
對比gzip和tar命令對資源的消耗:
oscillo -c "t1: gzip file.ext" "t2: tar czf target.tar.gz file1" -o output
效果如下:
實現(xiàn)原理這個工具的原型,來自于一次為了對比幾種客戶端性能而寫的一個腳本,它的原理就是:
在程序中啟動一個子進程,獲取進程id
通過psutil觀察該進程,每隔一段時間記錄一次cpu和內(nèi)存的負載
通過matplotlib畫圖
說一下其中碰到的一個坑:欲監(jiān)控的子進程A在內(nèi)部調(diào)用了另一個耗資源的子進程B,但是psutil只能觀察到子進程A的資源消耗情況,粗暴的解決辦法就是:觀察全局的資源消耗情況:
class Stopwatch(object): def __init__(self, pid): self.__is_run = False self.__start_time = 0 self.__elapsed_times = 0 self.memory_percent = [] self.cpu_percent = [] self.pid = pid def start(self): if self.__is_run: return False self.__is_run = True self.__start_time = time.time() if self.pid > 0: p = psutil.Process(self.pid) else: p = psutil p.memory_percent = lambda: p.virtual_memory().percent while self.__is_run: try: self.cpu_percent.append(p.cpu_percent(1)) self.memory_percent.append(p.memory_percent()) except psutil.NoSuchProcess: break @property def elapsed(self): if self.__is_run: return self.__elapsed_times + time.time() - self.__start_time return self.__elapsed_times def stop(self): self.__elapsed_times = self.elapsed self.__is_run = FalseBTW
當前的功能比較簡單,可能有很多東西沒用想到,歡迎使用和完善
git倉庫: oscillo
原文地址
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/43491.html
摘要:在我們列舉的幾個監(jiān)控的服務(wù)或平臺中,這是唯一一款國內(nèi)產(chǎn)品。也是一款付費監(jiān)控解決方案,計劃收費方案是美分小時。同樣也支持監(jiān)控,還包括對容器級事件的監(jiān)測停止開始等等和管理容器產(chǎn)生的日志。由于是一個監(jiān)控方案,相對來說它的安裝和部署都比較簡單。 輕量級虛擬化容器 Docker,自發(fā)布以來便廣受業(yè)界關(guān)注,在開源界和企業(yè)界掀起了一陣風。Docker 容器相對于 VM 有以下幾個優(yōu)勢:啟動速度快;資...
摘要:監(jiān)控告警是運營系統(tǒng)最核心的功能之一,騰訊內(nèi)部有一套很成熟的監(jiān)控告警平臺,而且開發(fā)運維同學(xué)已經(jīng)習(xí)慣這套平臺,如果我們針對容器再開發(fā)一個監(jiān)控告警平臺,會花費很多精力,而且沒有太大的意義。也是一款付費監(jiān)控解決方案,計劃收費方案是美分小時。 如今,越來越多的公司開始使用 Docker 了,現(xiàn)在來給大家看幾組數(shù)據(jù): 2 / 3 的公司在嘗試了 Docker 后最終使用了它 也就是說 Docker...
摘要:本文是關(guān)于我如何應(yīng)用基本性能分析技術(shù),借助火焰圖做了一處小改進,使得我們計算機集群的狀況獲得了倍的改善,并在第二年幫助節(jié)省了幾百萬刀。最終,通過對平均大小在的事件進行批量插入,我們的吞吐量獲得了的提高。 本文是關(guān)于我如何應(yīng)用基本性能分析技術(shù),借助火焰圖做了一處小改進,使得我們 Postgres 計算機集群的 CPU 狀況獲得了 10 倍的改善,并在第二年幫助 Heap 節(jié)省了幾百萬刀。針對用...
摘要:視覺組接觸的軟件進行視覺開發(fā)會用到各種各樣的軟件開發(fā)環(huán)境輔助工具等,所以很有必要了解一些相關(guān)的快捷鍵命令使用技巧。沒有這樣保姆級的,并不存在一款能夠自動為你生成的軟件。一款錄制屏幕的軟件。 --NeoZng【[email protected]】 3.視覺組接觸的軟件 進行視覺開發(fā)會用到...
閱讀 2225·2019-08-30 15:53
閱讀 2454·2019-08-30 12:54
閱讀 1204·2019-08-29 16:09
閱讀 730·2019-08-29 12:14
閱讀 757·2019-08-26 10:33
閱讀 2483·2019-08-23 18:36
閱讀 2960·2019-08-23 18:30
閱讀 2121·2019-08-22 17:09