Printk与sched_clock_init的一点分析
在分析Linu内核启动的过程中,发现一段“不平常”的日志,感觉产生这段日志的代码肯定是“不可思议”的。因此就大致分析了一下:
日志如下:
[ 0.000000] console [ttyMT0] enabled
[ 2.157770] Calibrating delay loop... 1694.10 BogoMIPS (lpj=4235264)
更精细的日志如下:
[ 0.000000] start:sched_clock_init.
[ 2.100505] end :sched_clock_init.
与这段日志有关的代码是:
void sched_clock_init(void)
{
/*printk(KERN_CRIT “start:sched_clock_init.\n”)*/
sched_clock_running = 1;
/*printk(KERN_CRIT “end :sched_clock_init.\n”)*/
}
难道这一句简简单单的赋值就会花费两秒是的时间??那么就分析一下相关的代码:sched_clock_running作用和printk的实现。
1. sched_clock_running的作用
分析发现,调用sched_clock_running的地方仅仅有函数sched_clock_cpu():
u64 sched_clock_cpu(int cpu)
{
if (unlikely(!sched_clock_running))
return 0;
return sched_clock();
}
很明显,如果sched_clock_running为0(unlikely已经说明sched_clock_running很少为0),则返回0;如果不为0,调用sched_clock返回当前的调度时钟时间(相对系统起始的时间,单位为纳秒)。
函数sched_clock_cpu()被大约四个函数调用cpu_clock() / local_clock / update_rq_clock() / ttwu_queue()。
综上可知,执行sched_clock_init之前,获取的调度时钟时间都是0,执行sched_clock_init之后,取得的调度时钟时间都是有非零值的。
2. Printk()的实现
Printk的实现都在文件./kernel/printk.c中。Printk() -> vprintk(),而在vprintk()会通过cpu_clock()获取时间。而有上可知,能否打印时间是和sched_clock_init有没有被执行是有直接关系的。
3. 结论
通过分析,可以知道,日志中显示的两秒的差距不是因为执行语句花费了两秒,而是因为在该语句之前,没有获取到有效的调度时钟时间。
转载于:https://www.cnblogs.com/youngerchina/p/5624440.html
Printk与sched_clock_init的一点分析相关推荐
- 三国志11的一点分析
三国志11的一点分析 张嘉华 newzjh@126.com QQ:188318005 由于很多朋友问到我三国志11的渲染问题,今天只好自己用GA加Fraps,还有RPGViewer分析了一下,并把分析 ...
- RootKit.Win32.RESSDT.o/Trojan-Downloader.Win32.Agent.mjp 的一点分析
RootKit.Win32.RESSDT.o/Trojan-Downloader.Win32.Agent.mjp 的一点分析 endurer 原创 2008-04-10 第1版 就是某夏露官方网传播的 ...
- OllyDBG反汇编快速找到程序入口一点分析
出处:http://hi.baidu.com/0soul/blog/item/b62f8f08c2c3c42c6b60fbbe.html 先声明下:这个和脱壳没关系,不是找壳里面的程序入口哦,只是程序 ...
- 矢量归一化_关于LRL矢量的一点分析
[1].Laplace-Runge-lenz矢量 最早接触LRL矢量是在高中的物竞课上,在学习天体物理时老师提到过一个Kepler问题一般有三个守恒量:能量,角动量和LRL(Laplace-Runge ...
- Linux移植随笔:对tslib库的ts_test测试程序代码的一点分析
本文是作者对tslib库的ts_test.c文件进行分析的随笔,其实tslib的几个测试程序结构差不多,譬如ts_print.c和ts_print_raw.c等. 本文并没有涉及太多概念,也没有详细介 ...
- android qq登录分析,[原创]对QQ手游授权登录的一点分析
1.前言 最近无事玩王者,发现某些租号平台可以直接通过自身的APP打开腾讯的游戏进行登录,于是对这一登录过程做了简单的分析 2.QQ打开游戏的简单分析 发现不管是IOS还是Android都可以在QQ里 ...
- 对我自己的一点分析总结
上大学也有2年了,2年里面,学到了很多东西,也失去了很多. 昨天好好想了想我得将来: 我问了我自己这么几个问题: 一.我为什么上大学? 二.我上大学要达到什么目标? 三.我应该如何努力去达成那些目标? ...
- 关于branch XYZ is published (but not merged) and is now N commits behind错误的一点分析
文章转自: https://blog.csdn.net/chenzhentao/article/details/53516481 谢谢分享 文章部分资料参考自老罗的博客:http://blog.csd ...
- CSDN PC端网站及其部分功能产品体验的一点分析
CSDN是国专业IT社区CSDN (Chinese Software Developer Network) 创立于1999年,致力于为中国软件开发者提供知识传播.在线学习.职业发展等全生命周期服务. ...
最新文章
- SimpleInjector 简单使用
- 数学建模之图像处理---颜色建模
- python做excel表格柱状图_用python处理excel数据(八)实现excel表中柱状图功能
- EIGRP协议邻居详解及故障实战分析
- TF之data_format:data_format中的NHWCNCHW简介、转换的详细攻略
- 如何解决Mybatis里mapper文件中关于不能用大于小于号
- teamviewer类似软件_TeamViewer系统后台被黑客组织APT攻破,请注意防范
- ad域需要自建dns服务器吗,创建AD DS域服务(图文详解)
- db2取数据库日期时间_DB2数据库取得当前时间的正确解析
- The Linux Process Principle, PID、PGID、PPID、SID、TID、TTY
- Linux Shell数值比较和字符串比较及相关
- github可以刷星吗_GitHub 没有 star,该写进简历里吗?
- html选择器 并列,CSS 中的选择器 (二)- 组合选择器
- 关于我的 “二进制部署 kubernetes 集群” 的体验
- 001简介-QQ群淘宝客软件开发详解
- 约会Rendezvous
- 计算机远程桌面修复,大师教您Win10远程桌面连接的修复手段
- ESP32 报错is installed, but the tool failed to run
- 一般情况下的椭圆方程
- 三角形单元刚度矩阵matlab,求助:关于有限元三角形单元合成总刚度矩阵怎么处理...
热门文章
- 第04篇 JDK版本导致Unsupported major.minor version 52.0 error
- redis 使用-hiredis库使用(一) 基本篇 看完本文就可以上手工作了
- JavaScript预解析、作用域题目记录
- 局域网内访问mysql数据库
- MindSDK+yolov5部署及python版图像视频推理实现
- 机器学习算法的基础知识
- Spark入门 - History Server配置使用
- Akka并发编程——第八节:Actor模型(七)
- Failed to load sql modules into the database cluster during PostgreSQL Installation
- Java实体映射工具MapStruct