編譯安裝nmon

nmon 是什麼?

nmonNigel's performance Monitor for Linux)是一種Linux性能監視工具,當前它支持 Power/x86/x86_64/Mainframe/ARM 這五種 CPU 架構的 Linux,能將監控到的數據保存爲 JSON 格式便於其他工具進行分析和展示。

爲什麼要編譯安裝 nmon?

雖然 nmon 對很多Linux發行版(如Red Hat, SUSE, Ubuntu, Fedora, OpenSUSE 等)進行了支持,你可以在這些發行版的源中找到它的包並安裝它。

對於未提供預編譯包的發行版就需要編譯安裝它了。

如何編譯安裝 nmon?

nmon 官方提供了編譯安裝指南,即通過修改makefile + 一個源碼文件 來編譯 nmon,地址如下:

源碼一般名稱爲 lmon版本號.c,如當前最新的是 lmon16n.c,也可以在編譯指南列表裏取最新的下載

準備好這兩個文件是第一步,接下來還需要問自己幾個問題,通過以下幾個問題就能知道該使用哪幾個編譯參數如何修改makefile:

  • 問題1:makefile 中是否包含我需要的環境的腳本(標籤)?
  • 問題2:nmon 將運行環境的CPU架構是什麼?
  • 問題3:nmon 將運行環境的Linux內核版本是否小於2.6.18?

問題1包含所需腳本

問題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: 如果有對應的編譯腳本,後邊就不用看了。

問題1不包含所需腳本

如果沒有對應的腳本,那隻好再深入一點點看看makefile的結構,瞭解下參數都有啥:

如圖,紅框表示目標文件名或makefile標籤名;藍框表示必需的文件,可不寫;黃框表示傳入CPU架構參數;綠框指定腳本中對某發行版做的優化。一般-D和後邊緊跟的參數 就相當於 C 語言中的 #define XXX。所以源碼中肯定有條件判斷,如下圖UBUNTU

既然這些都明白了,我們只需要確認有哪些可用參數,可不就能編譯出需要的版本了麼。

簡單看了下源碼,整理下常用的參數。

常用CPU架構參數:

  • POWER - PowerPC
  • MAINFRAME - Mainframe
  • X86 - x86 與 x86_64 通用
  • ARM - arm通用

常用發行版參數:

  • SLES/SLES12/SLES113 - Suse Linux Enterprise Server
  • RHEL6/RHEL7 - RedHat6 和 RedHat7與8
  • UBUNTU - Ubuntu全系列

Linux內核版本相關參數:

  • PRE_KERNEL_2_6_18/KERNEL_2_6_18 - 用於Linux內核版本等於或低於2.6.18版本,前者用於16j及之後版本,後者用於之前的版本

英偉達顯卡相關參數:

  • NVIDIA_GPU

再舉個編譯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,如果對你有所幫助,歡迎點贊、關注、評論。本文就到這裏了。

參考:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章