当前位置:  技术问答>linux和unix

用户态代码性能提高的问题,如何让出CPU利用率??

    来源: 互联网  发布时间:2016-11-22

    本文导语:  现在有个linux用户态的while(1)循环程序,这个程序的作用就是不停的check内存里面看有没有过来的数据,有的话就收。现在的问题就是不管有没有来的信息他都会一直while导致CPU利用率100%,我的解决方法是在循环里...

现在有个linux用户态的while(1)循环程序,这个程序的作用就是不停的check内存里面看有没有过来的数据,有的话就收。现在的问题就是不管有没有来的信息他都会一直while导致CPU利用率100%,我的解决方法是在循环里插入u/nanao sleep或者select在信息过来比较慢的时候降低while的频率,这种做法可行吗?会不会影响到收数据的性能?有什么其他可行的方法吗?

另外我还想到是否存在一种可以限制某个进程或者线程的CPU使用率的函数,加在循环里就可以限制当前进程CPU的使用率,达到的效果应该和sleep是一样的,有这种机制吗??大家有啥建议???

谢谢大家帮助。:D

|


没明白你所说的“用户态程序在大数据量情况下使用系统调用的话性能就不好了”
多大的数据量算大?webserver神马的都是用select实现的,他们的数据量不大?

|
可以这样,ioctl中实现一个函数。 用户态程序调用这个函数。这个函数在内核中wait一个信号量。另一个内核线程向内存页面写入数据后再waikup那个函数。
    这样就可以了,用户态调用该函数后进程实际进入sleep状态。不是忙等待

|
这个轮询的频率太高了,加个 usleep 
最好还是用通知机制

|
select()/poll()就是实现这个功能的,问题是你的驱动有没有实现它?

|
楼上正解

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 内核还是用户空间?高性能网络服务程序开发
  • Linux常用命令介绍:更改所属用户群组或档案属性
  • 概念混乱,请专人解释:实际用户ID,有效用户ID,设置用户ID
  • 匿名用户登录nobody用户的作用 iis7站长之家
  • proftp中,如何让FTP的用户是非Linux用户,只是FTP用户?
  • UIO(linux Userspace I/O子系统)用户空间设备驱动I/O技术介绍
  • windows 系统是否是多用户操作系统,如何理解“多用户操作系统”的“多用户”?
  • CentOS安装Telnet,以root用户登陆Telnet以及CentOS的各种终端解释
  • 我装的是RED HAT LINUX 8.0,我在root用户中把root用户删除了,怎办也进不了root用户
  • 怎样让普通用户拥有超级用户的权限,是把普通用户的组设为root组吗?具体怎么做,急死了
  • 我一个服务器同时接受到很多个用户的认证请求(得到用户名和密码),然后把用户名密码发给认证服务器。因为是远程认证,所
  • 我装了中软Linux3.1,启动时要求输入用户名和口令,但安装时并没有提示指定用户名,所以现在输入用户名老是错误,不能进入系统,请问该怎
  • root用户附权限给其他用户问题
  • 如何添加一个用户,让这个用户只能访问某个特定的目录,
  • 如何过滤系统用户只显示创建的用户?
  • 匿名用户登录nobody用户的作用
  • 怎样在程序中将普通用户切换成root用户
  • 创建用户组创建用户出错
  • 求助:忘记了root用户的密码,如何给普通用户赋root权限
  • 请教用户组和用户的问题
  • Public key用户 创建的用户不能登录
  • 利用root用户修改一般用户密码的批处理文件怎么写呢?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3