openEuler编译安装nmon性能监控工具及可视化分析工具

news2025/1/12 5:59:06

ln

介绍

nmon(short for Nigel’s Monitor)是一个性能分析工具,由蓝色巨人IBM开发,最早用于自家操作系统UNIX,AIX (Advanced Interactive eXecutive)。现在也能用在Linux上。它可以显示系统的各种性能指标,包括CPU使用率、内存使用率、网络带宽、磁盘子系统、进程活动等,这些指标以交互式和完全动态的方式显示在终端或X窗口上。nmon工具还可以将数据输出为csv格式,方便后续分析。nmon工具被广泛用于性能瓶颈分析、系统调优、资源规划等方面。

官网:nmon for Linux | Main / HomePage (sourceforge.net)

优势

  1. 简单易用:编译后就是一个二进制文件。nmon可以直接在命令行下启动,非常容易使用,且可以实时监控系统性能。
  2. 实时监控:nmon可以实时监控CPU、内存、磁盘、网络等性能指标,并以图表形式展示结果,方便用户快速发现问题。
  3. 详细信息:nmon不仅提供了系统整体的性能信息,还可以展示每个进程、每个CPU核心、每个网络接口的详细信息,便于用户深入分析问题。
  4. 可定制性强:nmon可以根据用户需要灵活调整监控项和输出方式,满足不同场景的需求。
  5. 低系统资源占用:全 C开发,全部代码8000+行。nmon本身占用系统资源非常少,对被监控系统的影响极小,在实时监控的同时不会影响用户正常使用。

编译安装

各主流操作系统一般都有相应的包。直接apt install nmondnf install nmon即可。
这里记录下编译安装的过程。

编译方法和源码均可从官网获取 nmon for Linux | Site / CompilingNmon (sourceforge.net)
0. 编译很简单,由于源码相当精简,只需要从官网下载一个C文件和一个makefile文件即可。

[root@localhost nmon]# ll
total 276K
-rw-r--r--. 1 root root 263K May 11 10:36 lmon16n.c
-rw-r--r--. 1 root root 8.2K May 11 10:41 makefile
  1. 前置条件:GCC C 编译器,ncurses开发库(用于生成基于文本的用户界面),make命令。以下是一些常见套路:
    # Debian / Ubuntu
    sudo apt-get update
    sudo apt-get install gcc*
    sudo apt-get install ncurses-dev*
    sudo apt-get install make
    # Fedora / Redhat - as the root user
    yum install gcc*
    yum install ncurses-dev*
    yum install make
    # OpenSUSE / SUSE - as the root user
    yast install gcc*
    yast install ncurses-dev*
    yast install make
    
  2. 将最新的源码lmon16n.c硬连接到lmon.c
    ln lmon16n.c lmon.c
  3. 根据目标操作系统的架构,系统和版本更新makefile文件。
    image.png
nmon_ARM_euler2203: lmon.c
        cc -o nmon_ARM_euler2203 $(FILE) $(CFLAGS) $(LDFLAGS) -D ARM
  1. 运行make编译即可可以看到编译后的二进制文件nmon_ARM_euler2203
  2. 直接运行即可 ./nmon_ARM_euler2203

以下是编译流程:

[root@localhost nmon]# ll
total 276K
-rw-r--r--. 1 root root 263K May 11 10:36 lmon16n.c
-rw-r--r--. 1 root root 8.3K May 11 10:49 makefile
[root@localhost nmon]# ln lmon16n.c lmon.c
[root@localhost nmon]# vim makefile 
[root@localhost nmon]# make nmon_ARM_euler2203
cc -o nmon_ARM_euler2203 lmon.c -g -O3 -Wall -lncurses -lm -D ARM
lmon.c:58:10: fatal error: ncurses.h: No such file or directory
   58 | #include <ncurses.h>
      |          ^~~~~~~~~~~
compilation terminated.
make: *** [makefile:249: nmon_ARM_euler2203] Error 1
[root@localhost nmon]# dnf install ncurses-dev*
Last metadata expiration check: 2:34:25 ago on Thu 11 May 2023 08:16:39 AM CST.
Dependencies resolved.
========================================================================================
 Package                Architecture     Version                  Repository       Size
========================================================================================
Installing:
 ncurses-devel          aarch64          6.3-3.oe2203             update          650 k

Transaction Summary
========================================================================================
Install  1 Package

Total download size: 650 k
Installed size: 5.0 M
Is this ok [y/N]: y
Downloading Packages:
ncurses-devel-6.3-3.oe2203.aarch64.rpm                  116 kB/s | 650 kB     00:05    
----------------------------------------------------------------------------------------
Total                                                   116 kB/s | 650 kB     00:05     
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                1/1 
  Installing       : ncurses-devel-6.3-3.oe2203.aarch64                             1/1 
  Running scriptlet: ncurses-devel-6.3-3.oe2203.aarch64                             1/1 
  Verifying        : ncurses-devel-6.3-3.oe2203.aarch64                             1/1 

Installed:
  ncurses-devel-6.3-3.oe2203.aarch64                                                    

Complete!
[root@localhost nmon]# make nmon_ARM_euler2203
cc -o nmon_ARM_euler2203 lmon.c -g -O3 -Wall -lncurses -lm -D ARM
[root@localhost nmon]# ls
lmon16n.c  lmon.c  makefile  nmon_ARM_euler2203
[root@localhost nmon]# ./nmon_ARM_euler2203 

性能采集

这里使用一条命令举例:./nmon_ARM_euler2203 -f -t -s 3 -c 10 -m ./data
-f 将输出结果写入文件。
-t 在文件中添加时间戳。
-s 3采样频率为3秒一次。
-c 10 采样次数为10次。
-m ./data 将结果文件保存在当前目录下名为data的文件中。

可视化分析工具 NMON Visualizer

Releases · nmonvisualizer/nmonvisualizer (github.com)
编译或直接下载 jar包, 使用命令运行 java -jar NMONVisualizer_2021-04-04.jar
image.png
载入结果文件,可以直观观测性能变化
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1198545.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

跨域:利用JSONP、WebSocket实现跨域访问

跨域基础知识点&#xff1a;跨域知识点 iframe实现跨域的四种方式&#xff1a;http://t.csdnimg.cn/emgFr 注&#xff1a;本篇中使用到的虚拟主机也是上面iframe中配置的 目录 JSONP跨域 JSONP介绍 跨域实验&#xff1a; WebSocket跨域 websocket介绍 跨域实验 JSONP跨域…

JavaWeb Day09 Mybatis-基础操作02-XML映射文件动态SQL

目录 Mybatis动态SQL介绍​编辑 一、案例 ①Mapper层 ②测试类 ③EmpMapper.xml ④结果​ 二、标签 &#xff08;一&#xff09;if where标签 ​①EmpMapper.xml ②案例 ③总结 &#xff08;二&#xff09;foreach标签 ①SQL语句 ②Mapper层 ③EmpMapper.xml ④…

基于GPTs个性化定制SCI论文专业翻译器

1. 什么是GPTs GPTs是OpenAI在2023年11月6日开发者大会上发布的重要功能更新&#xff0c;允许用户根据特定需求定制自己的ChatGPT模型。 Introducing GPTs 官方介绍页面https://openai.com/blog/introducing-gpts 在原有自定义ChatGPT的流程中&#xff0c;首先需要自己编制p…

HuggingFace模型头的自定义

在线工具推荐&#xff1a; Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 在本文中我们将介绍如何使HuggingFace的模型适应你的任务&#xff0c;在Pytorch中建立自定义模型头并将其连接到HF模型的主体&#…

2023数据安全战场回顾:迅软科技助您稳固阵线

随着各行业的数字化转型不断深入&#xff0c;数据安全逐步进入法制化的强监管时代。然而&#xff0c;由于人为攻击、技术漏洞和监管缺位等原因&#xff0c;各种数据泄露事件频繁发生&#xff0c;企业数据安全威胁日益严峻。 以下是我对2023年第三季度安全事件的总结&#xff0c…

Maven Profile组设置

application.properties中xxxx

JS实现数据结构与算法

队列 1、普通队列 利用数组push和shif 就可以简单实现 2、利用链表的方式实现队列 class MyQueue {constructor(){this.head nullthis.tail nullthis.length 0}add(value){let node {value}if(this.length 0){this.head nodethis.tail node}else{this.tail.next no…

hosts文件地址

Hosts是一个没有扩展名的系统文件&#xff0c;可以用记事本等工具打开&#xff0c;其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”&#xff0c;当用户在浏览器中输入一个需要登录的网址时&#xff0c;系统会首先自动从Hosts文件中寻找对应的IP地址&…

Typescript -尚硅谷

基础 1.ts是以js为基础构建的语言&#xff0c;是一个js的超集(对js进行了扩展)&#xff1b; 2.ts(type)最主要的功能是在js的基础上引入了类型的概念; Js的类型是只针对于值而言&#xff0c;ts的类型是针对于变量而言 Ts可以被编译成任意版本的js&#xff0c;从而进一步解决了…

企业邮箱本地私有化部署解决方案

随着互联网化进程不断深入&#xff0c;加快推进企业信息化系统建设&#xff0c;已经成为提高企业核心竞争力的重要途径。企业对企业邮箱系统的需求越来越大&#xff0c;企业邮箱系统作为企业级通讯工具中的利器&#xff0c;在协同办公和内外业务交流上发挥着无可替代的巨大作用…

LLM代码生成器的挑战【GDELT早期观察】

越来越多的研究开始对LLM大模型生成的代码的质量提出质疑&#xff0c;尽管科技行业不断推出越来越多的旨在增强甚至取代人类编码员的工具。 随着我们&#xff08;GDELT&#xff09;继续探索和评估越来越多的此类工具&#xff0c;以下是我们的一些早期观察结果。 在线工具推荐&a…

将复数中的虚部取反 即对复数求共轭 numpy.conjugate()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 将复数中的虚部取反 即对复数求共轭 numpy.conjugate() [太阳]选择题 请问以下代码中执行语句输出结果是&#xff1f; import numpy as np a np.array([1 2j, 3 - 4j]) print("【显示…

Linux学习教程(第二章 Linux系统安装)1

第二章 Linux系统安装 学习 Linux&#xff0c;首先要学会搭建 Linux 系统环境&#xff0c;也就是学会在你的电脑上安装 Linux 系统。 很多初学者对 Linux 望而生畏&#xff0c;多数是因为对 Linux 系统安装的恐惧&#xff0c;害怕破坏电脑本身的系统&#xff0c;害怕硬盘数据…

第二十五节——Vuex--历史遗留

文档地址 Vuex 是什么&#xff1f; | Vuex version V4.x 一、概念 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 库。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。一个状态自管理应用包含以下几个部…

大数据Doris(二十一):数据导入演示

文章目录 数据导入演示 一、启动zookeeper集群(三台节点都启动) 二、启动hdfs集群

计算机网络——物理层-传输方式(串行传输、并行传输,同步传输、异步传输,单工、半双工和全双工通信)

目录 串行传输和并行传输 同步传输和异步传输 单工、半双工和全双工通信 串行传输和并行传输 串行传输是指数据是一个比特一个比特依次发送的。因此在发送端和接收端之间&#xff0c;只需要一条数据传输线路即可。 并行传输是指一次发送n个比特&#xff0c;而不是一个比特&…

图论13-最小生成树-Kruskal算法+Prim算法

文章目录 1 最小生成树2 最小生成树Kruskal算法的实现2.1 算法思想2.2 算法实现2.2.1 如果图不联通&#xff0c;直接返回空&#xff0c;该图没有mst2.2.2 获得图中的所有边&#xff0c;并且进行排序2.2.2.1 Edge类要实现Comparable接口&#xff0c;并重写compareTo方法 2.2.3 取…

强化学习中蒙特卡罗方法

一、蒙特卡洛方法 这里将介绍一个学习方法和发现最优策略的方法&#xff0c;用于估计价值函数。与前文不同&#xff0c;这里我们不假设完全了解环境。蒙特卡罗方法只需要经验——来自实际或模拟与环境的交互的样本序列的状态、动作和奖励。从实际经验中学习是引人注目的&#x…

如何使用pngPackerGUI_V2.0,将png图片打包成plist的工具

pngPackerGUI_V2.0&#xff0c;此软件是在pngpacker_V1.1软件基础之后&#xff0c;开发的界面化操作软件&#xff0c;方便不太懂命令行的小白快捷上手使用。 具体的使用步骤如下&#xff1a; 1.下载并解压缩软件&#xff0c;得到如下目录&#xff0c;双击打开 pngPackerGUI.e…

SFTP远程终端访问

远程终端访问 当服务器部署好以后&#xff0c;除了直接在服务器上操作&#xff0c;还可以通过网络进行远程连接访问CentOS 7默认支持SSH(Secure Shell, 安全Shell 协议),该协议通过高强度的加密算法提高了数据在网络传输中的安全性&#xff0c;可有效防止中间人攻击(Man-in-th…