标签: memory

/proc/vmstat 中的 kswapd_low_wmark_hit_quickly 是什么

这个参数是什么意思呢?

# cat /proc/vmstat | grep low
kswapd_low_wmark_hit_quickly 2
Run Code Online (Sandbox Code Playgroud)

memory swap proc

2
推荐指数
1
解决办法
1653
查看次数

交换空间使用后什么时候会被清空?

我刚刚运行了 4 个内存(和 CPU)密集型任务实例,它几乎耗尽了所有 16 GB 内存,并且还占用了大量交换空间(2GB)。现在程序已完成,我注意到(通过 conky)RAM 被释放,处理器几乎恢复到空闲状态,但交换分区仍然几乎已满。

这让我想到了我的问题,内核什么时候清空交换区?由此推论,我将运行另一批密集型进程,它们也需要获得一些交换空间;交换会被清空不相关的信息,还是会直接崩溃?

memory swap

2
推荐指数
1
解决办法
1607
查看次数

为什么 Linux 对 /dev/mem 使用字符设备接口?

随机存取存储器(RAM)是一种块设备,为什么Linux使用字符设备文件而不是块设备文件来供用户进程与之交互/dev/mem

$ ls -l /dev/mem
crw-r----- 1 root kmem 1, 1 Jul 24 19:05 /dev/mem
Run Code Online (Sandbox Code Playgroud)

linux memory devices block-device

2
推荐指数
1
解决办法
1497
查看次数

Linux 内存:/proc/meminfo 和 free 之间的缓冲区+缓存存在差异?

free我有一台主机,在比较命令的输出和 .txt 文件的内容时,我不确定内存利用率/proc/meminfo。缓冲区+缓存似乎在两个源之间不匹配。

[kbrandt@ny-chsearch01]~% free -k
              total        used        free      shared  buff/cache   available
Mem:       24506972    18074768      572836         124     5859368     5996392
Swap:       4194300      130044     4064256
[kbrandt@ny-chsearch01]~% cat /proc/meminfo 
MemTotal:       24506972 kB
MemFree:          575808 kB
MemAvailable:    5996136 kB
Buffers:            3140 kB
Cached:           380032 kB
SwapCached:        61344 kB
Active:         16305144 kB
Inactive:        1860568 kB
Active(anon):   15990712 kB
Inactive(anon):  1791952 kB
Active(file):     314432 kB
Inactive(file):    68616 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:       4194300 kB
SwapFree:        4064256 kB
Dirty:                24 kB …
Run Code Online (Sandbox Code Playgroud)

linux memory proc

2
推荐指数
1
解决办法
3109
查看次数

如何查看栈、数据、堆、代码等内存段的起始地址和结束地址?

由于内存段是 Linux 操作系统的一部分,是否可以使用简单的 C 程序或任何 Linux 命令来查看它们各自的地址。

linux memory

2
推荐指数
1
解决办法
7842
查看次数

即使清除了缓存,Linux 中的可用内存也总是会下降

我正在维护一个管理 100 TPS API 流量的 linux 服务器。最初,它只有 8GB 内存。我们最近将内存翻了一番,JVM 内存消耗上限也翻了一番。可用内存仍然很低。

free -m
              total        used        free      shared  buff/cache   available
Mem:          15885        9909         156          15        5819        5584
Swap:         18431         127       18304
Run Code Online (Sandbox Code Playgroud)

如您所见,可用内存为 156MB。当缓存被清除时,free内存会增加。但它仍然在几个小时内下降到相同的水平。这是正常行为还是我需要再次增加内存?

linux memory

2
推荐指数
1
解决办法
469
查看次数

内核为 BIOS 保留 CONFIG_X86_RESERVE_LOW 内存有什么意义?

由于至少是 2.6 内核,Kconfig 提供了选项 CONFIG_X86_RESERVE_LOW,描述为“为 BIOS 保留的低内存量,以千字节为单位”。(从我理解的物理地址 0 开始,范围从 4K 到 640K)

在我的系统上启动时,我的日志在启动过程即将开始时通知我:

BIOS-provided physical RAM map:
BIOS-e820: [mem 0x0000000000000000-0x000000000009ebff] usable
Run Code Online (Sandbox Code Playgroud)

从中我推断 BIOS 告诉内核内存的第一个 0x9ebff (~640K) 字节是可用的。(未预留)

进一步几行,我可以阅读:

e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
Run Code Online (Sandbox Code Playgroud)

我理解我的设置的结果:CONFIG_X86_RESERVE_LOW = 4K

但是,考虑到 BIOS 本身断言 0-0x9ebff 范围是可用的,内核为 BIOS“保留”任何<~640K 的低内存量有什么意义?

memory configuration bios x86 linux-kernel

2
推荐指数
1
解决办法
766
查看次数

由于 RAM Cache + Buffer 增加,RAM Free 会随着时间的推移而减少

在服务器级别可视化一些与内存相关的指标时,我得到一个如下所示的图表:

图表

蓝线下方的区域是RAM Used。红线下方和蓝线上方的区域是RAM Cache + Buffer。黑线下方和红线上方的区域是RAM Free。橙色线以下和黑色线以上的区域是SWAP Used

正如您在图表中看到的:RAM Used随着时间的推移略有减少(或至少没有增加)。但 RAM Free 也在减少,因为RAM Cache + Buffer.

我们尝试估计此服务器将来是否会耗尽内存,因此创建了一条RAM Free明显减少的趋势线,因此趋势分析表明,RAM Free在不久的将来不会再有内存问题,并且会出现内存问题。

我现在的问题是:

  • 这是一种有效的方法还是我们应该专注于组合指标(例如RAM Free+ Ram Cache + Buffer)或仅关注RAM Used
  • 强烈减少RAM Free和增加RAM Cache + Buffer是关于可用内存的危险信号还是无需担心?
  • 如果这根本不是有效的方法,那么可以从这样的可视化或这样的指标中得出什么?

linux memory out-of-memory

2
推荐指数
1
解决办法
298
查看次数

内核代码是专门进程运行的吗?

我们知道程序是一个进程(例如:gedit、ssh...等)。

内核和驱动怎么样?

它们是单独的进程吗?

前任:

运行内核代码的进程。

B 进程运行驱动程序 foo。

process kernel memory

2
推荐指数
1
解决办法
667
查看次数

用户友好的方式应用 BadRAM 模式

我的 Linux 机器因 RAM 有故障而出现问题。我跑了PCMemTest-64,并确定了以下模式: 在此输入图像描述

现在,我的 Ubuntu 似乎没有 BadRAM 补丁,我对从头开始编译 Linux 感到有点紧张。所以我想知道是否有一种简单的方法可以使用 GRUB 和 Linux 中的现有工具(例如使用memmap内核参数)来禁用这些故障 RAM 地址。我很高兴失去一些除了错误地址之外的 RAM(理想情况下是千字节,而不是千兆字节)来走这条捷径。

一些版本:

  • Linux 5.19.0-32
  • GRUB 2.06
  • 乌班图22.04

我应该怎么办?

linux grub memory memtest badram

2
推荐指数
1
解决办法
810
查看次数