Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6267558
  • 博文数量: 2759
  • 博客积分: 1021
  • 博客等级: 中士
  • 技术积分: 4091
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-11 14:14
文章分类

全部博文(2759)

文章存档

2019年(1)

2017年(84)

2016年(196)

2015年(204)

2014年(636)

2013年(1176)

2012年(463)

发布时间:2015-03-14 04:28:56

kernel 3.10内核源码分析--hung task机制
一、相关知识
长期以来,处于D状态(TASK_UNINTERRUPTIBLE状态)的进程都是让人比较烦恼的问题,处于D状态的进程不能接收信号,kill不掉。在一些场景下,常见到进程长期处于D状态,用户对此无能为力,也不知道原因,只能重启恢复。
其实进程长期处于D状态肯定是不正常的,内核中设计D状态的目的是为了让进程等待IO完成,正常情况下IO应该会顺利完成,然后唤醒相应的D状态进程,即使在异常情况下(比如磁盘离或损坏、磁阵链路断开等),IO处理也是有超时机制的,原理上不会存在永久处于D状态的进程。但是就是因为内核代码流程中可能存在一些bug,或者用户内核模块中的相关机制不合理,可能导致进程长期处于D状态,无法唤醒,类似于死锁状态。
针对这种情况,内核中提供了hung task机制用于检测系统中是否存在处于D状态超过120s(时长可以设置)的进程,如果存在,则打印相关警告和进程堆栈。如果配置了hung_task_panic(proc或内核启动参数),则直接发起panic,结合kdump可以搜集到vmco......【阅读全文】

阅读(867) | 评论(0) | 转发(0)

发布时间:2015-02-22 00:47:14

本文为原创,转载请注明:http://www.cnblogs.com/tolimit/ 引言    前一篇关于linux系统如何实现fork的研究(一)通过代码已经说明了从用户态怎么通过软中断实现调用系统调用clone函数,而clone函数的精华copy_process函数就在此篇文章中进行分析。我们知道,在linux系统中,应用层可以创建.........【阅读全文】

阅读(1323) | 评论(0) | 转发(0)

发布时间:2015-02-22 00:41:57

本文主要分析了libevent中关于提高性能方面的设计进行分析,简要的跟踪和分析了sendfile和多缓冲区的操作。......【阅读全文】

阅读(949) | 评论(0) | 转发(0)

发布时间:2015-02-04 04:33:24

Linux内核连接跟踪锁的优化分析(2)作者:gfree.wind@gmail.com博客:linuxfocus.blog.chinaunix.net 微博:weibo.com/glinuxerQQ技术群:4367710路漫漫其修远兮,吾将上下而求索前文简介前面一篇文章Linux内核连接跟踪锁的优化分析1中,介绍了新的内核优化了全局的连接跟踪锁nf_conntrack_lock。.........【阅读全文】

阅读(1024) | 评论(0) | 转发(0)

发布时间:2015-02-04 04:32:22

一、概念及基本原理
TLB即Translation Lookaside Buffer,是MMU中的一种硬件cache,用于缓存页表,即缓存线性地址(虚拟地址)到物理地址的映射关系。
如果没有TLB,那么正常的内存数据访问前需要先通过线性地址查进程页表将其转换为物理地址,页表实际也是放在物理内存中的,页表分级存放,一次地址转换需要经过多次内存访问,效率不高,尤其是类似的操作非常频繁,由此带来的性能损耗不小。
有了TLB之后,内存数据访问前只需要先从TLB中查找相应的匹配项,找到后即可跳转页表查找的操作,由于TLB是硬件cache,相对于内存访问来说,效率要高许多,所以通过TLB能较大程度改善地址转换效率。
TLB中保存着线性地址(前20位)和物理页框号(pfn)的对映关系,在TLB中查找时,通过匹配线性地址的前20位,如果匹配即可获取pfn,通过pfn与虚拟地址后12位的偏移组合即可得到最终的物理地址。
如果在TLB中没有找到匹配的entry,即出现TLB miss,此时仍需通过查找页表来进行线性地址到物理地址的转换,此时硬件会自动将相应的映射关系缓存到TL......【阅读全文】

阅读(1563) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册