国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

Paul_King / 1097人閱讀

摘要:如果使用過,如果有一顆的心的話,一定會覺得不但酷炫而且十分實用。不過如果想觀察一個程序從運行開始到結束的占用率怎么辦好辦,利用的異步觀察就行。

如果使用過glances,如果有一顆geek的心的話,一定會覺得不但酷炫而且十分實用。不過如果想觀察一個程序從運行開始到結束的cpu占用率怎么辦?好辦,利用python的psutil異步觀察就行。

介紹一下放在github上的一個項目: oscillo

使用方式

使用方式很簡單,直接 pip install oscillo即可安裝使用.

命令行參數的格式是 ": "

name: 命令行的別名/id (任意字符串),當--commands/-c參數指定多個命令時,該值將作為命令的唯一標識,不可重復

command [args]: 需要測試資源消耗的命令,比如 gzip file.ext

示例如下,監控gzip壓縮一個文件時耗費的cpu、memory和時間:

oscillo -c "gzip: gzip file.ext" -o output-file

-c 代表將執行一個linux cmd 命令。參數后面可以跟以空格隔開的多個參數

-o 結果輸出文件:

命令執行完成后,會在當前目錄下生成一個.log 文件。文本結構是json 格式. 數據結構如下

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

同時會產生一個.png文件,-o參數指定,默認值為metrix

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

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

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

oscillo -c "t1: gzip file.ext"  "t2: tar czf target.tar.gz file1" -o output

效果如下:

實現原理

這個工具的原型,來自于一次為了對比幾種客戶端性能而寫的一個腳本,它的原理就是:

在程序中啟動一個子進程,獲取進程id

通過psutil觀察該進程,每隔一段時間記錄一次cpu和內存的負載

通過matplotlib畫圖

說一下其中碰到的一個坑:欲監控的子進程A在內部調用了另一個耗資源的子進程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

原文地址

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/43491.html

相關文章

  • 幾種 Docker 監控工具對比

    摘要:在我們列舉的幾個監控的服務或平臺中,這是唯一一款國內產品。也是一款付費監控解決方案,計劃收費方案是美分小時。同樣也支持監控,還包括對容器級事件的監測停止開始等等和管理容器產生的日志。由于是一個監控方案,相對來說它的安裝和部署都比較簡單。 輕量級虛擬化容器 Docker,自發布以來便廣受業界關注,在開源界和企業界掀起了一陣風。Docker 容器相對于 VM 有以下幾個優勢:啟動速度快;資...

    張春雷 評論0 收藏0
  • Docker 監控實戰

    摘要:監控告警是運營系統最核心的功能之一,騰訊內部有一套很成熟的監控告警平臺,而且開發運維同學已經習慣這套平臺,如果我們針對容器再開發一個監控告警平臺,會花費很多精力,而且沒有太大的意義。也是一款付費監控解決方案,計劃收費方案是美分小時。 如今,越來越多的公司開始使用 Docker 了,現在來給大家看幾組數據: 2 / 3 的公司在嘗試了 Docker 后最終使用了它 也就是說 Docker...

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

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

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

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

    AlphaWallet 評論0 收藏0

發表評論

0條評論

Paul_King

|高級講師

TA的文章

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