1.7 款可替代 top 命令的码下工具!
2.å¦ä½Pythonåä¸ä¸ªå®åAPP
3.linux查看cpu占用率的码下方法:
7 款可替代 top 命令的工具!
大家好,码下我是码下杰哥,本文将为您介绍7款可替代 top 命令的码下工具,旨在让您更全面地掌握Linux操作系统中的码下祖冲之算法c源码性能监控手段。
首先,码下atop是码下一款基于C语言编写的全屏性能监视器,适用于Linux系统。码下它不仅能够记录进程、码下系统活动的码下每日日志,还能通过颜色显示过载的码下系统资源使用情况,提供包括CPU、码下内存、码下交换、码下磁盘、网络层等的系统级活动监控,并详细列出每个进程和线程的性能指标,如CPU利用率、内存增长、磁盘利用率、优先级、用户名、状态和退出代码等。java 权限设计源码atop结合内核模块netatop后,可进一步显示进程和线程的网络活动。安装atop需下载源码包,然后以root身份加载内核模块并启动守护程序。
其次,ctop是一个基于Go语言编写的实时指标展示工具,专门用于查看容器的实时CPU、内存、网络、IO等指标。在遇到“dial unix /var/run/docker.sock”错误时,需要先通过官方安装脚本自动安装docker。安装完成后,执行ctop命令即可查看容器的实时指标。
iftop与top类似,专门用于监听命名接口上的网络流量,显示当前带宽使用情况。使用iftop时,只需提供接口名称即可。
iotop是一个用于识别消耗大量输入/输出请求的进程的工具,提供类似于top的性能监控,但关注的是进程的IO使用情况。iotop由Guillaume Chazarain的sms短信平台源码Python脚本启发,经过Vyacheslav Trushkin用C重写和Boian Bonev的改进后,无需Python即可运行。支持多种Linux发行版,包括Debian、Ubuntu、Fedora、CentOS、RHEL等。
nmon是一个用于AIX和Linux操作系统的性能监控工具,每两秒更新一次终端上的本地系统统计信息(CPU、内存、网络、磁盘、文件系统、NFS、进程、资源等),并以CSV格式保存统计数据,便于绘图和分析。若要处于记录模式,需在命令中添加参数选项。
slabtop用于实时显示内核“slab”缓冲区的详细信息。它提供选项进行排序,热血江湖 外挂源码并显示内核缓存区的信息。
最后,virt-top是一个类似于top的实用程序,用于显示虚拟化域的统计信息,包括CPU、内存、虚拟磁盘、虚拟网络、虚拟机管理程序等。它需要使用libvirt才能显示不同虚拟化系统的统计信息,支持CentOS、RHEL、Debian、Ubuntu、Fedora、OpenSUSE等操作系统。安装virt-top的步骤在文中详细列出。
以上介绍的工具在Linux性能监控领域各有特色,根据具体需求选择合适的工具将能更深入地理解系统资源使用情况,优化系统性能。
å¦ä½Pythonåä¸ä¸ªå®åAPP
åè¨ï¼ç¨Pythonåå®åAPPè¯å®ä¸æ¯æ好çéæ©ï¼ä½æ¯è¯å®æ¯ä¸ä¸ªå¾å·æçéæ©ï¼èä¸å®å¨ä¸æ³å¦ä¹ Javaï¼åè ï¼å°±ç¼ç¨èè¨å·²ç»ä¼çå°±Pythonä¸Golang(注ï¼Pythonï¼Golangæ°´å¹³é½ä¸è¬)ï¼é£ä¹ä¹ Googleäºä¸ä¸Pythonåå®åçAPPçå¯è½æ§ï¼è¿çè¡ãæ¢ç¶è¦å个APPï¼é£ä¹æ»å¾è¦æ个æ³æ³å§ã
å ¶å®ç¬è æ³å两个APPæ¥çï¼ä¸ä¸ªæ¯èªå·±åç好ç©çï¼ä¸ä¸ªæ¯å ³äºè¿ç»´çã
å ³äºè¿ç»´çAPPï¼è®¾è®¡åºè¯¥å¦ä¸
å¯è½é¿è¿æ ·ï¼
ç¶å设计åºè¯¥æ¯è¿æ ·ï¼
å¦æè§å¾å¯è¡çè¯ï¼è¯è®ºçè¨ä¸ä¸ä½ è§å¾åºè¯¥åè¿è¿ä¸ªAPPçè¿ç»´å¸¸ç¨å½ä»¤å§^_^ï¼ç¬è ææ¶æ³å°çæ¯top,free -m,df âh,uptime,iftop,iotop,å¦ææä»ä¹å¥½çæ³æ³å°±ç ç çç ¸è¿æ¥å§ï¼ç¬è å°æ¶åºè¯¥ä¹ä¼æè¿ä¸ªåæä¸ä¸ªé¡¹ç®æ¾å°githubä¸ï¼å¤§å®¶ä¸èµ·ç¨åï¼å¼æºææ¯çéï¼ååã
好å§ï¼è¿å ¥æ£é¢ã
æ们使ç¨kivyå¼åå®åAPPï¼Kivyæ¯ä¸å¥ä¸é¨ç¨äºè·¨å¹³å°å¿«éåºç¨å¼åçå¼æºæ¡æ¶ï¼ä½¿ç¨PythonåCythonç¼åï¼å¯¹äºå¤ç¹è§¦æ§æçé常è¯å¥½çæ¯æï¼ä¸ä» è½è®©å¼åè å¿«éå®æç®æ´ç交äºåå设计ï¼è¿æ¯æ代ç éç¨åé¨ç½²ï¼ç»å¯¹æ¯ä¸æ¬¾é¢è®©äººæè³çNUIæ¡æ¶ã
å 为跨平å°çï¼æ以åªåä¸é代ç ï¼å°±å¯ä»¥åæ¶çæå®ååIOSçAPPï¼å¾é ·å§ã
æ¬æä¼å¸¦å¤§å®¶åä¸ä¸ªHello world并ç§ä¸ç§Pythonççç代ç
kivyå®è£
ç¯å¢è¯´æï¼ç¬è å¨ç¨çæ¯Python2.7.
è¿éä» ä»ç»windowså¹³å°å®è£
æ´æ°pip,setuptools
python -m pip install --upgrade pip wheel setuptools
ç¶åæ¯å®è£ æéè¦çä¾èµ
python -m pip install docutils pygmentspypiwin kivy.deps.sdl2 kivy.deps.glew \
kivy.deps.gstreamer --extra-index-url ple/
å¼å¾æ³¨æçæ¯ï¼ä¸é¢çå®åéè¦è®¿é®Googleï¼æ以请èªå¤æ¢¯åï¼èä¸kivy.deps.gstreamerè¿ä¸ªå æ¯è¾å¤§(MB)ï¼å¯ä»¥åç¬æ¬å°å®è£ ï¼h
ç¶åå°±æ¯å®è£ kivyäº
python -m pip install kivy
è³æ¤ï¼å®è£ 就已ç»å®æ¯äºï¼å¼å¾æ³¨æçæ¯ä½ç³»ç»æ²¡æå¼å¯èæåæ¯æï¼å¨å¯¼å ¥kivyçæ¶åä¼æ¥éï¼å¦ææ¯ä½ç³»ç»å°±è®¾ç½®ä¸ä¸æºå¨çBIOSï¼å¼å¯èæåæ¯æå§ã
注ï¼è¿éåªæ¯kivyçè¿è¡ç¯å¢ï¼è¿æ ·æå°±è½ç´æ¥å¨windowsæºå¨ä¸ç´æ¥è°è¯äºï¼æä¹å°ä»£ç ç¼è¯æAPKæ件æ们ä¼å¨åé¢è®²å°ã
å¦ækivyå¨pythonä¸åºè¯¥å°±è½å¯¼å ¥äºã
æç §ä¸çæ¯ä¾ï¼æ们âhelloâä¸ä¸å§ã
æ°å»ºä¸ä¸ª.pyæ件
from kivy.app import App
from kivy.uix.button importButton
class TestApp(App):
def build(self):
return Button(text='Hello,kivy')
TestApp().run()
è¿è¡ï¼
ç¶åä¼å¼¹åºä¸ä¸ªæ¡ï¼å¤§æ¦å¦ä¸ï¼ç¹å»âhello,kivyâä¼åé¢è²
ç¹å»çªå£å¹¶æâF1âä¼è¿ä¸ªçªå£çä¸äºå±æ§
ç¶åæ们åè¿å¤´çä¸ç代ç ã
##å¯¼å ¥Appï¼ç¶å让TestAppè¿ä¸ªç±»ç»§æ¿
from kivy.app import App
##å¯¼å ¥ä¸ä¸ªButton,è¿ç»´æè¿ä¸ªbuttonï¼å½ä½ ç¹å»çæ¶åæä¼ææååº
from kivy.uix.button importButton
###å®ä¹ç±»ï¼ååå¿ é¡»æ¯xxxApp
class TestApp(App):
###buildä¸ä¸ªButton
def build(self):
###è¿åä¸ä¸ªButton,æåå 容æ¯âHello,kivyâ
return Button(text='Hello,kivy')
##è¿è¡,å 为继æ¿äºAppï¼æ以ææçrunè¿ä¸ªæ¹æ³
TestApp().run()
ä¸é¢å°±æ¯æ们çHelloäº
å¨windowsä¸è¿è¡å½ç¶æ²¡æä»ä¹å¤ªå¤§çæä¹ï¼æä¹å¨å®åææºä¸è¿è¡ææ¯æ们æ³è¦çï¼
è¿æ¶æ们éè¦ä¸ä¸ªç¼è¯ç¯å¢ã
å®æ¹è¯´æçç¯å¢ï¼å¦ä¸ï¼
Youâll need:
A linux computer or a virtual machine
Java
Python 2.7 (not 2.6.)
Jinja2 (python module)
Apache ant
Android SDK
è½ç¶å®æ¹æä¾äºä¸ä¸ªä¼¼ä¹è¿ä¸éçèææºéåï¼ä½æ¯è¿æ¯æå¾å¤å 容éè¦ç¿»åºå»ï¼æ以ç¬è å¨
å½ç¶ä½ ä¹å¯ä»¥ä¸è½½å®æ¹éåï¼å 为第ä¸æ¬¡ç¼è¯éè¦å»å½å¤ä¸ä¸å¤§å ä¸è¥¿ï¼æ以请èªå¤æ¢¯åã
Virtual Machine
A Virtual Machine with Android SDK and NDK and all otherpre-requisites pre installed to ease apk generation:
Kivy Buildozer VM
Or select the Torrent
å¨ç¬è æä¾çéåéï¼æ¡é¢ä¸æä¸ä¸ªdev_andï¼åªè¦å°ä¸é¢åç代ç ï¼æ¾å ¥è¿ä¸ªæ件夹å³å¯(å½ç¶ä¹å¯ä»¥å¨å ¶ä»ç®å½ï¼åé¢ä¼è®²å°)ã
cd Desktop/dev_and/
åå§åä¼å¨å½åç®å½çæä¸ä¸ªbuildozer.specæ件 ç¨äºé ç½®çæçapkç¸å ³ä¿¡æ¯
buildozer init
ä¿®æ¹buildozer.specæ件
vi buildozer.spec
è³å°ä¿®æ¹ä¸é¢ä¸é¡¹
# (str) Title of your application
title = helloworld
# (str) Package name
package.name = helloapp
# (str) Package domain (needed for android/ios packaging)
package.domain = youer.com
ç¶å注é
# (str) Application versioning (method 1)
#version.regex = __version__ = ['"](.*)['"]
#version.filename = %(source.dir)s/main.py
ä¸é¢è¿è¡æ¹ä¸ºé注é
version = 1.2.
æåæ们çææ们éè¦çapkæ件
buildozer -v android debug
buildozerå½ä»¤ä¼å¨å½åæ件夹å建ä¸ä¸ªbinï¼è¯¥æ件夹éé¢ææ们æ³è¦çapkæ件
helloapp-1.2.0-debug.apk
å®è£ 以ååºè¯¥æ¯è¿æ ·
è¯è¯´å¨ç¼è¯çæ¶åå¯è½åºç°ç©ºé´ä¸è¶³çæ åµï¼æ ¹æ®èææºçä¸å(vmwareævirtualbox)èªè¡æ©å®¹å§ã
æåæ们æ¥ç§ç§ç®æçPythonå¼åçè¿ä¸ªæ¸¸æçæºä»£ç ã
å çææå¾
è¯ç©äºä¸ä¸ï¼è¿æ¯è®æµç çï¼æå ´è¶£çå¯ä»¥ä¸è½½ç©ä¸ä¸
è¿ä¸ªæ¸¸æ代ç è½ç¶ä¸é¿ï¼ä½æ¯è¿æ¯è®å ç¯å¹ çï¼æ以ç®è¦ç说æä¸ä¸æµç¨ï¼
主è¦ç±ä¸é¨åç»æï¼ä¸æ¯ç´ æï¼å¾çé³é¢ä¹ç±»çæ件ï¼äºæ¯Python代ç ï¼ä¸æ¯kvæ件ï¼è¿ä¸ªkvæ件æç¹åhtmlä¸çcssã
Python代ç çæ件åä¸è¬å½å为main.py
ç¶åä¸å®æä¸ä¸ªå«åXXXAppçç±»ï¼å¹¶ç»§æ¿Appã
æ¯å¦è¯¥ç±»å«åGameAppï¼é£ä¹è¯¥ç®å½ä¸çkvæ件åå¿ é¡»ä¸ºGameï¼å¦ä¸å¾æ示ï¼å¦æä¸æ¯ï¼é£ä¹kvæ件ä¸çä¸äºè®¾å®å°±ä¸ä¼çæã
æ¯å¦è®¾å®ä¸ä¸ªæ ç¾
Label:
id: time
text: 'xxxx'
font_size:
id为timeï¼textææ¬å 容为âxxxxâ,ç¶ååä½ä¸º
好å§ï¼ç¹å°ä¸ºæ¢å§ï¼ä¸è¿ä¼¼ä¹ä»ä¹é½æ²¡ç¹å°~~~
ä»æ å°æåä¸ä¸ªAppï¼ææ³æä¼å¦èµ·ä¸ç¯æç« å§ã
linux查看cpu占用率的方法:
top
top是最常用的查看系统资源使用情况的工具,包括CPU、内存等等资源。什么事源码这里主要关注CPU资源。
1.1 /proc/loadavg
load average取自/proc/loadavg。
9. 9. 8. 3/
前三个数字是1、5、分钟内进程队列中平均进程数,包括正在运行的进程+准备好等待运行的进程。
第四个数字分子表示正在运行的进程数,分母是进程总数。
最后一个数字是最近运行的进程ID号。
其中top取的是/proc/loadavg的前三个数。
1.2 top使用
打开top,可以指定更新的周期。
输入H,打开隐藏的线程;输入1,可以显示单核CPU使用情况。
top -H -b -d 1 -n > top.txt,每个1秒统计一次,共次,显示线程细节,并保存到top.txt中。
top采样来源你还依赖于/proc/stat和/proc//stat两个,这两个的详细介绍参考:/proc/stat和/proc//stat。
其中CPU信息对应的含义如下:
us是user的意思,统计nice小于等于0的用户空间进程,也即优先级为~。 ni是nice的意思,统计nice大于0的用户空间进程,也即优先级为~。 sys是system的意思,统计内核态运行时间,不包括中断。 id是idle的意思,几系统处于空闲态。 wa是iowait的意思,统计io等待时间。 hi是hardware interrupt,统计硬件中断时间。 si是software interrupt,统计软中断时间。 最后的st是steal的意思。
perf
通过sudo perf top -s comm,可以查看当前系统运行进程占比。
这里不像top一样区分idle、system、user,这里的占比是各个进程在总运行时间里面占比。
通过sudo perf record记录采样信息,然后通过sudo perf report -s comm。
sar、ksar
sar是System Activity Report的意思,可以用于实时观察当前系统活动,也可以生成历史记录的报告。
要使用sar需要安装sudo apt install sysstat,然后对sysstat进行配置。
sar用于记录统计信息,ksar用于将记录的信息图形化输出。
ksar下载地址在: github.com/vlsi/ksar/re...
sudo gedit /etc/default/sysstat--------------------------------将 ENABLED=“false“ 改为ENABLED=“true“。 sudo gedit /etc/cron.d/sysstat--------------------------------修改sar的周期等配置。 sudo /etc/init.d/sysstat restart--------------------------------重启sar服务 /var/log/sysstat/--------------------------------------------------sar log存放目录
使用sar记录开机到目前的统计信息到文件sar.txt。
LC_ALL=C sar -A > sar.txt
PS:这里直接使用sar -A,在ksar中无法正常显示。
如下执行java -jar ksar.jar,然后Data->Load from text file...选择保存的sar.txt文件。
得到如下的图表。
还可以通过sar记录一段时间的信息,指定采样周期和采样次数。
这些命令前加上LC_ALL=C之后保存到文件中,都可以在ksar中图形化显示。
collectl、colplot
collectl是一款非常优秀并且有着丰富的命令行功能的实用程序,你可以用它来采集描述当前系统状态的性能数据。
不同于大多数其它的系统监控工具,collectl 并非仅局限于有限的系统度量,相反,它可以收集许多不同类型系统资源的相关信息,如 cpu 、disk、memory 、network 、sockets 、 tcp 、inodes 、infiniband 、 lustre 、memory、nfs、processes、quadrics、slabs和buddyinfo等。
同时collectl还可以替代常用工具,比如top、vmstat、ps、iotop等。
安装collectl:
sudo apt-get install collectl
collectl的使用很简单,默认collectl显示cpu、磁盘、网络信息。
collectl还可以显示更多的子系统信息,如果选项存在对应的大写选项,大写选项表示更细节的设备统计信息。
b – buddy info (内存碎片) c – 所有CPU的合一统计信息;C - 单个CPU的统计信息。 d – 整个文件系统Disk合一统计信息;C - 单个磁盘的统计信息。 f – NFS V3 Data i – Inode and File System j – 显示每个CPU的Interrupts触发情况;J - 显示每个中断详细触发情况。 l – Lustre m – 显示整个系统Memory使用情况;M - 按node显示内存使用情况。 n – 显示整个系统的Networks使用情况;N - 分网卡显示网络使用情况。 s – Sockets t – TCP x – Interconnect y – 对系统所有Slabs (系统对象缓存)使用统计信息;Y - 每个slab使用的详细信息。
collectl --all显示所有子系统的统计信息,包括cpu、终端、内存、磁盘、网络、TCP、socket、文件系统、NFS。
collectl --top可以代替top命令:
collectl --vmstat可以代替vmstat命令:
collectl -c1 -sZ -i:1可以代替ps命令。
collectl和一些处理分析数据工具(比如colmux、colgui、colplot)结合能提供可视化图形。
colplot是collectl工具集的一部分,其将collectl收集的数据在浏览器中图形化展示。
colplot的介绍 在此,相关源码可以再 collectl-utils下载。
解压下载的colplot之后,sudo ./INSTALL安装colplot。
安装之后重启apache服务:
suod systemctl reload apache2 sudo systemctl restart apache2
在浏览器中输入 .0.0.1/colplot/,即可使用colplot。
通过Change Dir选择存放经过collectl -P保存的数据,然后设置Plot细节、显示那些子系统、plot大小等等。
最后Generate Plot查看结果。