标签: meminfo

如何在顶部以兆字节显示 meminfo?

有时,当您有几场 RAM 时,以千字节为单位查看 meminfo 并不舒服。在 Linux 中,它看起来像:

顶部,内存统计信息都缩放到 Kb

这是它在 Mac OS X 中的样子:

顶部,内存统计数据缩放到 Mb 和 Gb

有没有办法在 Linux top 中以 TB、GB 和 MB 显示 meminfo?

linux memory top meminfo

249
推荐指数
7
解决办法
34万
查看次数

如何跨发行版可移植地获取可用内存量?

报告内存的标准文件/工具在不同的 Linux 发行版上似乎具有不同的格式。例如,在 Arch 和 Ubuntu 上。

  • $ free
                  total        used        free      shared  buff/cache   available
    Mem:        8169312     3870392     2648348       97884     1650572     4110336
    Swap:      16777212      389588    16387624
    
    
    $ head /proc/meminfo 
    MemTotal:        8169312 kB
    MemFree:         2625668 kB
    MemAvailable:    4088520 kB
    Buffers:          239688 kB
    Cached:          1224520 kB
    SwapCached:        17452 kB
    Active:          4074548 kB
    Inactive:        1035716 kB
    Active(anon):    3247948 kB
    Inactive(anon):   497684 kB
    
    Run Code Online (Sandbox Code Playgroud)
  • Ubuntu

    $ free
                 total       used       free     shared    buffers     cached
    Mem:      80642828   69076080   11566748    3063796     150688   58358264
    -/+ buffers/cache:   10567128   70075700 …
    Run Code Online (Sandbox Code Playgroud)

linux memory meminfo

12
推荐指数
2
解决办法
1万
查看次数

什么是使用 4GB 内存?(不是缓存,不是进程,不是slab,不是shm)

我们有一些 EC2 服务器在数天或数周内出现内存泄漏。最终有变是许多GB的内存,它用于(根据样的工具freehtop),如果我们不重新启动服务器,我们的流程开始越来越OOM杀死。

一台这样的服务器有 15GB 的内存。这是输出free -m

             total       used       free     shared    buffers     cached
Mem:         15039       3921      11118          0          0          7
-/+ buffers/cache:       3913      11126
Swap:            0          0          0
Run Code Online (Sandbox Code Playgroud)

该服务器闲置;我已经杀死了大多数用户级进程。htop 中没有进程显示 >100k VIRT。我最近跑了echo 3 > /proc/sys/vm/drop_caches,没有效果(这就是为什么buffers而且cached这么小)。此外:

  • 戳进来/proc/slabinfoslabtop没有显示出任何有希望的东西
  • /run/shm 中什么都没有

这是输出cat /proc/meminfo

MemTotal:       15400880 kB
MemFree:        11385688 kB
Buffers:             564 kB
Cached:             7792 kB
SwapCached:            0 kB
Active:            27668 kB
Inactive:           2012 kB
Active(anon): …
Run Code Online (Sandbox Code Playgroud)

memory meminfo

11
推荐指数
1
解决办法
681
查看次数

“缓存”内存实际上是免费的吗?

运行时cat /proc/meminfo,您会在顶部获得这 3 个值:

MemTotal:        6291456 kB
MemFree:         4038976 kB
Cached:          1477948 kB
Run Code Online (Sandbox Code Playgroud)

据我所知,“Cached”值是 Linux 系统制作的磁盘缓存,如果任何应用程序需要更多 RAM,它将立即释放,因此 Linux 永远不会耗尽内存,直到 MemFree 和 Cached 都为零。

不幸的是,/proc/meminfo 没有报告“MemAvailable”,可能是因为它在虚拟服务器中运行。(内核版本为 4.4)

因此,出于所有实际目的,可用于应用程序的 RAM 是 MemFree + Cached。

这种观点正确吗?

linux memory cache meminfo

11
推荐指数
1
解决办法
1879
查看次数

从伪造的 /proc/meminfo 中恢复

所以,没有考虑太多,我运行了这个脚本:

#!/bin/bash
SWAP="${1:-512}"
NEW="$[SWAP*1024]"; TEMP="${NEW//?/ }"; OLD="${TEMP:1}0"
sed "/^Swap\(Total\|Free\):/s,$OLD,$NEW," /proc/meminfo > /etc/fake_meminfo
mount --bind /etc/fake_meminfo /proc/meminfo
Run Code Online (Sandbox Code Playgroud)

从这里:http : //linux-problem-solver.blogspot.com.ee/2013/08/create-fake-swap-in-openvz-vps-if-you-get-swapon-failed-operation-not-permitted -error.html

在我的交换空间上撒谎真的很管用,但现在我想要像这样的旧命令

free -m
Run Code Online (Sandbox Code Playgroud)

再次工作,但 /proc/meminfo 完全是空的,服务器似乎不再了解它的 RAM,即使有 atop 或类似的东西。

谢谢阅读。

bash swap shell-script proc meminfo

6
推荐指数
1
解决办法
1393
查看次数

/proc/meminfo 值是如何计算的?

/!\ 当前状态:更新 4 /!\

某些 /proc/meminfo 值是某些其他值的总和或差值。但是,关于如何在这两个链接中计算它们的说法不多(只需按 ctrl-fmeminfo即可到达):

此外,我还到处挖掘,这是我迄今为止发现的:

MemFree:              LowFree + HighFree
Active:               Active(anon) + Active(file)
Inactive:             Inactive(anon) + Inactive(file)
Run Code Online (Sandbox Code Playgroud)

我没有找到太多关于其他领域的信息,在我有的地方,结果不匹配,就像在这些 Stack Overflow 帖子中一样:

这两个值计算正确吗?还是由于某些外部手段而存在一些可变性?

此外,某些值显然无法在没有外部值的情况下进行计算,但我仍然对此感兴趣。

/proc/meminfo数值是如何计算的?


如果这有帮助,这里有一个例子/proc/meminfo

MemTotal:         501400 kB
MemFree:           38072 kB
MemAvailable:     217652 kB
Buffers:               0 kB
Cached:           223508 kB
SwapCached:        11200 kB
Active:           179280 kB
Inactive:         181680 kB
Active(anon):      69032 kB
Inactive(anon):    70908 …
Run Code Online (Sandbox Code Playgroud)

memory linux-kernel ram meminfo

5
推荐指数
1
解决办法
4607
查看次数

如何找到合适的内存大小?

我们有一台 32G 的 Linux 机器。我们按如下方式捕获内存:

mem=` cat /proc/meminfo | grep MemTotal | awk '{print $2}' `
echo $mem
32767184
Run Code Online (Sandbox Code Playgroud)

现在我们将其转换为 GIGA:

mem_in_giga=`  echo $(( $mem / 1024 / 1024)) `
echo $mem_in_giga
31
Run Code Online (Sandbox Code Playgroud)

但从结果中我们得到 31 而不是 32G。

free命令相同的故事:

free -g
              total        used        free      shared  buff/cache   available
Mem:             31           9          17           0           4          20
Swap:             7           0           7
Run Code Online (Sandbox Code Playgroud)

那么我们如何从任何命令中获得“32G”呢?

linux memory meminfo

1
推荐指数
1
解决办法
1580
查看次数

标签 统计

meminfo ×7

memory ×6

linux ×4

bash ×1

cache ×1

linux-kernel ×1

proc ×1

ram ×1

shell-script ×1

swap ×1

top ×1