成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

安利一個實用小工具 oscillo:幫助你觀察命令運行時在時間軸上的cpu和內(nèi)存占用率

Paul_King / 1096人閱讀

摘要:如果使用過,如果有一顆的心的話,一定會覺得不但酷炫而且十分實用。不過如果想觀察一個程序從運行開始到結(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í)行完成后,會在當前目錄下生成一個.log 文件。文本結(jié)構(gòu)是json 格式. 數(shù)據(jù)結(jié)構(gòu)如下

{
  "test": {
            "elapsed": 0.022143125534057617,  //總執(zhí)行時間
            "cpu": [], 
            "memory": []
          }
}

同時會產(chǎn)生一個.png文件,-o參數(shù)指定,默認值為metrix

在控制臺上,oscillo會打印summary信息,其中包含命令的耗時、最大內(nèi)存使用、最大cpu使用、退出碼等在控制臺上,oscillo會打印summary信息,其中包含命令的耗時、最大內(nèi)存使用、最大cpu使用、退出碼等

如果想對比多個命令對資源的消耗,可以使用 -c/--commands 選項指定多條命令, e.g.:

對比gziptar命令對資源的消耗:

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 = False
BTW

當前的功能比較簡單,可能有很多東西沒用想到,歡迎使用和完善

git倉庫: oscillo

原文地址

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/43491.html

相關(guān)文章

  • 幾種 Docker 監(jiān)控工具對比

    摘要:在我們列舉的幾個監(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)勢:啟動速度快;資...

    張春雷 評論0 收藏0
  • Docker 監(jiān)控實戰(zhàn)

    摘要:監(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...

    william 評論0 收藏0
  • 基本性能分析,省了幾百萬美元

    摘要:本文是關(guān)于我如何應(yīng)用基本性能分析技術(shù),借助火焰圖做了一處小改進,使得我們計算機集群的狀況獲得了倍的改善,并在第二年幫助節(jié)省了幾百萬刀。最終,通過對平均大小在的事件進行批量插入,我們的吞吐量獲得了的提高。 本文是關(guān)于我如何應(yīng)用基本性能分析技術(shù),借助火焰圖做了一處小改進,使得我們 Postgres 計算機集群的 CPU 狀況獲得了 10 倍的改善,并在第二年幫助 Heap 節(jié)省了幾百萬刀。針對用...

    張憲坤 評論0 收藏0
  • 了解RoboMaster視覺組(三)視覺組使用的軟件

    摘要:視覺組接觸的軟件進行視覺開發(fā)會用到各種各樣的軟件開發(fā)環(huán)境輔助工具等,所以很有必要了解一些相關(guān)的快捷鍵命令使用技巧。沒有這樣保姆級的,并不存在一款能夠自動為你生成的軟件。一款錄制屏幕的軟件。 --NeoZng【[email protected]】 3.視覺組接觸的軟件 進行視覺開發(fā)會用到...

    AlphaWallet 評論0 收藏0

發(fā)表評論

0條評論

Paul_King

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<