我在我的 linux 主机上触发的 free 命令的输出如下:
free
total used free shared buff/cache available
Mem: 263846320 47746620 3290072 1140808 212809628 214382420
Swap: 0 0 0
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚这个可用部分指定了什么。可用内存很少显示,即大约 1.24%,即使总内存很高,使用的内存只有 18.09% 左右。
free -h
total used free shared buff/cache available
Mem: 251G 45G 3.1G 1.1G 202G 204G
Swap: 0B 0B 0B
Run Code Online (Sandbox Code Playgroud)
这是否意味着我将无法启动更多应用程序,因为可用内存非常少。已用内存仅为 18%。所以不应该释放内存为 72% 而不是 1.24%,如上面的命令所示。
我很迷惑。任何人都可以帮忙吗?
我注意到free
命令报告在 Trusty 和 Xenial 之间发生了变化。这是我的一台 Trusty 计算机上显示的“free -m”:
$ free -m
total used free shared buffers cached
Mem: 7916 7645 271 99 455 1764
-/+ buffers/cache: 5426 2490
Swap: 24999 805 24194
Run Code Online (Sandbox Code Playgroud)
这是(不同的)Xenial 系统上的等效项:
$ free -m
total used free shared buff/cache available
Mem: 3553 1192 857 16 1504 2277
Swap: 3689 0 3689
Run Code Online (Sandbox Code Playgroud)
我主要用来查看的 +/- 缓冲区/缓存行已经消失了。我应该如何解释新数字?
我正在编写一个 Python 脚本,它下载4K视频并根据要求播放它们。当我的设备内存超过 7.2 GB 时,它会删除观看次数最少的视频。
使用free命令或top命令可以获得内存信息。但具体来说,我如何获得使用的总内存?这样我就可以将其返回给 Python 函数以与内存阈值进行比较。
我有一个大小为 7.9 GB 的交换分区。当我使用命令时free
,它显示:
NAME TYPE SIZE USED PRIO
/dev/sda7 partition 7.9G 0B -1
Run Code Online (Sandbox Code Playgroud)
交换分区未被使用,其优先级设置为负值(这可能是为什么)。
我尝试编辑/etc/fstab
以将优先级设置为某个正整数,例如 100。但这不会影响当前实例。因此,在重新启动后,我希望它使用新配置,但它会将优先级重置为原始配置。fstab 文件仍显示 p=100,但实际上并非如此。
我尝试关闭swapoff,在同一个分区上再次进行swap和swapon,但没有用。
我该怎么做才能让系统有效地使用swap?
我有 Kubuntu 16.04 并且正在使用 ZFS。
正如你在superuser 上看到的那样,我只是花了很长的路来追踪我的记忆消失的地方。
原来是 ZFS 的 ARC 正在吃掉它,而没有出现在工具/文件中的任何地方,而不是它自己的特殊文件 /proc/spl/kstat/zfs/arcstats
有没有一种通用的方法来查看内核使用了多少内存,如果可能,哪些内核模块使用了内存?
例子:
free -h 向我展示了这个:
total used free shared buff/cache available
Mem: 31G 19G 1.8G 406M 10G 5.2G
Swap: 8.0G 0B 8.0G
Run Code Online (Sandbox Code Playgroud)
所以使用了 19GB。但是 TOP 只向我展示了大约 8GB 的已用内存。所以我去寻找其他的 11GB。6GB原来是板坯,其中可以看到/proc/memstat
,用nmon
。但是仍然缺少 5GB。
最后我发现它已经被ZFS的ARC消耗掉了。但它只列在它自己的特殊信息文件中。/proc/spl/kstat/zfs/arcstats
无论是/proc/memstat
也不是top
,htop
,nmon
,free
,或者atop
可以告诉我使用这些5GB是谁。
是否有文件/工具可以在不了解/理解这些模块的情况下查看此类特殊模块使用的内存?或者,如果我想编写一个可以告诉我这一点的监控工具,我是否必须考虑每个现有模块?
从我的角度来看,linux 下的内存信息是一团糟。数十个数字加起来并不等于总内存。我打赌free
通过从总数中减去空闲/缓存/缓冲区来计算“使用中”参数。
我想拥有/编写一个我可以看到的工具/信息
Total memory: 32GB
in use: 19GB
processes: 8GB …
Run Code Online (Sandbox Code Playgroud) 我输入了 free 命令来获取内存使用情况,如下所示:
free -m
Run Code Online (Sandbox Code Playgroud)
输出:
我想使用此命令获取相同的信息,但对于所有用户,例如:
我使用了这个命令 .. 因为它对我来说很容易 .. 将它的输出存储在 bash 脚本的变量中......
我已经在服务器上安装了 Ubuntu 14.10。服务器的主要任务是运行 MongoDB 安装以及多个 NodeJS 应用程序。NodeJS 应用程序将持续运行并接受来自外部的请求。
时不时地会有大量请求出现,导致某些 NodeJS 应用程序在短时间内使用大量 RAM。我一直在努力监测这一情况,但不确定如何看待我的发现。
到目前为止,我已经使用了两个命令来了解 RAM 使用情况。这些都是
free -m
Run Code Online (Sandbox Code Playgroud)
和
sudo htop
Run Code Online (Sandbox Code Playgroud)
第一个显示了这一点:
total used free shared buffers cached
Mem: 3442 3158 283 6 111 1203
-/+ buffers/cache: 1842 1599
Swap: 0 0 0
Run Code Online (Sandbox Code Playgroud)
当我看到这个时,我会说大约 280MB 的 RAM 是免费的。这看起来并不多。
htop 告诉我以下内容:
1 [||| 0.8%] Tasks: 61, 129 thr; 2 running
2 [||| 1.0%] Load average: 1.16 1.15 0.93
Mem[|||||||||||||||||||||||||||||||||||||1979/3442MB] Uptime: 29 days, 00:23:31
Swp[ 0/0MB]
Run Code Online (Sandbox Code Playgroud)
我现在真的不知道如何阅读这个。有人可以帮我从这里出去吗?
我想我的问题最终归结为这些:
我在运行时看到以下内容strace free
:
hans@devad22:~$ strace free 2>&1 | grep openat
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libprocps.so.8", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libsystemd.so.0", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/liblzma.so.5", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libzstd.so.1", O_RDONLY|O_CLOEXEC) = 3
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/liblz4.so.1", O_RDONLY|O_CLOEXEC) = 3
(...)
Run Code Online (Sandbox Code Playgroud)
为什么免费开放一堆压缩库?free
需要什么liblzma
?
Lubuntu 18.04在笔记本电脑(型号名称:SATELLITE C55DT-A5244)中,free
显示其RAM ram为3.3G
$ free -h
total used free shared buff/cache available
Mem: 3.3G 1.2G 444M 46M 1.7G 1.8G
Run Code Online (Sandbox Code Playgroud)
而lshw
显示 RAM 应该是 4GiB
*-memory
description: System Memory
physical id: d
slot: System board or motherboard
size: 4GiB
*-bank:0
description: SODIMM DDR3 Synchronous Unbuffered (Unregistered) 533 MHz (1.9 ns)
product: M471B5673FH0-CF8
vendor: Samsung
physical id: 0
serial:
slot: DIMM 0
size: 2GiB
width: 64 bits
clock: 533MHz (1.9ns)
*-bank:1
description: SODIMM DDR3 Synchronous Unbuffered (Unregistered) 800 …
Run Code Online (Sandbox Code Playgroud)我在双启动之前对我的硬盘进行了分区并为 ubuntu 分配了 100GB,但是当我使用free -m
和free -h
命令检查可用内存时,显示的内存只有 15 GB 和 13 GB,即总共 28 GB 远小于 100 GB,在哪里休息我的记忆呢?
Ubuntu 是否可以免费安装、定制和使用——甚至可以通过使用其上提供的其他应用程序来执行商业目的?
free ×11
ram ×6
memory-usage ×5
command-line ×2
12.04 ×1
commercial ×1
disk-usage ×1
fstab ×1
htop ×1
lshw ×1
open-source ×1
python ×1
swap ×1
zfs ×1