1. 查询linux系统中的cup和内存占用率?
  2. 如果查到具体是哪一个进程的cup占用率比较多,你会怎么做?
  3. 如何能够降低程序的cpu或者内存的占用率?

要查询Linux系统中的CPU和内存占用率,您可以使用top命令,它可以显示系统的总体运行状态和每个进程的资源占用情况。

您可以在命令行输入top,然后按回车键,就可以看到类似下面的输出:

![top命令输出示例](^4^)

在输出中,您可以看到以下信息:

第一行显示了系统的当前时间、运行时间、登录用户数和平均负载。

top - 16:20:38 up 12 days,  5:24,  2 users,  load average: 0.04, 0.03, 0.05

    top:当前时间
    up:机器运行了多长时间
    users:当前登录用户数
    load average:系统负载,即任务队列的平均长度。三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。

这里具体需要关注的还是load average三个数值。

先来说说定义吧:

在一段时间内,CPU正在处理以及等待CPU处理的进程数之和。

三个数字分别代表了1分钟,5分钟,15分钟的统计值,这个数值的确能反应服务器的负载情况。但是,这个数值高了也并不能直接代表这台机器的性能有问题,可能是因为正在进行CPU密集型的计算,也有可能是因为I/O问题导致运行队列堵了。

所以,当我们看到这个数值飙升的时候,还得具体问题具体分析。大家都知道,一个CPU在一个时间片里面只能运行一个进程,CPU核数的多少直接影响到这台机器在同时间能运行的进程数。所以一般来说Load Average的数值别超过这台机器的总核数,就基本没啥问题。
 

第二行显示了系统中的进程总数、运行中的进程数、睡眠中的进程数、停止的进程数和僵尸进程数。

Tasks: 127 total,   1 running, 126 sleeping,   0 stopped,   0 zombie

    Tasks:当前有多少进程
    running:正在运行的进程数
    sleeping:正在休眠的进程数
    stopped:停止的进程数
    zombie:僵尸进程数

这里running越多,服务器自然压力就越大。
 

第三行显示了CPU的使用情况,包括用户空间程序占用的百分比(%us)、系统空间程序占用的百分比(%sy)、优先级调整过的用户空间程序占用的百分比(%ni)、空闲的百分比(%id)、等待IO的百分比(%wa)、硬中断占用的百分比(%hi)、软中断占用的百分比(%si)和虚拟机偷走的百分比(%st)。


第四行显示了内存的使用情况,包括总内存(KiB Mem)、可用内存(avail Mem)、已使用内存(used Mem)、缓冲区内存(buff Mem)和缓存内存(cache Mem)。
第五行显示了交换分区的使用情况,包括总交换分区(KiB Swap)、可用交换分区(avail Swap)和已使用交换分区(used Swap)。


从第七行开始,显示了每个进程的信息,包括进程ID(PID)、用户(USER)、优先级(PR)、调度策略(SCHED)、虚拟内存大小(VIRT)、物理内存大小(RES)、共享内存大小(SHR)、状态(S)、CPU占用百分比(%CPU)、内存占用百分比(%MEM)和运行时间(TIME+)等。

要查看具体是哪一个进程的CPU占用率比较多,您可以按照以下步骤:

在top命令输出中,P键按照CPU占用百分比对进程进行排序,最高的排在最前面。

 在top命令输出中,按N键,按照进程ID对进程进行排序,最小的排在最前面。

在top命令输出中,按M键,可以按照内存占用百分比对进程进行排序,最高的排在最前面。

在top命令输出中,按T键可以按照进程运行时间对进程进行排序,最长的排在最前面。

如果您发现某个进程的CPU或者内存占用率过高,并且不是您需要运行的程序,您可以考虑结束该进程以释放资源。要结束一个进程,您可以按照以下步骤

  • - 在top命令输出中,按K键,然后输入要结束的进程ID,并按回车键。
  • - 输入要发送给该进程的信号编号,并按回车键。一般来说,信号编号为9表示强制结束该进程。
  • - 如果成功结束该进程,您会看到提示“kill PID xxxx with signal x”,其中xxxx是进程ID,x是信号编号。

要降低程序的CPU或者内存占用率,您可以尝试以下方法:

  • - 优化程序代码和算法,避免不必要的复杂计算、数据拷贝和系统调用。
  • - 使用硬件加速功能,如多核计算、GPU、DMA等,减少CPU的负担。
  • - 学会让出CPU,使用sleep或者await/signal机制,让CPU有机会执行其他任务。
  • - 适当降低程序的优先级,让CPU更公平地分配资源给其他程序。
  • - 定期进行系统维护,如磁盘清理、碎片整理和错误检查等,提高系统性能并降低CPU使用率。
  • - 扫描并删除可能存在的恶意软件,它们可能会占用大量的CPU资源。


(1) Linux如何查看cpu的使用率 - Hackerman - 博客园. https://www.cnblogs.com/Hackerman/p/16084360.html.
(2) Linux系统查看CPU使用率、内存使用率、磁盘使用率 - 知乎. https://zhuanlan.zhihu.com/p/375533905.
(3) Linux查看物理CPU个数、核数、逻辑CPU个数,以及内存 - 知乎. https://zhuanlan.zhihu.com/p/372564248.
(4) Linux 查看CPU信息,机器型号,内存等信息 - 知乎. https://zhuanlan.zhihu.com/p/234986013.
(5) 如何降低 CPU 利用率? - 知乎. https://www.zhihu.com/question/595328443.
(6) 实战开发经验: 如何降低CPU占用率 - 开发技术 - 亿速云. https://www.yisu.com/zixun/52321.html.
(7) 如何减少电脑内存占用或优化内存? - 知乎 - 知乎专栏. https://zhuanlan.zhihu.com/p/622533739.
(8) 实战开发经验: 如何降低CPU占用率 - 阿里云开发者社区. https://developer.aliyun.com/article/420789.
(9) win10要怎么样限制某个程序占用的CPU和内存? - 知乎. https://www.zhihu.com/question/274111596.
(10) undefined. https://github.com/0voice.

总核数 = 物理CPU个数 X 每颗物理CPU的核数

总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数

# 查看物理CPU个数

cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

这个服务器有两个物理CPU

# 查看每个物理CPU中core的个数(即核数)

cat /proc/cpuinfo| grep "cpu cores"| uniq

每个CPU有16个核

# 查看逻辑CPU的个数

cat /proc/cpuinfo| grep "processor"| wc -l

这个服务器一共有64个逻辑CPU,也就是我们常说的线程数,也就说每个核可以提供两个线程。

# 查看CPU信息(型号)

cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

# 如何查看Linux 内核

uname -a

也可以使用下面的命令来查看Linux的内核

cat /proc/version

# 查看内存情况

free -m

-m会以兆为单位来显示服务器的内存

free -g

-g会以g为单位来显示服务器的内存,这台服务器的内存为125GB。

Linux查看物理CPU个数、核数、逻辑CPU个数,以及内存​

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐