当前位置: 首页 > 面试题库 >

如何查看按实际内存使用量排序的顶级进程?

孟海
2023-03-14
问题内容

我有一台具有12G内存的服务器。top的片段如下所示:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                                                                                      
12979 frank  20   0  206m  21m  12m S   11  0.2  26667:24 krfb                                                                                                                                                                                                                                                          
13 root      15  -5     0    0    0 S    1  0.0  36:25.04 ksoftirqd/3                                                                                                                                                                                                                                                   
59 root      15  -5     0    0    0 S    0  0.0   4:53.00 ata/2                                                                                                                                                                                                                                                         
2155 root      20   0  662m  37m 8364 S    0  0.3 338:10.25 Xorg                                                                                                                                                                                                                                                          
4560 frank  20   0  8672 1300  852 R    0  0.0   0:00.03 top                                                                                                                                                                                                                                                           
12981 frank  20   0  987m  27m  15m S    0  0.2  45:10.82 amarok                                                                                                                                                                                                                                                        
24908 frank  20   0 16648  708  548 S    0  0.0   2:08.84 wrapper                                                                                                                                                                                                                                                       
1 root      20   0  8072  608  572 S    0  0.0   0:47.36 init                                                                                                                                                                                                                                                          
2 root      15  -5     0    0    0 S    0  0.0   0:00.00 kthreadd

free -m显示以下内容:

             total       used       free     shared    buffers     cached
Mem:         12038      11676        362          0        599       9745
-/+ buffers/cache:       1331      10706
Swap:         2204        257       1946

如果我理解正确,则系统只有362 MB的可用内存。我的问题是:如何找出哪个进程正在消耗大部分内存

就像背景信息一样,系统正在运行64bit OpenSuse 12


问题答案:

首先,将这一口头禅重复一会儿:“未使用的内存就是浪费的内存”。Linux内核保持周围 巨大的
文件元数据并要求提供的文件量,直到一些看起来更重要的是推动了数据。这就是为什么您可以运行:

find /home -type f -name '*.mp3'
find /home -type f -name '*.aac'

find以令人难以置信的速度运行第二个实例。

Linux只剩下一点点的“空闲”内存即可轻松处理内存使用高峰。

其次,您要查找正在消耗您全部内存的进程。在top使用该M命令的内存使用排序。随意忽略该VIRT列,该列仅告诉您已分配了多少虚拟内存,而不是进程正在使用多少内存。RES报告
驻留 或当前在ram中有多少内存(而不是交换到磁盘或从不实际分配,尽管有请求)。

但是,由于几乎每个进程RES都会对/lib/libc.so.6一次内存进行计数,因此,这并不是衡量一个进程正在使用多少内存的好方法。该SHR列报告了与其他进程
共享的 内存量,但是不能保证实际上有另一个进程在共享—它可以共享,只有其他人不想共享。

smem工具旨在帮助用户更好地衡量每个进程 真正
应承担多少内存。它会做一些聪明的工作,以找出真正独特的内容,共享的内容,并将共享内存按比例分配给共享它的进程。smem也许可以帮助您了解记忆的发展状况top,但top它是出色的入门工具。



 类似资料:
  • 问题内容: 您如何衡量Linux中应用程序或进程的内存使用情况? 从了解Linux上的内存使用的博客文章中可以看出,这不是用于此目的的准确工具。 为什么是“错” 根据您的看法,它不会报告进程的实际内存使用情况。它的真正作用是显示 如果 每个进程 是唯一运行的进程 , 则 每个进程将占用多少实际内存。当然,一台典型的Linux机器在任何给定时间都运行着几十个进程,这意味着报告的VSZ和RSS编号几乎

  • 问题内容: 有没有一种方法可以显示按容器内存使用情况排序的docker统计信息? 我正在使用以下命令来显示容器及其名称,并且我想按内存使用情况对结果进行排序。 未分类的结果如下。 问题答案: 要按字段排序,可以使用以下命令: GNU / Linux: 苹果系统: 检查此链接以查看以下选项的所有可用选项:https : //docs.docker.com/engine/reference/comma

  • 我有一个库伯内特斯豆荚 请求的1500Mb内存 我有2个容器在这个pod内运行,一个是实际应用程序(重型Java应用程序)和一个轻量级日志托运人。 pod始终报告内存使用量为1.9-2Gb。因此,部署是可伸缩的(设置了自动伸缩配置,如果内存消耗,可伸缩POD 黄线表示应用程序内存使用情况 然而,在更深入的调查中,我发现了这一点。 在应用程序容器内的ing上,我运行了命令,它报告了总共或大约16Gb

  • 我正在从Eclipse切换到IntelliJ IDEA。目前我正在使用IDEA v 12.0.4。 在Eclipse中,当您调用类大纲视图(CtrlO)时,您看到了方法在类中声明的顺序。IDEA中类似的文件结构视图(CtrlF12)按字母顺序列出了一些方法,但我发现在某些情况下,这些方法对我自己不太方便。 在IDEA的文件结构弹出窗口中是否有办法看到类方法按照它们在类中出现的顺序列出?理想情况下,

  • 有时候,由于各种原因会导致接口测试失败,此时我们需要查看测试时实际发送了什么数据。 在控制台中查看 为了尽可能方便地查看发送数据,我们已经将各个阶段的日志打印在浏览器的控制台中了,类似下面的效果: 查看插件背景页的网络请求面板 接口测试需要安装一个浏览器插件,XHR Proxy Tool,这是一个跨域请求的插件,本地 localhost 地址也是可以直接请求到的,实际的网络请求是这个插件发出的。可

  • 本文向大家介绍Shell脚本查看进程内存真实占用情况,包括了Shell脚本查看进程内存真实占用情况的使用技巧和注意事项,需要的朋友参考一下