我正在使用具有 128GB 内存和 24 个内核的 linux 服务器。我使用 top 来查看它使用了多少。它的输出粘贴在帖子的末尾。这里有两个问题:
(1) 我看到每个正在运行的进程占用的内存百分比非常小(%MEM 不超过 0.2%,大多数只有 0.0%),但是如何使用总内存几乎就像第四行输出( “内存:总共 130766620k,已使用 130161072k,605548k 空闲,919300k 缓冲区”)?所有进程的内存使用百分比总和似乎不太可能达到几乎 100%,不是吗?
(2)如何理解第一行的平均负载(“平均负载:14.04、14.02、14.00”)?
感谢致敬!
编辑:
谢谢!
我也很喜欢听一些基于已用内存百分比的粗略数字来确定服务器是否负载过重,因为我曾经成为一个在不了解当前负载的情况下塞满服务器的人。
交换被认为与内存几乎相同吗?比如当内存和swap大小差不多的时候,如果内存快用完了,但是swap还是大体空闲的,我是不是可以只看内存+swap的使用比例还不高,运行其他新的流程?
您如何同时考虑 CPU 或内存(或内存 + 交换)的使用情况?如果它们中的任何一个或两者都达到太高,您会担心吗?
顶部的输出?
$顶
top - 12:45:33 up 19 days, 23:11, 18 users, load average: 14.04, 14.02, 14.00 任务:总共 484 个,运行 12 个,睡眠 472 个,停止 0 个,僵尸 0 个 Cpu(s):36.7%us、19.7%sy、0.0%ni、43.6%id、0.0%wa、0.0%hi、0.0%si、0.0%st 内存:总共 130766620k,已使用 130161072k,605548k 空闲,919300k 缓冲区 交换:总共 63111312k,已使用 500556k,空闲 62610756k,缓存 124437752k PID 用户 PR NI VIRT RES SHR S %CPU %MEM TIME+ …
我发现有时我的 Linux 机器内存不足,它开始拆除随机进程来处理它。
我很好奇管理员如何避免这种情况?是增加内存量的唯一真正解决方案(单独增加交换会有所帮助吗?),还是有更好的方法来设置带有软件的盒子来避免这种情况?(即配额,或一些这样的?)。
我需要从 vmstat 中获取内存使用率,但我不太明白 vmstat 中显示的一些与内存相关的数字。
特别是,给定这样的输出
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 139728 45396 199128 1236360 1 2 4 622 3 1 51 4 43 2 0
Run Code Online (Sandbox Code Playgroud)
系统的总内存量是多少?是'swpd' + 'free' + 'buff' + 'cache',总共是1620612吗?
系统的可用内存量是多少?是否为 45396,如“免费”列中所示?
问题是它们不加起来,甚至看起来与“顶级”报告的内容不符。我与上面的 'vmstat's 几乎同时使用的 'top' 的输出是:
[...]
Mem: 4059616k total, 3965504k used, 94112k free, 200020k buffers
[...]
Run Code Online (Sandbox Code Playgroud)
所以......我假设'vmstat'中一定有我不知道的隐藏数字/选项?
为此,我需要使用 'vmstat' 而不是其他命令,因为这是要求的内容。
所以理想情况下,我想从 'vmstat' 实现的是内存使用百分比,如下所示:
<used_memory>/<total_memory> * …Run Code Online (Sandbox Code Playgroud) 我在带有一些轻量级服务器应用程序的 Slicehost 虚拟服务器上运行 Ubuntu 8.04 - apache22、svnserve、mysql 和 proftpd。唯一严重的服务限制是 RAM - 256MB 是我支付的费用。
我注意到如果我让系统运行几天/几周,空闲 RAM 的数量会慢慢减少,并且很快就会使用分页文件。例如,在重新启动时,我可能有 60% 的 RAM 空闲,第二天可能是 55%,等等。
total used free shared buffers cached
Mem: 256 114 141 0 3 50
-/+ buffers/cache: 61 194
Swap: 511 0 511
Run Code Online (Sandbox Code Playgroud)
我将如何防止可用内存量下降?
编辑:这是我ps -aux列出的最大内存消费者。我省略了所有系统进程。我可以看到 apache 和 mysql 占据内存使用量的首位。
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1369 0.0 0.3 16844 952 ? S<s 00:10 0:00 /sbin/udevd --daemon
syslog 2110 0.0 0.2 12288 …Run Code Online (Sandbox Code Playgroud) 我们在主机托管的服务器(一个真正的物理服务器,而不是一个VM),运行64位的Debian( :)。uname -r3.16.0-4-amd64
/proc/meminfo报告大约 4 GiB 总内存:
$ head -n 1 /proc/meminfo
MemTotal: 4051692 kB
Run Code Online (Sandbox Code Playgroud)
free报告相同(我只看了total专栏;我不是在谈论已用、免费、共享、缓冲区、缓存):
$ free -k
total used free shared buffers cached
Mem: 4051692 3867356 184336 220908 63948 1203596
-/+ buffers/cache: 2599812 1451880
Swap: 15728208 652540 15075668
Run Code Online (Sandbox Code Playgroud)
也是如此dmesg | grep Memory:
$ dmesg | grep Memory
[ 0.000000] Memory: 4034240K/4185236K available (5287K kernel code, 949K rwdata, 1836K rodata, 1208K init, 840K bss, 150996K reserved)
Run Code Online (Sandbox Code Playgroud)
但是 dmidecode 报告 4 * …
我有一个 debian 系统。它有8GB内存。当我执行 top 时,它显示使用了 7.9 GB 内存并且空闲。我把从顶部运行的所有程序的内存使用量加起来,它们加起来几乎不超过 50 MB。那么,剩余的内存在哪里使用?我可以更详细地了解内存使用情况吗?检查内存使用情况的更好方法是什么?
系统没有过载,也没有占用内存 (RAM) 的巨大进程,但它仍然只有 20-40 MB 可用空间。
谁在占用 RAM,我应该避免它吗?(如何?)
我们正在运行具有 23 个内核(cpuinfo 显示 22 为最高进程数)和 66 Gig RAM 的服务器。这里的开发团队正在运行一些占用内存的应用程序。
我观察到: 1. 即使内存运行非常低(可用内存 = 167 MB),也没有交换使用。想知道为什么服务器拒绝使用交换。对此有何想法?2.系统负载有时会增加到像 70+ 这样的数字,我可以看到这些应用程序是 I/O 密集型的..这会导致如此高的平均负载吗?
这是 VMstat 的输出
procs -----------内存----------- ---swap--- -----io---- --system--- -----cpu ------ rb swpd 免费 buff 缓存 si so bi bo in cs us sy id wa st 3 0 0 28932 1049 31757 0 0 6 145 6 33 1 0 98 0 0 .. .. 12 2 0 167 1876 57749 0 0 932 49604 2306 96856 26 8 58 …
我正在研究用于科学数据分析的服务器。它运行 RHEL 6.4 它有将近 200GB 的 RAM。对于通过 SSH 的用户来说,它的运行速度非常缓慢,经过一番摸索之后,我很快注意到 RAM 使用率非常高。奇怪的是,即使处于空闲状态,它仍然使用大量 RAM:

我还查看了通过htop,我看不到任何正在运行的进程使用了超过 0.1% 的 RAM。所以我想知道发生了什么?现在,唯一运行的用户启动进程是两个 NFS 挂载共享之间的 rsync。
我尝试重新启动服务器,几分钟后它的响应速度更快,但随后内存使用量再次飙升。
有什么办法可以查明为什么内存使用率如此之高?
我在我的服务器上运行 Ubuntu 9.10。它工作正常,只是随着时间的推移(通常是几天)内存使用量只会不断增长,直到它总是用完并需要重新启动。
它运行 Apache、Samba、ProFTPd、Postfix、Munin 和 Webmin。
有什么办法可以释放不再需要的内存?
linux ×8
memory ×7
top ×2
ubuntu ×2
dmidecode ×1
load-average ×1
low-memory ×1
memory-usage ×1
rhel6 ×1
swap ×1
ubuntu-9.10 ×1
vmstat ×1