即使有可用的交换,我的服务器也耗尽了内存。
为什么?
我可以这样重现它:
eat_20GB_RAM() {
perl -e '$a="c"x10000000000;print "OK\n";sleep 10000';
}
export -f eat_20GB_RAM
parallel -j0 eat_20GB_RAM ::: {1..25} &
Run Code Online (Sandbox Code Playgroud)
当稳定(即所有进程都进入睡眠状态)时,我再运行一些:
parallel --delay 5 -j0 eat_20GB_RAM ::: {1..25} &
Run Code Online (Sandbox Code Playgroud)
当稳定(即所有进程都进入睡眠状态)时,使用大约 800 GB RAM/swap:
$ free -m
total used free shared buff/cache available
Mem: 515966 440676 74514 1 775 73392
Swap: 1256720 341124 915596
Run Code Online (Sandbox Code Playgroud)
当我再运行一些时:
parallel --delay 15 -j0 eat_20GB_RAM ::: {1..50} &
Run Code Online (Sandbox Code Playgroud)
我开始得到:
Out of memory!
Run Code Online (Sandbox Code Playgroud)
即使有明显的交换可用。
$ free
total used free shared buff/cache available
Mem: 528349276 518336524 7675784 14128 …Run Code Online (Sandbox Code Playgroud) 我已经进行了几次搜索,但我在 Google 上找不到任何关于原因的信息,但是 arch 分配了 7.7 个演出给 ram 和 7.9 个演出。
我只有 8 个演出内存。
它比常规分配了更多的内存来交换
我怎么能改变分配?
的输出cat /proc/meminfo:
MemTotal: 8091960 kB
MemFree: 4925736 kB
MemAvailable: 6131188 kB
Buffers: 268936 kB
Cached: 1219460 kB
SwapCached: 0 kB
Active: 1527516 kB
Inactive: 1301140 kB
Active(anon): 768904 kB
Inactive(anon): 711440 kB
Active(file): 758612 kB
Inactive(file): 589700 kB
Unevictable: 32 kB
Mlocked: 32 kB
SwapTotal: 8300540 kB
SwapFree: 8300540 kB
Dirty: 1960 kB
Writeback: 0 kB
AnonPages: 1306968 kB
Mapped: 382800 kB …
如何防止 chrome 占用超过 4GB 的内存。有时,他决定使用 7GB(总共 8GB RAM)之类的东西,并使我的计算机无法使用。
你有什么帮助吗。
PS:我什至没有打开超过 10 个标签。编辑:也许我做了...类似 15 的事情。无论如何,我希望 chrome 冻结或关闭而不是冻结整个系统。
以下三个输出基本上是同时进行的:
最佳:
top - 02:54:36 up 2 days, 13:50, 3 users, load average: 0.05, 0.05, 0.09
Tasks: 181 total, 1 running, 179 sleeping, 0 stopped, 1 zombie
%Cpu(s): 2.5 us, 0.8 sy, 0.0 ni, 96.6 id, 0.1 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem: 16158632 total, 11234480 used, 4924152 free, 844 buffers
KiB Swap: 16777212 total, 0 used, 16777212 free, 10640832 cached
Run Code Online (Sandbox Code Playgroud)
免费-h:
total used free shared buffers cached
Mem: 15G 10G 4.7G 0B 844K 10G
-/+ buffers/cache: …Run Code Online (Sandbox Code Playgroud) 启动VirtualBox后,计算机变得迟钝,然后由于OOM而完全挂起。通常,OOM 应该开始杀死进程以释放一些空间,但这并没有发生(这是我第二次遇到这种情况)。
我在文本编辑器中有一些未保存的重要工作,所以我希望在使用SysRq+杀死当前控制台中的所有进程后,在系统 RAM 中找到它K。有问题的机器是具有 8 GiB RAM 的笔记本电脑,运行 Linux x86_64 3.7.5,以 SSD 作为目标磁盘。
我的第一次尝试是dd if=/dev/mem of=memory,但在读取 1MiB 数据后失败了。接下来,我尝试了dd if=/dev/fmem of=memory bs=1M,但在读取 3010461696 字节(正好 2871 MiB)后停止了。在查看/proc/mtrr(如下所示)后,我决定尝试添加skip=4096. 这最终变慢了,读取速度仅为 3 MiB/秒,所以我中断了它(产生了 5.8 GiB 的文件)。(至少文件的最后 100 MiB 包含FFs)
reg01: base=0x000000000 ( 0MB), size= 2048MB, count=1: write-back
reg02: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back
reg03: base=0x100000000 ( 4096MB), size= 4096MB, count=1: write-back
reg04: base=0x200000000 ( 8192MB), size= 1024MB, count=1: …Run Code Online (Sandbox Code Playgroud) 我有一个 Intel Atom D2700 (Synology NAS DS412+),4GB RAM 运行内核 3.2.30 x86_64。本机有一个 DIMM 插槽。
我和其他人发现的一件事是,当添加 4GB DIMM 与 2GB DIMM 时,该单元在负载下会遇到明显更高的 CPU 使用率(例如,“重型”Java 应用程序,如 Minecraft 服务器或 Plex 转码等) . 许多用户发现,当他们降回 2GB 时,所有这些高负载问题都会消失。
这是可能导致这种情况的特定于 Linux 的东西吗?或者这是 Atom 本身的问题?
kernel: EDAC MC0: UE page 0x0, offset 0x0, grain 0, row 7, labels ":": i3200 UE
今天突然间,我们的 CentOS 6.4 版(最终版)系统开始抛出 EDAC 错误。我重新启动,错误停止了。
我一直在寻找答案,但它们分为两个阵营,内存或芯片组。我想要一些关于在哪里进一步搜索以缩小到芯片组或内存的建议。
我想创建一个从不交换到磁盘的固定大小的 Linux ramdisk。请注意,我的问题不是“为什么”我要这样做(例如,它是出于教育目的或研究目的):问题是如何去做。
据我所知ramfs,不能限制大小,所以它不符合我对固定大小 ramdisk 的要求。
似乎tmpfs 也可以交换到磁盘。所以它不符合我从不交换到磁盘的要求。
如何创建一个从不交换到磁盘的固定大小的 Linux ramdisk?
例如,是否可以tmpfs在内部创建ramfs(这样的解决方案是否符合我的要求),如果可以,如何创建?
请注意,性能不是问题,ramdisk 已满并触发“磁盘已满”错误也不是问题。
我的问题是由错误的内存模块和很可能是损坏的内核二进制文件引起的。
我刚刚用基本上全新的硬件启动了我的电脑。我之前一直在运行 Debian 6.0 AMD64,那里没有任何变化(字面上;我只是从旧主板上拔下硬盘,然后将它们重新连接到新主板),但发现了一些奇怪的东西:
free -m报告 2985 MB 的 RAM2985 MB 似乎太接近神奇的 3 GB 标记,纯属巧合,但uname -r打印出来2.6.32-5-amd64;显然是 64 位内核,这是我正在使用的系统驱动器上安装的全部内容。新主板是华硕 M5A97 Pro,它有四个 DDR3 插槽,据说支持 8 GB 模块。内存模块本身是相同的,四个 Corsair XMS3 PC12800 8 GB,一起购买。
我没有详细查看 UEFI 设置,但确实浏览了它并没有看到任何似乎需要更改以启用大量 RAM 的内容。
编辑:进一步确认我确实在运行 64 位:
# file `which free`
/usr/bin/free: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for …Run Code Online (Sandbox Code Playgroud) 我目前在运行 Java 时遇到了一些问题。由于堆问题,它不会启动。但是我有超过 9 GB 的可用内存(如果您认为缓存是空的,甚至是 16 GB)。这是我得到的错误(和free命令)
root@server: ~ # java
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
root@server: ~ # free
total used free shared buffers cached
Mem: 25165824 15941148 9224676 0 0 7082176
-/+ buffers/cache: 8858972 16306852
Swap: 0 0 0
Run Code Online (Sandbox Code Playgroud)
我在虚拟化服务器上运行 64 位 Debian。虚拟化软件是 OpenVZ。这是我的 Java 版本(我可以在停止两个 VM(当前正在运行的 4 …
ram ×10
linux ×6
memory ×3
swap ×2
64bit ×1
arch-linux ×1
atom ×1
chrome ×1
debian ×1
disk ×1
filesystems ×1
htop ×1
java ×1
performance ×1
top ×1