0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux查看资源使用情况和性能调优常用的命令

Q4MP_gh_c472c21 来源:嵌入式ARM 作者:嵌入式ARM 2020-11-12 17:54 次阅读

目录

前言

top命令

htop命令

ps命令

free命令

vmstat命令

iosat命令

netstat命令

df命令

du命令

前言

一般来说,Linux性能调优涉及CPU、内存和 IO,包括进程、线程、程序堆栈、内存、Swap、CPU调度、内存调度、网络连接和IO读写等。

本文介绍了Linux查看资源使用情况和性能调优常用的命令,包括top、htop、ps、free、vmstat、iostat、netstat、df和du命令。

top命令

top命令用来监控系统的资源使用情况,包括CPU、内存、Swap、进程和线程等。

命令:

#运行top top #显示进程的完整命令 top-c

推荐使用下面的htop命令来代替top命令。

htop命令

htop命令用来监控系统的资源使用情况,包括CPU、内存、Swap、进程和线程等。相比top命令,htop命令更能更强大,显示也更加直观。

命令:

#运行htop htop

概要信息说明:

CPU使用率:数字1、2、...表示CPU有几个核,后面的进度条用不同颜色来表示不同维度的CPU使用率,最后是CPU使用率;

内存使用率:Mem后面的进度条用不同颜色来表示不同维度的内存使用率(绿色:used,蓝色:buffers,橙色:cache),最后是内存使用率(used / total);

Swap使用率:Swap后面的进度条显示已用的Swap,最后是Swap使用率(used / total),如果系统关闭了Swap,则进度条为空,Swap使用率为0K/0K;

进程和线程统计:Tasks:进程数,thr:线程数,running:正在运行的进程数;

系统平均负载统计:Load average:前1分钟平均负载、前5分钟平均负载和前15分钟平均负载;负载越低说明CPU越空闲,负载越高说明CPU越忙:

负载低于0.7 * CPU核数:CPU使用率正常;(道路通畅)

负载高于0.7 * CPU核数:CPU使用率较高,需要关注;(道路堵车,需要交警到场疏导交通)

负载高于1 * CPU核数:CPU使用率过高,需要关注;(道路严重堵车,可能发生了交通事故,需要交警马上到现场处理)

负载高于5 * CPU核数:系统超负荷运转,无法正常响应;(交通瘫痪,可能道路已经被水淹无法通行,需要投入抢险力量恢复交通)

系统已连续运行时间:Uptime后面为系统从上次启动后,已连续运行时间,可以倒推系统上次启动时间;

详细信息说明:

PID:进程ID;

USER:进程所有者;

PRI:进程优先级;

NI:nice值,负值表示高优先级,正值表示低优先级;

VIRT:进程使用的虚拟内存(virtual memory);

RES:进程使用的物理内存(physical memory);

SHR:进程使用的共享内存(shared memory);

S:进程状态,R(Running)正在运行的进程、S(Sleeping)休眠的进程、T/S(Traced/Stopped) 已停止或中止的进程 或 Z(Zommbie)僵尸进程;

CPU%:进程使用的CPU时间百分比;

MEM%:进程使用的内存百分比;

TIME+:进程已连续运行时间;

Command:进程的执行命令;

常用快捷键:

上下箭头:上下滚动查看进程;

u:显示指定用户的进程;

P:按照进程使用的CPU时间百分比排序;

M:按照进程使用的内存百分比排序;

T:按照进程已连续运行时间排序;

参考:

https://linuxtogether.org/htop-command-explanation/

https://www.softprayog.in/tutorials/htop-command-in-linux

https://scoutapm.com/blog/understanding-load-averages

htop官网

ps命令

#查看java进程 #e(every)所有进程 #f(fullformat)完整输出格式 ps-ef|grepnginx #不显示grep本身 ps-ef|grepnginx|grep-vgrep #获取指定进程的PID ps-ef|grepjava|grepjenkins|grep-vgrep|awk'{print$2}' #根据进程的PID中止进程 ps-ef|grepjava|grepjenkins|grep-vgrep|awk'{print$2}'|xargskill-9 #查看进程堆栈 #p(path)显示完整路径 pmap-p #查看9091端口是哪个容器进程 dockerps|grep9091

ps -ef格式:

UID:进程的UID(用户)

PID:进程ID

PPID:父进程ID

C:CPU使用时间百分比

STIME

TTY

TIME

CMD:启动进程的命令

free命令

free命令用来查看内存和Swap的使用情况。

命令:

#以适合阅读的形式输出(h:human) free-h #以MB格式输出(m:MB) free-m #合计Mem和Swap(t:total) free-h-t #统计3次,每秒1次(c:count) free-h-c3 #统计5次,每2秒统计1次(s:second) free-h-t-c5-s2

说明:

Total: The amount of RAM installed in your system.

Used: Equal toTotal-(Free+Buffers+Cache).

Free: The amount of memory completely unused by anything.

Shared: Memory taken by thetmpfsfile systems.

Buffer: The data structures that are maintained to provide an index for everything stored inCache.

Cache: Data read from the hard drive, modified data waiting to be written back to the hard drive, and other computed values.

Available: What’s really free. An estimate of the memory inFree,Buffer, andCachethat could be used to satisfy a memory request.

简单来说,total是系统总内存,used就是系统已用内存,total - used 就是系统可用内存。

参考:

https://www.howtogeek.com/456943/how-to-use-the-free-command-on-linux/

vmstat命令

vmstat命令用来统计进程、内存、Swap、IO和CPU等信息。

命令:

#运行vmstat vmstat #每5秒统计1次 vmstat5 #每5秒统计1次,共统计4次 vmstat54 #以MB格式输出内存使用情况 vmstat54-SM #显示统计概要信息 vmstat-s

说明:

Proc

r: The number of runnable processes. These are processes that have been launched and are either running or are waiting for their next time-sliced burst of CPU cycles.

b: The number of processes in uninterruptible sleep. The process isn’t sleeping, it is performing a blocking system call, and it cannot be interrupted until it has completed its current action. Typically the process is a device driver waiting for some resource to come free. Any queued interrupts for that process are handled when the process resumes its usual activity.

Memory

swpd: the amount of virtual memory used. In other words, how much memory has been swapped out.,

free: the amount of idle (currently unused) memory.

buff: the amount of memory used as buffers.

cache: the amount of memory used as cache.

Swap

si: Amount of virtual memory swappedinfrom swap space.

so: Amount of virtual memory swappedoutto swap space.

IO

bi: Blocks received from a block device. The number of data blocks used to swap virtual memory back into RAM.

bo: Blocks sent to a block device. The number of data blocks used to swap virtual memory out of RAM and into swap space.

System

in: The number of interrupts per second, including the clock.

cs: The number of context switches per second. A context switch is when the kernel swaps from system mode processing into user mode processing.

CPU

These values are all percentages of the total CPU time.

us: Time spent running non-kernel code. That is, how much time is spent in user time processing and in nice time processing.

sy: Time spent running kernel code.

id: Time spent idle.

wa: Time spent waiting for input or output.

st: Time stolen from a virtual machine. This is the time a virtual machine has to wait for the hypervisor to finish servicing other virtual machines before it can come back and attend to this virtual machine.

参考:

https://www.howtogeek.com/424334/how-to-use-the-vmstat-command-on-linux/

https://www.tecmint.com/linux-performance-monitoring-with-vmstat-and-iostat-commands/

iosat命令

iostat命令用来统计磁盘IO和CPU等信息。

命令:

#运行iostat iostat #以MB格式输出 iostat-m #查看指定磁盘(分区) iostat-m-pvda #每2秒统计一次,共统计3次 iostat-m23

说明:

CPU信息:

%user :It shows the percentage of CPU being utilization that while executing at the user level.

%nice :It shows the percentage of CPU utilization that occurred while executing at the user level with a nice priority.

%system :It shows the percentage of CPU utilization that occurred while executing at the system (kernel) level.

%iowait :It shows the percentage of the time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request.

%steal :It shows the percentage of time being spent in involuntary wait by the virtual CPU or CPUs while the hypervisor was servicing by another virtual processor.

%idle :It shows the percentage of time that the CPU or CPUs were idle and the system did not have an outstanding disk I/O request.

磁盘信息:

Device :The device/partition name is listed in/devdirectory.

tps :The number of transfers per second that were issued to the device. Higher tps means the processor is busier.

Blk_read/s :It shows the amount of data read from the device expressed in a number of blocks (kilobytes, megabytes) per second.

Blk_wrtn/s :The amount of data written to the device expressed in a number of blocks (kilobytes, megabytes) per second.

Blk_read :It shows the total number of blocks read.

Blk_wrtn :It shows the total number of blocks written.

参考:

https://www.geeksforgeeks.org/iostat-command-in-linux-with-examples/

https://www.techrepublic.com/article/how-to-use-the-linux-iostat-command-to-check-on-your-storage-subsystem/

netstat命令

netstat命令用来统计网络连接和端口等信息。

命令:

#显示在侦听的TCP/UDP网络连接,包括程序和端口信息 #u(UDP) #t(TCP) #n(port) #l(listen) #p(program) netstat-utnlp #只显示在侦听的TCP网络连接,包括程序和端口信息 netstat-tnlp #查看某个端口被哪个进程使用 #a(all) netstat-anp|grep6379 #查看某个进程在哪个端口 netstat-anp|grepredis #查看docker启动的进程在哪个端口 dockerps|grepjenkins

df命令

df命令用来统计磁盘使用情况。

命令:

#查看全部文件系统的磁盘使用情况 df-h #查看指定目录所在的文件系统的磁盘使用情况 df-h~ #不显示docker文件系统 df-h|grep-vdocker

du命令

du命令用来统计指定目录的大小。

命令:

#统计某个目录大小 du-sh~ #统计目录下各个子目录和文件的大小 du-h~ #统计目录下各个子目录和文件的大小,并显示合计大小 du-ch~ #只统计下一级目录大小 du-h--max-depth1 #只统计下一级目录大小,单位为MB,从大到小排序 du-m--max-depth1|sort-rn #只统计下一级目录大小,单位为MB,从大到小排序,返回最大的10个文件(目录) du-m--max-depth1|sort-rn|head-11

责任编辑:xj

原文标题:9个必须掌握的Linux性能调优命令和工具

文章出处:【微信公众号:嵌入式ARM】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11219

    浏览量

    208872
  • 命令
    +关注

    关注

    5

    文章

    678

    浏览量

    21981
  • 性能
    +关注

    关注

    0

    文章

    270

    浏览量

    18968

原文标题:9个必须掌握的Linux性能调优命令和工具

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    TMS320C64x在高性能DSP应用中的高速缓存使用情况

    电子发烧友网站提供《TMS320C64x在高性能DSP应用中的高速缓存使用情况.pdf》资料免费下载
    发表于 10-21 09:43 0次下载
    TMS320C64x在高<b class='flag-5'>性能</b>DSP应用中的高速缓存<b class='flag-5'>使用情况</b>

    如何查看TC397内存的使用情况

    Hi,请问,如何查看 TC397 内存的使用情况?谢谢!
    发表于 05-22 07:50

    鸿蒙开发实战:【性能组件】

    性能组件包含系统和应用框架,旨在为开发者提供一套性能
    的头像 发表于 03-13 15:12 391次阅读
    鸿蒙开发实战:【<b class='flag-5'>性能</b><b class='flag-5'>调</b><b class='flag-5'>优</b>组件】

    CUBEIDE运行完可以看RAM的使用情况,运行中可以实时查看RAM的使用情况吗?

    CUBEIDE运行完可以看RAM的使用情况,运行中可以实时查看RAM的使用情况吗?以及负载情况? 图片是运行完可以看RAM使用情况,是否可
    发表于 03-12 07:56

    rtthread编译后如何查看堆栈空间使用情况

    rtthread编译后如何查看堆栈空间使用情况,现在只能在编译完成后看到总大小,有没有办法能看到详细的使用情况。 由于RAM只有128K,除去内存池32k,想看看剩余的RAM在哪用了
    发表于 03-05 07:58

    使用rt_thread nano有办法查看线程的资源用情况吗?

    使用rt_thread nano ,有办法查看线程的资源用情况麽?
    发表于 02-26 06:05

    如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况

    我知道嵌入式软件构建工具会报告程序闪存使用情况。我认为他们也报告 RAM 使用率,但他们是否报告最大 RAM 使用率? 生成工具可能不知道在运行时将使用多少堆。是否有构建工具不知道的其他 RAM 使用情况? 如何准确找出运行时使用了多少RAM?
    发表于 01-22 07:02

    请问TC397如何查看RAM和pFlash的使用情况

    请问 TC397 如何查看 RAM 和 pFlash 的使用情况
    发表于 01-19 06:37

    Linux查看IO状态的常用命令都有哪些呢?

    介绍下Linux的3个常用I/O相关命令,解决I/O压力过大问题时用iostat,查看磁盘的I/O状态用iotop,查看I/O进程排名用ls
    的头像 发表于 01-16 09:28 5076次阅读

    请问sigmastudio算法集成对什么资源有要求,以及有什么方法可以查看系统资源用情况

    您好, 目前基于ADSP-21565开发了一些基础音频功能,想知道目前系统占用了多少资源,还剩下多少资源,以此来评估后续的sigmastudio算法集成可行性。 请问sigmastudio算法集成对什么资源有要求,以及有什么方法
    发表于 01-10 08:28

    显示Web服务器中的内存使用情况

    Web服务器上,您可以在“内存”选项卡的“诊断”网页上找到有关各个内存区域当前使用情况的信息。
    的头像 发表于 12-18 10:18 767次阅读
    显示Web服务器中的内存<b class='flag-5'>使用情况</b>

    linux查看weblogic进程

    性能情况。本文将详细介绍在Linux系统中如何查看WebLogic进程。 一、使用ps命令查看
    的头像 发表于 12-05 16:07 1796次阅读

    jvm工具有哪些

    JVM是提高Java应用程序性能的重要手段,而JVM工具则是辅助开发人员进行
    的头像 发表于 12-05 11:44 1020次阅读

    jvm常用命令

    JVM是提升Java应用性能的一个重要方面,通过合理设置JVM参数可以达到优化应用性能、提高系统稳定性的目的。本文将为你详细介绍JVM
    的头像 发表于 12-05 11:43 655次阅读

    docker内存不足的解决办法

    审查Docker容器的内存使用情况: 首先,我们需要审查Docker容器的内存使用情况,以确定它是由哪个容器引起的内存不足问题。命令"docker stats"可以用来查看容器的
    的头像 发表于 11-23 10:41 2517次阅读