免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234
最近访问板块 发新帖
楼主: ogmw
打印 上一主题 下一主题

请教:printk过多会宕机的原因 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2008-04-24 22:00 |只看该作者
原帖由 mik 于 2008-4-24 21:51 发表


计算机世界里最终莫么就是输出,莫么就是输入,从这方面来讲,I/O确实没说错。
只是说:I/O这个动作由谁来做的问题。由程序自己做的话,是典型的I/O操作,
由机器硬件来做,如映射到物理器件上。这点来看 ...

主要还是理解差异。
因为LZ说printk当机了,我第一反应就是有很多屏幕打印或日志打印。
printk是往buffer里面打,严格来说不算I/O。但是因为大量的printk就会引起buffer迅速的被flush到屏幕或者硬盘,引起大量的I/O操作。如果printk是在进程的内核路径上执行的,这些I/O操作会算在进程的头上,从而导致进程的优先级升高(就是前面说的linux调度器偏向I/O密集型程序)。
这个就是我本来想表达的意思,但是第一个回复说的不严谨。让人觉得我是说printk发起大量I/O。
这次应该说清楚了。

论坛徽章:
0
32 [报告]
发表于 2008-04-24 22:00 |只看该作者
原帖由 crspo 于 2008-4-24 21:52 发表

客气了,你的很多帖子解释的都很详尽,说的多自然可能会有疏忽,很正常

理解万岁

论坛徽章:
0
33 [报告]
发表于 2008-04-25 17:27 |只看该作者

回复 #3 zx_wing 的帖子

>>所以,不要在内核频繁执行的路径调用printk打印调试信息。
我也凑个热闹。

看了楼主的问题,我觉得没有办法回答,因为问题描述太不清楚了,我甚至怀疑死机并不一定是由于printk造成的,呵呵,如果我是楼主,我会写出调用上下文,以及加上printk就会死机,去掉就不会。。。。。等等

如果要严格说什么地方不能用printk,我能想到的就只有tty的driver了,呵呵

内核调用频繁,举个例子,我在调PCI卡(320Mbps,算快了吧)的中断时,在isr中也是调用printk来调试的,当然,每调试一次的代价就是重启一次机器。不过似乎也没有其它好办法了。

所以,小小质疑一下你这句话:)

论坛徽章:
0
34 [报告]
发表于 2008-04-25 17:33 |只看该作者
原帖由 zx_wing 于 2008-4-24 12:37 发表

呵呵,先赞一个版主找资料的精神。
这个话题我不想再纠缠了,从这个话题中我学不到东西的,还浪费时间。不过我愿意介绍一点IA64的背景知识说明这个问题。
在IA64上,TLB分为ITLB和DTLB,前者放代码段相关的 ...



以前怎么没听你提过这个问题呢?

我理解你的意思,就像IA32上面的double fault甚至triple fault一样,但是IA32的解决办法是直接用一个TSS来处理,IA64没有这个机制?

而且就像你评论IA32的double fault一样(不知道你忘了没),如果操作系统写好了的话,这种情况是不可能出现的,不知道这句话是不是适用于IA64呢?

论坛徽章:
0
35 [报告]
发表于 2008-04-25 18:33 |只看该作者
原帖由 bluesky_jxc 于 2008-4-25 17:27 发表
>>所以,不要在内核频繁执行的路径调用printk打印调试信息。
我也凑个热闹。

看了楼主的问题,我觉得没有办法回答,因为问题描述太不清楚了,我甚至怀疑死机并不一定是由于printk造成的,呵呵,如果我是楼主 ...

废话,每调一次就重启一次机器当然可以哦。
但明显是笨办法嘛。
我以前是用ITP停下来看

论坛徽章:
0
36 [报告]
发表于 2008-04-25 18:36 |只看该作者
原帖由 bluesky_jxc 于 2008-4-25 17:33 发表



以前怎么没听你提过这个问题呢?

我理解你的意思,就像IA32上面的double fault甚至triple fault一样,但是IA32的解决办法是直接用一个TSS来处理,IA64没有这个机制?

而且就像你评论IA32的double f ...

操作系统写好了肯定是不会有问题三。
我的论述是建立在出错的情况下。
当然正常情况下一般不会遇到出错的情况,但是这是存在嘛,就像我前面说我就遇到过这种bug一样。

论坛徽章:
0
37 [报告]
发表于 2008-04-26 00:19 |只看该作者
不愧是楼猪,
见大家争吵了那么长时间,
也不出来把问题讲讲清楚

论坛徽章:
0
38 [报告]
发表于 2008-04-26 10:00 |只看该作者

回复 #35 zx_wing 的帖子

果然火气大了啊。。。

笨办法?难道你觉得ITP是什么情况下都会有的?

论坛徽章:
0
39 [报告]
发表于 2008-05-05 17:04 |只看该作者

回复 #37 fantry_t 的帖子

不过也好, 牛人过招,小菜可以学到很多东西。

哈哈

论坛徽章:
0
40 [报告]
发表于 2008-05-07 11:02 |只看该作者
原帖由 zx_wing 于 2008-4-24 22:00 发表

主要还是理解差异。
因为LZ说printk当机了,我第一反应就是有很多屏幕打印或日志打印。
printk是往buffer里面打,严格来说不算I/O。但是因为大量的printk就会引起buffer迅速的被flush到屏幕或者硬盘,引起大 ...


我觉得也是优先级相关的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP