打印
[嵌入式linux]

高分求教:linux性能问题

[复制链接]
2393|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tiger84|  楼主 | 2011-4-5 23:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以前的程序都是裸奔的,性能方面要求比较高。现在需要使用linux,性能方面需要达到裸奔的90%吧,有如下想法,还望各位兄弟指教,提出些许建议。

(1)第一个难点是中断,中断处理程序倒是好说,关键是读写数据时需要避开Linux内核态与用户态的交互,我初步的想法是利用内存映射,mmap,但是性能方面,估计也悬。大家有什么好主意没?
(2)有些硬件模块驱动,实现功能问题倒是不大,只是这个性能啊,我想到的也只有mmap。
(3)如何利用linux里面的SMP,能够动态分配,负载均衡

简单点说,就是想利用Linux丰富的资源以及可维可测性,避开linux里面用户态与内核态的交互,以及内存拷贝等。
不考虑DMA的方法,因为使用了cache,各位兄弟提提建议?

相关帖子

沙发
sinanjj| | 2011-4-6 12:21 | 只看该作者
以前的程序都是裸奔的,性能方面要求比较高。现在需要使用linux,性能方面需要达到裸奔的90%吧,
---------------那建议不用. 用linux无非是借力于其上丰富的现有软件. 不过. 你这个性能要求啊. 这个优势就没有了.

运营单个程序确实能达到裸奔的90%, 但是, 这用linux有什么意义呢?

使用特权

评论回复
板凳
xinzha| | 2011-4-6 14:02 | 只看该作者
可以考虑用双内核,否则单单一个时间片长度就够受的了。

使用特权

评论回复
地板
tiger84|  楼主 | 2011-4-6 22:31 | 只看该作者
裸奔肯定不会用了,上Linux是箭在弦上,不得不发啊。
现在使用的ARM的核够多,只是找不到一个合适的动态调度的方法。
考虑双内核怎么弄啊?

另外还有2个问题,希望大家提供下建议和想法,感激不尽。
(1)对定时器的使用要求非常高,要到1us级别,裸奔的时候还能满足,但是上linux之后,如果1us中断1次,不知道这个中断是否会影响到Linux?感觉linux会挂掉。

(2)裸奔提供定时器处理函数时,都是采用注册函数的形式。如果到了Linux里面,这个注册的处理函数从用户态怎么传到内核态?

使用特权

评论回复
5
xinzha| | 2011-4-7 09:47 | 只看该作者
双内核是指的软件双内核,对于实时性要求高的任务由实时内核处理,而显示等非实时任务交给linux内核去做,只是通常这类双内核系统不是免费的并且很贵。

使用特权

评论回复
6
tiger84|  楼主 | 2011-4-7 21:36 | 只看该作者
双内核是指的软件双内核,对于实时性要求高的任务由实时内核处理,而显示等非实时任务交给linux内核去做,只是通常这类双内核系统不是免费的并且很贵。 ...
xinzha 发表于 2011-4-7 09:47

目前我们基本上就是这个思路,但是还没有找到合适的方法。

使用特权

评论回复
7
xinzha| | 2011-4-8 09:54 | 只看该作者
思路大概就是接管cpu的异常和中断处理,做分配的时候该给谁就给谁,基本上对于稍复杂的系统,出问题的概率剧增,所以还是买现成的吧。

使用特权

评论回复
8
sinanjj| | 2011-4-8 09:56 | 只看该作者
本帖最后由 sinanjj 于 2011-4-8 10:01 编辑
思路大概就是接管cpu的异常和中断处理,做分配的时候该给谁就给谁,基本上对于稍复杂的系统,出问题的概率剧增,所以还是买现成的吧。
xinzha 发表于 2011-4-8 09:54


现成的就是那么好买的?

买买试试吧


1us是基本不可能轻松达到的.

想快速的完成设计, 用外置的裸奔cpu. 设计好接口.


解决不了问题, 但是能绕开问题.

使用特权

评论回复
9
tiger84|  楼主 | 2011-4-8 22:42 | 只看该作者
确切的说,是有免费的, 找人给你用起来花费的费用很贵.


除此以外, x86的linux实时性都优化不到1us, 别提嵌入式的了.


x86的高端服务器多内核负载平衡都是专门优化的.... ...
sinanjj 发表于 2011-4-8 09:43


司南,哪里有免费的啊?方便提供链接吗?参考下

使用特权

评论回复
10
tiger84|  楼主 | 2011-4-8 22:47 | 只看该作者
思路大概就是接管cpu的异常和中断处理,做分配的时候该给谁就给谁,基本上对于稍复杂的系统,出问题的概率剧增,所以还是买现成的吧。
xinzha 发表于 2011-4-8 09:54

“思路大概就是接管cpu的异常和中断处理,做分配的时候该给谁就给谁”,没有太理解这个意思,大侠能详细的说下吗?

哎,买现成的,基本不可能啊

使用特权

评论回复
11
一朝成名| | 2011-4-9 10:33 | 只看该作者
1us。。。。。。。你这个让硬件实现吧~~

使用特权

评论回复
12
xinzha| | 2011-4-9 20:28 | 只看该作者
“思路大概就是接管cpu的异常和中断处理,做分配的时候该给谁就给谁”,没有太理解这个意思,大侠能详细的说下吗?

哎,买现成的,基本不可能啊 ...
tiger84 发表于 2011-4-8 22:47

举个例子说,就是当检测设备侦测到核电站快要爆炸了,此时激起一个异常,而在异常处理代码中就把这个事件直接抛给类似于vxworks之类的实时内核,由此内核进行进行一系列实时要求高的避险操作,然后通过某种手段通知非实时内核,非实时内核就可以做一些并不是很紧急的通知和显示等任务。一些日常任务都可以交给非实时内核去做。
只是个很简单的说法,真正实现起来肯定要非常复杂。

使用特权

评论回复
13
tiger84|  楼主 | 2011-4-10 22:35 | 只看该作者
多谢xinzha和sinajj的回答,我大概心里有数了,再次感谢2位。

使用特权

评论回复
14
yan2005| | 2011-4-11 12:47 | 只看该作者
为什么楼主指明不考虑DMA呢?呵。mmap能提高速度,前提是memory操作已经占了大部分系统的运行时间上。如果bottle neck不在这里,mmap也不见得多有用。

使用特权

评论回复
15
tiger84|  楼主 | 2011-4-11 22:10 | 只看该作者
为什么楼主指明不考虑DMA呢?呵。mmap能提高速度,前提是memory操作已经占了大部分系统的运行时间上。如果bottle neck不在这里,mmap也不见得多有用。
yan2005 发表于 2011-4-11 12:47
不用DMA是因为使用了2级cache,而且由于一些原因,有些核之间的cache一致不能通过硬件保证。使用DMA的话,那cache一致性更无法保证了----因此DMA基本上费了,不过后续也会考虑是否能用起来---

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:专注ARM及linux性能优化

101

主题

862

帖子

0

粉丝