我一直在阅读这个问题,它有很多很好的信息。
但是假设您有足够的 RAM,我认为应该在 SSD 上禁用页面文件以延长使用寿命。我知道你会在崩溃时丢失核心转储,但没有多少人需要这些信息。
根据我的理解,如果没有页面文件,当您达到 RAM 的限制时,可能会触发磁盘抖动。但是对于 SSD 来说,没有抖动的概念,读取速度很快。
你们有什么感想?
是否建议在工作站中使用 ECC RAM,还是仅在服务器中使用?如果非 ECC RAM 可以在 PC 上运行,我们为什么还需要 ECC RAM?
在 2.6.31-302 x86-64 内核上运行 Ubuntu。总体问题是我在“缓存”类别中的内存不断增加,即使我们的应用程序需要它也不会被释放或使用。
所以这就是我从“免费”命令中得到的。乍一看,这些都没有异常。
# free
total used free shared buffers cached
Mem: 7358492 5750320 1608172 0 7848 1443820
-/+ buffers/cache: 4298652 3059840
Swap: 0 0 0
Run Code Online (Sandbox Code Playgroud)
有人会说的第一件事是“别担心,Linux 会自动管理该内存。” 是的,我知道内存管理器应该如何工作;问题是它没有做正确的事情。此处“缓存”的 1.4 GB 似乎已保留且无法使用。
我对 Linux 的了解告诉我 3 GB 是“免费的”;但系统的行为则不然。当 1.6 GB 的实际空闲内存在使用高峰期用完时,一旦需要更多内存(并且第一列中的“空闲”接近 0),就会调用 OOM 杀手,进程被杀死,并且问题开始出现即使-/+ 缓冲区/缓存行中的“空闲”仍然有大约 1.4 GB 的“空闲”。
我已经调整了关键进程的 oom_adj 值,所以它不会使系统陷入困境,但即使如此,重要的进程也会被杀死,我们永远不想达到那个点。特别是当理论上 1.4GB 仍然是“免费的”时,如果它只会驱逐磁盘缓存。
有谁知道这里发生了什么?互联网上充斥着关于 Linux 'free' 命令和“为什么我没有任何可用内存”的愚蠢问题,因此我找不到关于这个问题的任何信息。
我脑海中浮现的第一件事是交换已关闭。我们有一个坚定不移的系统管理员;如果他们得到支持,我愿意接受解释。这会导致问题吗?
运行后这里是免费的echo 3 > /proc/sys/vm/drop_caches:
# free
total used free shared buffers cached
Mem: 7358492 5731688 …Run Code Online (Sandbox Code Playgroud) 根据标题:
如何知道 FreeBSD 服务器上安装了多少内存?
谢谢!
HP 4050N LaserJet 打印机的 RAM 升级是否重要?我们拥有这台真正的激光打印机主力。它是 HP 4050N,已使用多年。在过去的几年中,我注意到开始打印之前的处理时间可能需要很长时间。在某些情况下,某些打印队列的处理时间太长,我们最终会杀死它们并将其发送到网络上的其他打印机。
这台 HP 4050N 打印机共有 16 MB 的 RAM。我相信它内置了 8 MB,我怀疑它在主板上。RAM 有三个插槽。一个插槽有一个 8 MB 的 RAM 棒。我查看了用户指南,显然这个型号最多可以达到 200 MB 的 RAM。
我已经看到这款打印机的 RAM 以 64 MB 或 128 MB 的价格出售,非常便宜。
我的问题是,通过将总内存提高到 80 MB 或 144 MB 来升级这台打印机的 RAM 是否会显着改善处理时间,以便在打印包含现代图形的输出时值得做?或者 RAM 甚至是问题,而打印机 CPU 的处理速度才是真正的瓶颈?
更新:我以 10.00 美元(128 MB)订购的 RAM 到货并安装了它。因此,HP4050N 从总共 16 MB 的 RAM 变为 144 MB。我打印了之前一直处于“处理”状态并且从未出现过的测试打印,但是在这次升级之后,它正常打印了。这符合我们的需求。对于您的情况,正如他们所说,您的里程可能会有所不同。
假设我有 20 个用户登录我的 linux 机器。我怎么知道他们每个人使用了多少内存?
我们遇到了一个问题,查询一个大约有 5000 万行且索引大小为 4 GB(表大小约为 6 GB)的表导致数据库服务器交换内存,并显着减慢。我很确定这与超出临时表大小有关,并且它被交换到磁盘。
如果我将我的数据库服务器从 32 GB RAM 升级到 64 GB RAM,我想知道 MySQL 数据库是否能够充分利用这个额外的内存而不是交换。我已经研究了一些变量(例如 KEY_BUFFER_SIZE 等...),它们似乎支持超过 64 GB 的设置值。但是,MySQL 文档说 tmp_table_size 最大为 4 GB。
那么内存升级值得吗?“查询大表”问题会从中受益,还是因为 4 GB 的限制而无济于事?我知道还有其他可能的解决方案,例如重组以不同方式分区的表等......但是如果不改变表的任何内容,额外的内存会有所帮助吗?
另外,一般来说,当从 32 GB RAM 移动到 64 GB RAM 时,是否还有其他与内存相关的变量是 MySQL 无法利用的?
我们使用 64 位 linux (Ubuntu) 作为我们的数据库服务器。
谢谢,盖伦
我想在定制板上测试 no-ECC 内存芯片的完整性和全局性能
是否有一些工具可以在 linux 下运行,以便我可以同时监控系统和全球温度?
一般是否有一些无 ECC 特定的测试要做?
编辑 1:
我已经知道如何监控温度(我使用了一个特殊的平台功能 /sys/devices/platform/......../temp1_input)。
目前 :
我找到了这个发行版:http : //www.stresslinux.org/sl/
我会继续检查直接在linux下运行的工具,没有太大的依赖,之后我可能会尝试解决stresslinux,memtest,stress for fedora之类的解决方案。
谢谢你的回答,我会继续调查
我们正在尝试调查中等负载下 java 进程的内存使用情况。
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12663 test 20 0 8378m 6.0g 4492 S 43 8.4 162:29.95 java
Run Code Online (Sandbox Code Playgroud)
如您所见,我们的常驻内存为 6Gb。现在有趣的部分是:这个过程是用这些参数执行的:
查看这些设置和实际内存使用情况,我们偶然发现了我们期望此进程使用的内容与它实际使用的内容之间的差异。
通常我们的内存问题是通过分析堆转储来解决的,但在这种情况下,我们的内存是在堆外的某个地方使用的。
问题:尝试找出如此高内存使用率的原因的步骤是什么?哪些工具可以帮助我们识别在该过程中使用内存的内容?
编辑 0
看起来这不是堆相关的问题,因为我们仍然有相当多的空间:
jmap -heap 12663
Run Code Online (Sandbox Code Playgroud)
结果(编辑以节省空间)
Heap Configuration:
MinHeapFreeRatio = 40
MaxHeapFreeRatio = 70
MaxHeapSize = 2147483648 (2048.0MB)
NewSize = 536870912 (512.0MB)
MaxNewSize = 536870912 (512.0MB)
OldSize = 1610612736 (1536.0MB)
NewRatio = 7
SurvivorRatio = 8
PermSize = 21757952 …Run Code Online (Sandbox Code Playgroud)