- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我面临着将 inotify 放入大量文件夹(~2 000 000)的问题。我将 max_user_watches 更改为 8388608 :
echo 8388608 > /proc/sys/fs/inotify/max_user_watches
为了支持这个数量的 watch ,服务器有 3Gb 的可用内存。但是当我启动 inotify 脚本时,几个小时后(~15 小时),它被杀死了。这是/var/log/messages 跟踪:
inotify.sh invoked oom-killer: gfp_mask=0xd0, order=1, oom_adj=0
inotify.sh cpuset=/ mems_allowed=0
Pid: 12488, comm: inotify.sh Not tainted 2.6.32-5-686 #1
Call Trace:
[<c1089534>] ? oom_kill_process+0x60/0x201
[<c1089ab1>] ? __out_of_memory+0xf4/0x107
[<c1089b1e>] ? out_of_memory+0x5a/0x7c
[<c108c3c9>] ? __alloc_pages_nodemask+0x3ef/0x4d9
[<c108c4bf>] ? __get_free_pages+0xc/0x17
[<c102f06c>] ? copy_process+0xb7/0xf28
[<c11028ad>] ? security_file_alloc+0xc/0xd
[<c1030017>] ? do_fork+0x13a/0x2bc
[<c10b182d>] ? fd_install+0x1e/0x3c
[<c103b996>] ? recalc_sigpending+0xf/0x2e
[<c103bcae>] ? sigprocmask+0x9d/0xbc
[<c1001dae>] ? sys_clone+0x21/0x27
[<c10030fb>] ? sysenter_do_call+0x12/0x28
Mem-Info:
DMA per-cpu:
CPU 0: hi: 0, btch: 1 usd: 0
CPU 1: hi: 0, btch: 1 usd: 0
Normal per-cpu:
CPU 0: hi: 186, btch: 31 usd: 0
CPU 1: hi: 186, btch: 31 usd: 41
HighMem per-cpu:
CPU 0: hi: 186, btch: 31 usd: 0
CPU 1: hi: 186, btch: 31 usd: 34
active_anon:53061 inactive_anon:13287 isolated_anon:0
active_file:2006 inactive_file:4143 isolated_file:0
unevictable:0 dirty:272 writeback:0 unstable:0
free:499244 slab_reclaimable:174921 slab_unreclaimable:25041
mapped:1892 shmem:42 pagetables:240 bounce:0
DMA free:3492kB min:64kB low:80kB high:96kB active_anon:0kB inactive_anon:0kB active_file:0kB inactive_file:0kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:15804kB mlocked:0kB dirty:0kB writeback:0kB mapped:0kB shmem:0kB slab_reclaimable:12080kB slab_unreclaimable:332kB kernel_stack:0kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? yes
lowmem_reserve[]: 0 861 3032 3032
Normal free:59488kB min:3720kB low:4648kB high:5580kB active_anon:0kB inactive_anon:0kB active_file:1092kB inactive_file:3380kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:881880kB mlocked:0kB dirty:1088kB writeback:0kB mapped:4kB shmem:0kB slab_reclaimable:687604kB slab_unreclaimable:99832kB kernel_stack:952kB pagetables:0kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:1211 all_unreclaimable? yes
lowmem_reserve[]: 0 0 17366 17366
HighMem free:1933996kB min:512kB low:2856kB high:5200kB active_anon:212244kB inactive_anon:53148kB active_file:6932kB inactive_file:13192kB unevictable:0kB isolated(anon):0kB isolated(file):0kB present:2222948kB mlocked:0kB dirty:0kB writeback:0kB mapped:7564kB shmem:168kB slab_reclaimable:0kB slab_unreclaimable:0kB kernel_stack:0kB pagetables:960kB unstable:0kB bounce:0kB writeback_tmp:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
DMA: 19*4kB 43*8kB 16*16kB 6*32kB 17*64kB 12*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 3492kB
Normal: 14406*4kB 99*8kB 1*16kB 3*32kB 1*64kB 1*128kB 1*256kB 1*512kB 0*1024kB 0*2048kB 0*4096kB = 59488kB
HighMem: 31*4kB 14*8kB 8*16kB 2*32kB 2*64kB 1*128kB 2*256kB 1*512kB 1*1024kB 1*2048kB 471*4096kB = 1933996kB
6194 total pagecache pages
0 pages in swap cache
Swap cache stats: add 0, delete 0, find 0/0
Free swap = 1951736kB
Total swap = 1951736kB
786416 pages RAM
560130 pages HighMem
7712 pages reserved
7694 pages shared
275891 pages non-shared
当脚本被终止时,我有将近 2Gb 的空闲内存。所以我不是很理解这个OOM。有人能帮我吗 ?该脚本非常简单:
#!/bin/bash
INOTIFY_DIR="/data"
inotifywait -rme modify,attrib,move,close_write,create,delete,delete_self $INOTIFY_DIR 2>> /datatest/inotify.log
最佳答案
OOM killer 与 page_fault_handler()
相关联。如果 page_fault_handler 由于不可用而无法分配页面,它将通过内核调用 page_fault_out_of_memory()
调用 OOM killer。然后 OOM killer 逻辑将启动并选择最佳候选进程来杀死和清理内存。该逻辑遵循一种启发式方法来找到最可杀死的进程,以便它可以释放内存并保持系统事件。
为什么 OOM killer 会启动完全基于空闲页面的可用性。这可能是来自任何内存区域的页面分配失败。您有足够大的可用内存并不意味着您在所有其他区域中都有可用内存。等 ZONE_DMA,低内存等
查看 oom_kill.c
中的 page_fault_out_of_memory()
了解有关 oom killer 算法的更多详细信息
关于linux - 带有大量 RAM 的 Oom-killer(内存不足)(?!)- inotify,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20092509/
我正在尝试编写一个简单的任务 killer 。我知道我不应该在 Android 中终止任务,但我很想尝试这样的事情。我有以下代码: List procInfo = activityManager.ge
也许你可以帮忙。 是否有可能获取所有在 Android 系统中运行的 Processes 的列表,并杀死其中的一些?我知道有一些应用程序(task manager),但我想编写自己的简单应用程序。 我
(系统=编程语言,框架等) PHP具有一些严重的好处,其他编程语言及其框架却忽略了这些好处。 其中之一是易于部署。只将文件放入与URL相匹配的目录中感觉很脏。但这是非常简单和直接的。无论您如何看待语言
我们让这位客户提示说,产品在正常运行 2-5 分钟后不断崩溃。经过几天的猜测,我们得出了以下结论: 当进程终止而不留下任何痕迹(事件日志/崩溃转储)时,有两个选项: 1.我们自己的进程在调用 Term
我正在 Genymotion 模拟器中调试应用程序,当应用程序开始出现异常时,我已经厌倦了终止应用程序。梦想是有一些预先配置的一键式(一键式)应用程序 killer 来终止(或卸载)一个特定的应用程序
我在绘制太大的图像时遇到问题,它会杀死我的应用程序。 出现以下错误: java.lang.RuntimeException: Canvas: trying to draw too large (num
我想知道如果C#是性能杀手,为什么C#会提供lambda表达式? 尝试运行以下命令: Stopwatch sw = new Stopwatch(); sw.Start(); x = x.Selec
我有一个作为 Windows 服务运行的 python 程序,在我看来它确实捕获了所有异常。在我的开发环境中,当程序崩溃时,我无法重现任何没有记录异常的情况。除了 2 种情况:程序被任务管理器杀死或者
你们中的一些人可能偶然发现了这篇可爱的文章 - http://igoro.com/archive/quicksort-killer/\ 真正有趣的是他如何修复快速排序以在 O(N log N) 内针对
几周前,我的一个 friend 向我展示了一个网站,其中解释和描述了最流行网站的架构(youtube、amazon、facebook),它还显示了一些关于它们的有趣统计数据。 有谁知道我在哪里可以找到
摧毁僵尸网络的最佳方法不是来自编写自己的病毒吗? 防病毒软件从不冒犯。它只是等待那些有足够时间窃取/下载/安装 X 软件、测试其防御并向其无人机/僵尸部署新更新以利用 X 软件弱点的人的攻击。因此,立
我已经阅读了很多关于这个主题的内容,但我仍然感到困惑。似乎普遍的答案是否定的。但是我发现了一个似乎可以“欺骗”任务 killer 的应用程序。是GO接触EX。即使它正在运行(可以在设置->管理应用程序
我有一个基于 docker 镜像 tomcat-9.0.13-jre11 的 docker 容器内正在运行的 Web 应用程序。容器收到来自 linux 系统的 kill 消息。 我找到的唯一信息来自
我们正在使用 X-Frame-Options header 和可能本页描述的 JS/CSS 设置实现点击劫持保护: https://www.owasp.org/index.php/Clickjacki
我目前正在学习 C,并达到了(哈哈...)学习指针的地步。我想我已经对它们有所了解,并且我想我了解了它们的概念。 如果我有一个名为“c”的指针和一个名为“a”且值为 5 的整数,我将执行以下操作: *
$ mlockall schedtool -R -p 4 -e ionice -c1 mplayer -really-quiet whatever.ogg $ mempig Killed Mplaye
我的邮件从这条规则中得到 1.6 分(最多 2 分被分类为垃圾邮件): SpamAssassin 规则:HTML_IMAGE_ONLY_24 标准描述:HTML:包含2000-2400字节文字的图像
看完this question关于 Windows 内存分配器看似退化的行为,并回想起 this paper关于构建快速排序实现的最坏情况输入,我开始想:是否有可能构建一个程序,给定一个黑盒内存分配器
我正在使用 Busybox 测试和嵌入 linux CPE; BusyBox v1.00 (2012.07.10-03:48+0000) multi-call binary 我想尝试使用盒子上所有可用
从大约一年(也许更多)开始,我不断有进程被 linux oom-killer 杀死。运行的机器是我的 htpc 使用 ubuntu gnome 15.04(当前)。 每天一次或有时连续 10 次被杀死
我是一名优秀的程序员,十分优秀!