nmon(Nigel's performance Monitor for Linux)是一種Linux效能監視工具,當前它支援 Power/x86/x86_64/Mainframe/ARM 這五種 CPU 架構的 Linux,能將監控到的資料儲存為 JSON 格式便於其他工具進行分析和展示。
雖然 nmon 對很多Linux發行版(如Red Hat, SUSE, Ubuntu, Fedora, OpenSUSE 等)進行了支援,你可以在這些發行版的源中找到它的包並安裝它。
對於未提供預編譯包的發行版就需要編譯安裝它了。
nmon 官方提供了編譯安裝指南,即通過修改makefile + 一個原始碼檔案 來編譯 nmon,地址如下:
原始碼一般名稱為 lmon版本號.c,如當前最新的是 lmon16n.c,也可以在編譯指南列表裡取最新的下載
準備好這兩個檔案是第一步,接下來還需要問自己幾個問題,通過以下幾個問題就能知道該使用哪幾個編譯引數如何修改makefile:
問題1中如果是包含,可以直接放到編譯環境(安裝有gcc*
、ncurses-dev*
、make
的Linux環境,以Ubuntu舉例就是 :sudo apt update && sudo apt install -y gcc* ncurses-dev* make
),將原始碼放到 makefile 同級目錄,進入目錄執行 ln lmon版本.c lmon.c && make 標籤名
。舉個例子,需要Ubuntu18.04 x86_64架構的nmon,只需要開啟makefile,看看是否可以找到如下圖類似指令碼:
紅框中的標籤名由三部分組成,nmon + AMD64 + ubuntu1804,表示 x86_64的ubuntu18.04的 nmon,這個標籤名一般與下邊cc命名行的-o後的引數名一致,即最終也會打出同名目標檔案。
找到需要的指令碼,這裡用lmon16n.c,則命令如下:
sudo apt update
sudo apt install -y gcc* ncurses-dev* make
ln lmon16n.c lmon.c
make nmon_AMD64_ubuntu1804
編譯完成後,會生成名為nmon_AMD64_ubuntu1804的目標檔案,可以把它改名為nmon 放到需要使用 nmon 的作業系統上做監控了。
ps: 如果有對應的編譯指令碼,後邊就不用看了。
如果沒有對應的指令碼,那隻好再深入一點點看看makefile的結構,瞭解下引數都有啥:
如圖,紅框表示目標檔名或makefile標籤名;藍框表示必需的檔案,可不寫;黃框表示傳入CPU架構引數;綠框指定指令碼中對某發行版做的優化。一般-D
和後邊緊跟的引數 就相當於 C 語言中的 #define XXX
。所以原始碼中肯定有條件判斷,如下圖UBUNTU
既然這些都明白了,我們只需要確認有哪些可用引數,可不就能編譯出需要的版本了麼。
簡單看了下原始碼,整理下常用的引數。
常用CPU架構引數:
常用發行版引數:
Linux核心版本相關引數:
英偉達顯示卡相關引數:
再舉個編譯ARM架構CentOS7.8 核心版本5.4.200的nmon例子:
在makefile指令碼最下新增兩行:
nmon_ARM_centos7:
cc -o nmon_ARM_centos7 $(FILE) $(CFLAGS) $(LDFLAGS) -D ARM
主要兩點考慮,是arm架構 用引數
-D ARM
,核心版本大於2.6.18不用加核心相關引數。注意:cc那行前邊不是空格,必須是TAB製表符
目標檔案已經編譯成功了,可以 mv
改名複製到需要的環境中了,當然不改也行隨你。
簡單介紹了下 nmon 是什麼、編譯安裝它的原因,以及如何編譯 nmon,如果對你有所幫助,歡迎點贊、關注、評論。本文就到這裡了。
參考: