首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

容器因内存频繁OOM而引发的内核“血案”

什么是ext4/jbd2 ,参考 Linux: The Journaling Block Device(https://web.archive.org/web/20070926223043/http:/...环境说明:准备好测试环境 |环境 |腾讯云CVM | |:--| |配置信息 |16核32G,SA3.4XLARGE3 | |磁盘信息 |高性能云盘100G,vdb | |操作系统 |CentOS Linux...3.3 更换文件系统 导致系统hung死的原因是内核在提交Journal Transaction Commit时卡住,Journal模块是Linux kernel中同个通用模块,为ext4等文件系统所用...Tencent Linux 是腾讯官方运营的 Linux 版本,参考官网说明 。...相比于Linux内核上游社区,TencentOS内核具有以下优势: 提供热补丁更新,避免更换内核造成业务损伤; TKE集群中已经大量部署及验证; 针对不同容器客户进行性能优化沉淀,规避大部分已知问题;

5.4K195

IO告警分析思路

写请求总数,读/写所花费的时间,以及当前正在处理的I/O总数(inprogress IO),等待I/O完成所花费的毫秒数(milli spent IO),这个是整个系统的IO统计信息 说一下合并读和合并写,linux...在读写磁盘时,为了提高性能,内核合并对磁盘相邻区域的请求,这样减少了对磁盘IO的操作,从而一定程度上提高linux性能 从上面的信息,我们已经可以定位是写磁盘造成的IO等待,接着我们需要定位是哪块磁盘造成的...从iostat中能更直观的看到那个磁盘在进行大量的读写操作,如果用-x参数,能看到更多的统计信息 sar 除了上面的工具,sar也是linux下性能分析常用的工具,sar也比较通用,除了CPU、内存之外...上面的工具,我们需要自己去分析,去查找,iotop很直观的,按照I/O统计展示进程,在运维定位IO故障中效率更高,不过,默认系统不自带,需要yum安装 此次I/O升高是由于jbd2引起的,jbd2是一个文件系统的日志功能...网上不少文章有关于jbd2引起I/O高的分析,认为比较好的是这篇https://cloud.tencent.com/developer/article/1465600,有兴趣的可以看下,里面有多种解决方案

1.4K40

为什么不建议开发把OOM当成一种应用程序的重启特性使用

说明都在等待 IO,持续这么长时间看状况应该是死锁了,结合容器 OOM 和ext4/jbd2 死锁找到一条相关的 bug 记录:https://bugs.centos.org/view.php?...中,cgroup 上限制最大可用的内存; 进程 1,分配大量内存,使得 cgroup 内存使用量超过限制,OOM Killer 选择该进程杀死;该进程正在执行 ext4_sync_file(),在 jbd2...xxx 函数)中,在 __getblk() 上等待可用的内存;只有拿到足够内存,才能完成 ext4_journal_stop(),将 t_updates 递减,其对应的内核 Journal 线程才能完成 jbd2...Transaction Commit 这个问题其实只在 CentOS 7 的内核版本中出现,算 Centos 的一个内核bug,大家可能觉得系统人员去维护解决bug就行了,但是其实 OOM 引起的系统故障的bug 在 linux

73210

一个ext4的Bug分析过程

[jbd2/md0-8:3661] ......ext_map_blocks-->ext4_ext_find_extent从磁盘extent tree中使用二分法根据inode和逻辑块号找到对应的extent(关于extent tree的介绍参见我写过的一篇文章Linux...函数就不难理解了,通过遍历整个LRU链表,从每个inode对应的extent status tree中回收extent,直到遍历完整个链表或回收的extent总数达到nr_to_scan为止(nr_to_scan与linux...总结 本文通过对Linux ext4文件系统的一个bug进行分析,探讨了ext4的延迟分配机制、块查找过程及extent cache收缩机制,并简要介绍了社区对这一个bug的修复方案。...参考文献 ext4 extent tree LRU locking #1 ext4 extent tree LRU locking #2 ext4延迟分配 Linux删除文件过程解析 extent status

3.9K20

Linux内核由哪些组成,这些你了解不

一,Linux内核组成 Linux内核主要由 进程管理、内存管理、设备驱动、文件系统、网络协议栈 外加一个 系统调用。...二,源码组织结构 三,Linux内核知识体系 (1)内存管理 内存原理 SMP/NUMA模型组织 页表/页表缓存 CPU缓存 内存映射 虚拟内存 伙伴分配器 块分配器 巨型页 页回收 页错误异常处理与反碎片技术...vmalloc 内存池原理与实现 内存优化与实现 (2)文件系统 虚拟文件系统VFS 通用文件模型 数据结构 文件系统调用 挂载文件系统 无存储文件系统 磁盘文件系统 Ext2/Ext3/Ext4文件系统 日志JBD2...进程原理及状态 生命周期及系统调用 task_struct数据结构 进程调度 调度策略 进程优先级 调度类分析 SMP调度 (4)网络协议栈 网络基础架构 SKB/net_device 网络层分析 Linux...infiniBand栈的架构 系统API调用 POSIX网络API调用 epoll内核原理与实现 网络系统参数配置 (5)设备驱动 设备子系统 I/O机制原理 设备模型 字符设备子系统 网络接口卡驱动 Linux

1.4K00

一天一个 Linux 命令(40):vmstat 命令

io_end 1960 1960 72 56 ext4_extent_status 27527 84966 40 102 jbd2..._journal_handle 340 340 48 85 jbd2_journal_head 1044 1044 112 36...jbd2_revoke_table_s 256 256 16 256 jbd2_revoke_record_s 4096 4096 32...要深入了解Linux内存运行机制,需要知道下面提到的几个方面: 首先,Linux系统会不时的进行页面交换操作,以保持尽可能多的空闲物理内存,即使并没有什么事情需要内存,Linux也会交换出暂时不用的内存页面...其次,Linux进行页面交换是有条件的,不是所有页面在不用时都交换到虚拟内存,Linux内核根据”最近最经常使用“算法,仅仅将一些不经常使用的页面文件交换到虚拟内存,有时我们会看到这么一个现象:linux

31710
领券