注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

widebright的个人空间

// 编程和生活

 
 
 

日志

 
 

gettimeofday 和 Linux vDSO  

2012-12-12 00:20:38|  分类: linux相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

      看到微博里面说道gettimeofday的优化问题,如果程序需要调用?? ????gettimeofday 太频繁的话,都是设置定时器,比如一毫秒的,获取到时间保存下来作为cache提供,这样可以减少?? gettimeofday的数量。这个之前就了解了。

      还提到 Linux  vDSO 的,其实我之前也一直以为是个  系统调用的,但其实由于 Linux  vDSO (Virtual Dynamically-lined Shared Object),其实这个内核函数已经映射到用户空间了,虚拟了一个so共享模块,调用起来应该和直接调用用户空间 的c函数一样的了,没有系统调用的开销了。  在Linux系统上面 自己查看程序的so文件映射应该卡伊看到这个vdso的的。所以gettimeofday的代价应该比较小的了,之前有同事说他测试过确实还是很快的。

          比较有意思的还有,这个vdso虚拟模块地址,为了安全起见,那个映射地址应该是随机的,避免hook


内核中vdso的简单文档和导出的函数,可以看到主要是几个时间函数。

http://lxr.linux.no/linux+v3.7/Documentation/ABI/stable/vdso

http://lxr.linux.no/linux+v3.7/arch/x86/vdso/vdso.lds.S


 其实类似的优化机制还有vsyscall,都是把内核空间的东西直接映射给用户空间使用,避免系统调用的开销。

On vsyscalls and the vDSO  

http://lwn.net/Articles/446528/


涉及vdso优化?gettimeofday的原理和如何自己添加vdso函数,很不错的文章

Creating a vDSO: the Colonel's Other Chicken

http://www.linuxjournal.com/content/creating-vdso-colonels-other-chicken


csdn博客里面一篇文章

http://blog.csdn.net/wlp600/article/details/6886162

  评论这张
 
阅读(954)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017