AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[out-of-memory](unix)

Martin Hope
user000001
Asked: 2023-11-05 15:32:18 +0800 CST

禁用 sysrq f (OOM-killer) 但保留其他 sysrq 键可操作

  • 7

我正在遵循一个在启动时自动解密硬盘驱动器的指南,使用自生成的密钥和 tpm2 变量,接近尾声时,它使这一点似乎有意义:https: //blastrock.github.io/fde- tpm-sb.html#disable-the-magic-sysrq-key

神奇的 SysRq 键允许运行一些特殊的内核操作。默认情况下,最危险的功能是禁用的,您应该保持这种状态以获得最大的安全性。

例如,其中之一 (f) 将调用 OOM-killer。此功能可能会杀死您的锁屏,从而使恶意用户能够完全访问您的桌面。

问题是我只找到了如何禁用所有sysrq 键,例如https://askubuntu.com/questions/911522/how-can-i-enable-the-magic-sysrq-key-on-ubuntu-desktop或https ://askubuntu.com/questions/11002/alt-sysrq-reisub-doesnt-reboot-my-laptop,使用添加/etc/sysctl.d/90-sysrq.conf以下行的文件:

kernel.sysrq=1

我希望如果可能的话能够使用所有其他键,例如 REISUB,以防系统崩溃,并且只禁用该F键。

我还发现这篇文章https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html,其中提到添加一个位掩码,例如:

  2 =   0x2 - enable control of console logging level
  4 =   0x4 - enable control of keyboard (SAK, unraw)
  8 =   0x8 - enable debugging dumps of processes etc.
 16 =  0x10 - enable sync command
 32 =  0x20 - enable remount read-only
 64 =  0x40 - enable signalling of processes (term, kill, oom-kill)
128 =  0x80 - allow reboot/poweroff
256 = 0x100 - allow nicing of all RT tasks

但我不明白如何仅禁用 sysrq-f,而将所有其他键设置为其默认值。

我的笔记本电脑(debian 12)上的当前设置如下:

$ grep -IirF sysrq /etc/sysctl.*
/etc/sysctl.conf:# 0=disable, 1=enable all, >1 bitmask of sysrq functions
/etc/sysctl.conf:# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html
/etc/sysctl.conf:#kernel.sysrq=438

$ grep -IirF sysrq /etc/sysctl.d/*
/etc/sysctl.d/99-sysctl.conf:# 0=disable, 1=enable all, >1 bitmask of sysrq functions
/etc/sysctl.d/99-sysctl.conf:# See https://www.kernel.org/doc/html/latest/admin-guide/sysrq.html
/etc/sysctl.d/99-sysctl.conf:#kernel.sysrq=438
out-of-memory
  • 1 个回答
  • 203 Views
Martin Hope
bodqhrohro
Asked: 2023-10-24 00:40:58 +0800 CST

是否可以为永远在线的紧急控制台预留资源?

  • 5

我强烈鄙视任何类型的自动 OOM 杀手,并希望手动解决此类情况。所以很长一段时间我都

vm.overcommit_memory=1
vm.overcommit_ratio=200

但这样一来,当内存溢出时,系统就会变得无响应。在我的带有 HDD 和 6 GB RAM 的旧笔记本电脑上,有时我不得不等待很多分钟才能切换到文本 VT,发出一些命令并等待它们被执行。这就是为什么我有许多绩效指标来提前注意到这种情况,并且经常收到问题为什么我需要它们。而且它们并不总是有帮助,因为如果当我不在笔记本电脑旁时发生内存溢出,那就太晚了。

我怀疑在配备 SSD 和 12 GB RAM 的新型笔记本电脑上情况会更好,但实际上情况更糟。我有 zRam vm.swappiness=200,它允许高达 16.4 GB 的压缩交换空间,当它几乎耗尽时,系统变得比旧笔记本电脑更加反应迟钝,甚至 VT 开关几乎无法工作,而且我无法 SSH 进入系统从本地网络,所以我唯一的手段是盲目地用 Alt+SysRq+RF 调用内核的手动 OOM,有时会选择杀死重要进程,例如dbus-daemon. 当交换几乎已满时,我可能会创建一个带有声音警报的守护进程,但这又是一个部分权宜之计,因为无论如何我可能都无法及时到达。

过去,我尝试使用 来缓解这种情况thrash-protect。它发送SIGSTOP到贪婪的进程,然后自动SIGCONT-s 它们,这对推迟总锁定并手动解决问题有很大帮助,但在严重过载的情况下,它几乎开始冻结所有内容(尽管可以明确将其列入允许名单)。而且它有很多刺激性的副作用。例如,如果 shell 被冻结,则其子进程在解冻 shell 后可能仍保持冻结状态。如果两个进程共享一条消息总线,并且其中一个进程被冻结,则消息会在总线中快速累积,从而导致 RAM 使用量再次快速增长,或者死机(图形服务器和多进程浏览器尤其容易出现这种情况)。

我尝试sshd以 -20 优先级运行,就像类似问题中所建议的那样,但这并没有真正帮助:它与默认优先级一样无响应。

我想要一些紧急控制台,它始终锁定在 RAM 中,并且无论系统其余部分如何超载,都可以使用。类似于 Windows NT≥6 中的 Ctrl+Alt+Del 屏幕,甚至更好。鉴于可以使用crashkernel参数保留一些 RAM,我将其用于kdump,我怀疑也可以利用此或其他一些内核机制来完成该任务?

out-of-memory
  • 2 个回答
  • 33 Views
Martin Hope
SGriffeth
Asked: 2022-02-11 05:53:39 +0800 CST

安装 MX Linux 期间系统内存不足

  • 0
Hardware specs :
Product Name    HP ProBook 430 G4
Processor 1     Intel(R) Core(TM) i5-7200U CPU @ 2.50GHz (x86)
Memory Size     4096 MB
System BIOS     P85 Ver. 01.03 12/05/2016
Serial Number   5CD7097FPZ

内存计数器右上角,85%

我将 MX 映像写入可移动媒体,即 dd if=mxlinux.iso of=/dev/sda status=progress && sudo injection /dev/sda BIOS 找到媒体的 MBR,它启动 GRUB,启动 MX Linux,并且没有用户输入在大约 2 分钟内消耗我的内存,然后崩溃。

Debian 也遇到了同样的问题,至少在分区步骤之前它不会崩溃。Linux Mint 和 Ubuntu 由于无法排除故障、随机错误而无法工作。

我不想使用 Windows,作为最后的手段,最好使用类似 UN*X 的操作系统。

我应该怎么办?我应该尝试哪些操作系统?

distribution-choice out-of-memory
  • 1 个回答
  • 93 Views
Martin Hope
John Hascall
Asked: 2019-06-14 07:44:21 +0800 CST

是否有库调用或系统调用来设置 /proc/self/oom_score_adj?

  • 1

我有一个重要的过程,OOM Killer 看中了一个不幸的结果。我想让这种可能性降低。所有谷歌出现的东西都是这样的:

echo -1000 > /proc/${PID}/oom_score_adj

而我想在程序源本身中做到这一点。是否有库调用或系统调用来执行此操作,还是我唯一的选择getpid(), open(), write()& close()?

out-of-memory
  • 1 个回答
  • 192 Views
Martin Hope
Raf
Asked: 2019-05-04 09:04:47 +0800 CST

OOM Killer 内存统计报告中的缩写是什么意思?

  • 2

当 OOM Killer 或内核报告内存状态时,它使用下一个缩写

Node 0 DMA: 26*4kB (M) 53*8kB (UM) 33*16kB (ME) 23*32kB (UME) 6*64kB (ME) 7*128kB (UME) 1*256kB (M) 2*512kB (ME) 0*1024kB 0*2048kB 0*4096kB = 4352kB
Node 0 DMA32: 803*4kB (UME) 3701*8kB (UMEH) 830*16kB (UMH) 2*32kB (H) 0*64kB 0*128kB 1*256kB (H) 0*512kB 0*1024kB 0*2048kB 0*4096kB = 46420kB

我了解其中一些,例如M-可移动UMH-不可移动高。但是我找不到什么意思E 在哪里可以找到有关它的文档?

我的情况,我有下一条消息

page allocation stalls for 27840ms, order:0, mode:0x14200ca(GFP_HIGHUSER_MOVABLE)

进程请求 4kb 页面是什么意思(2^0 * 4kb),应该编码为 (MH) 对吗?还是HIGHUSER以不同的方式编码?

linux out-of-memory
  • 1 个回答
  • 786 Views
Martin Hope
humanityANDpeace
Asked: 2018-11-24 07:16:00 +0800 CST

为什么 linux out-of-memory (OOM) 杀手不能自动运行,而是在 sysrq-key 上运行?

  • 11

我发现当遇到内存不足的 OOM 情况时,我的 linux box UI 会在很长一段时间内完全冻结。

我已经设置了magic-sysrq-key,然后使用 echo 1 | tee /proc/sys/kernel/sysrq并遇到OOM-> UI-unresponsive情况能够按下日志显示Alt-Sysrq-f导致dmesgOOM终止/终止进程并由此解决OOM情况。

我的问题是现在。为什么 linux 变得像 GUI 冻结一样无响应,但似乎没有触发相同的 OOM-Killer,我确实通过Alt-Sysrq-f组合键手动触发了它?

考虑到在OOM“冻结”情况下系统反应迟钝,甚至不允许及时(< 10秒)响应命中Ctrl-Alt-F3(切换到tty3),我不得不假设内核必须意识到它的无响应,但仍然本身并没有调用Alt-Sysrq-fOOM-Killer ,为什么?

这些设置可能会对所描述的行为产生影响。

$> mount | grep memory
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
$> cat /sys/fs/cgroup/memory/memory.oom_control 
oom_kill_disable 0
under_oom 0
oom_kill 0

虽然据我了解,内存 cgroup 没有激活或禁用 OOM(显然必须有充分的理由让 OOM_kill 激活和禁用,或者我无法正确解释输出,也under_oom 0有点不清楚,仍然)

linux out-of-memory
  • 2 个回答
  • 3321 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve