当我看到这个短语(或类似的)时,例如今天在如何在 Linux 上使用免费命令(日期为 2020 年的文章)中:
\n\n\n未用于某些用途的 RAM\xe2\x80\x99 是浪费的 RAM
\n
我记得用于移动设备的LPDDR :
\n\n\n额外的节省来自温度补偿刷新(DRAM 在低温下需要更少的刷新)、部分阵列自刷新以及牺牲所有内存内容的“深度断电”模式。
\n
由于Android基于Linux内核,是否已经支持将部分内存置于“深度掉电”状态?一些内核参数可以以最小化总内存使用量的方式管理数据?
\n总而言之:Linux 内核是否放弃了普遍应用“RAM that isn\xe2\x80\x99t being used for things is wasted RAM”的方法?
\n我希望通过任何可能的方式降低我的启动时间。我的笔记本电脑有大约 8GB 的 RAM,如果有任何方法可以利用它来加快启动时间,那就太棒了。有没有办法让内核将自身和所有模块立即加载到 RAM 中以加快速度?Linux内核是否已经这样做了?
我目前的电脑无法流畅运行全高清电影,我已经接受了这个想法,因为这似乎是显卡问题,我的功能不够强大,无法完成工作(这仍然很有可能)。但是最近我的一个朋友买了一个 SSD 并将其放在类似规格的笔记本电脑中,他现在可以运行 FullHD 电影。现在我怀疑它是 ar/w 速度问题而不是 GPU 问题。
现在的问题,因为我很好奇,我没有SSD,我有时间浪费时间进行实验。是否可以将文件加载到 RAM 上并从那里读取,希望 RAM 读取速度与 SSD 相似?
我的处理器正在使用我的 RAM 内存的很大一部分作为缓存,因此我想清理它;会不会有偏见?
我刚刚购买了新 RAM,我想进行基准测试并与我的旧 RAM 进行比较。我怎样才能做到这一点?
有一段时间,我在我的 Debian 网络服务器(VPS/虚拟机)上遇到了 RAM 短缺的问题。如果它们经常发生,这不会不寻常。但他们没有。这是穆宁的图表:

为了解决这些谜语,我使用atop. 这是 7:00AM 和 9:00AM 的两个快照 - 在 RAM 短缺期间和之后(使用该-m选项查看内存相关信息):
ATOP - <snip> 2014/09/10 07:00:02 ------ 10m0s elapsed
<snip>
MEM | tot 2.0G | free 79.1M | cache 102.4M | dirty 0.1M | buff 53.2M | slab 90.8M | | |
SWP | tot 2.0G | free 2.0G | | | | | vmcom 748.1M | vmlim 3.0G |
DSK | sda | busy 1% | read 917 | write 1695 …Run Code Online (Sandbox Code Playgroud) Memtester 输出了以下响应,
memtester version 4.3.0 (64-bit)
Copyright (C) 2001-2012 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).
pagesize is 4096
pagesizemask is 0xfffffffffffff000
want 10240MB (10737418240 bytes)
got 10240MB (10737418240 bytes), trying mlock ...locked.
Loop 1/1:
Stuck Address : testing 1FAILURE: possible bad address line at offset 0x12325b7a8.
Skipping to next test...
Random Value : ok
FAILURE: 0xa003776ad640ac0c != 0xe003776ad640ac0c at offset 0x7a4f2680.
Compare XOR : FAILURE: 0xe7139f89d94112c0 != 0x27139f89d94112c0 at offset 0x7a4f2680.
FAILURE: 0x4e53ee3a9704bdf5 != …Run Code Online (Sandbox Code Playgroud) 我在具有 512MB RAM 的旧 x86 系统上重新安装了新的 debian 10(一切正常)。
可用内存为 431MB。(现在没有插入显卡)
我不认为在旧的 3.x 内核上“保留”了那么多内存
$ free -m
total used free shared buff/cache available
Mem: 431 59 311 4 60 355
$ cat /proc/meminfo
MemTotal: 441568 kB
Run Code Online (Sandbox Code Playgroud)
日志中有更多关于内存的内容,不确定什么是相关的。我只是好奇丢失的 RAM 去了哪里。
编辑:整个 dmesg
[ 0.000000] Linux version 4.19.0-5-686-pae (debian-kernel@lists.debian.org) (gcc version 8.3.0 (Debian 8.3.0-7)) #1 SMP Debian 4.19.37-3 (2019-05-15)
[ 0.000000] x86/fpu: x87 FPU will use FXSAVE
[ 0.000000] BIOS-provided physical RAM map:
[ 0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009fbff] usable
[ 0.000000] BIOS-e820: [mem …Run Code Online (Sandbox Code Playgroud) 我有一个带有 8 x 16 GB DIMM 的系统,所以总共 128 GB。
然而,MemTotal报告的/proc/meminfo是131927808 kB,所以131 GB
我的研究表明,如果有的话, meminfo 加起来应该小于RAM 总数。
了解 /proc/meminfo 文件(分析 Linux 中的内存利用率)
所以谷歌的计算器报告这个总和为131(刚除以1000000)
https://www.google.com/search?q=131927808+kB+to+GB
如果您将 the 解释kB为 kibibytes,则相反:(135 GB更糟!)
如果你把它变成 Kibibytes 到 Gibibytes,那就是 125
或千字节到千兆字节 122
以下是详细信息。谁能帮助我理解这种差异?
# cat /proc/meminfo
MemTotal: 131927808 kB
MemFree: 3186732 kB
MemAvailable: 99191856 kB
Buffers: 3476036 kB
Cached: 115792344 kB
SwapCached: 120540 kB
Active: 80544652 kB
Inactive: 45017236 kB …Run Code Online (Sandbox Code Playgroud) 在服务器上,启动时的 linux 内核会通知 RAM 设置。它表示在物理 512GiB RAM (536409480kiB) 中,只有大约 503GiB RAM (527942676kiB) 可用。
root@ada:~# dmesg | grep Memory:
[ 5.891484] Memory: 527942676K/536409480K available (10252K kernel code, 1241K rwdata, 3320K rodata, 1592K init, 2272K bss, 8466804K reserved, 0K cma-reserved)
Run Code Online (Sandbox Code Playgroud)
考虑到 bios 保留的 IO 区域,预计会有一些内存不可用。
root@ada:~# dmesg | grep reserved
[ 0.000000] BIOS-e820: [mem 0x000000000009c000-0x000000000009ffff] reserved
[ 0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000004f66f000-0x0000000057677fff] reserved
[ 0.000000] BIOS-e820: [mem 0x000000006cdcf000-0x000000006efcefff] reserved
[ 0.000000] BIOS-e820: [mem 0x0000000070000000-0x000000008fffffff] reserved
[ 0.000000] …Run Code Online (Sandbox Code Playgroud)