Chinaunix

标题: 有没有那位大哥做过双核的东西 [打印本页]

作者: heizi_liu    时间: 2006-12-18 16:28
标题: 有没有那位大哥做过双核的东西
我的处理器是有两个Core, A Core里面跑linux kernel os,B Core里面跑的非linux os.  现在我想把 A Core 里面linux kernel os中的net(也就是网络处理,也就是第三层)拿到B Core里面单跑,算是为了他分担负担吧,不知道有没有哪位大虾做过,能否给点建议呢!急呀!等待!!!!!!!!!

[ 本帖最后由 heizi_liu 于 2007-1-1 17:36 编辑 ]
作者: heizi_liu    时间: 2006-12-18 19:10
帮帮忙啊!谢了!
作者: langue    时间: 2006-12-18 19:20
厉害,我到现在都没想过要写内核。
作者: heizi_liu    时间: 2006-12-18 19:23
呵呵!误解了啊,不是写内核,是移植内核,呵呵!可是不知道具体怎么做,来请教呢!?
作者: langue    时间: 2006-12-18 19:25
原帖由 heizi_liu 于 2006-12-18 19:23 发表
呵呵!误解了啊,不是写内核,是移植内核,呵呵!可是不知道具体怎么做,来请教呢!?


难度相当,因为你先要透彻理解内核。
作者: heizi_liu    时间: 2006-12-18 19:33
所以才来求救的,不知道哪个大虾能否指条明路!
作者: gvim    时间: 2006-12-18 20:56
原帖由 heizi_liu 于 2006-12-18 16:28 发表
我的处理器是有两个Core, A Core里面跑linux kernel os,B Core里面跑的非linux os. ...


在一个双核机器上,这步你已经作出来了吗?还是仅仅是一个需求?
作者: codfei    时间: 2006-12-18 21:06
帮你顶
作者: heizi_liu    时间: 2006-12-18 21:45
还没有做出来,首先这个是我的想法,说到底就是一个Core跑linux kernel os,一个Core跑firewall(非linux os),这里的firewall就相当于linux kernel os中的netfilter,但是我不准备这个里面跑linux os,我只是要求他在一个简单的while(1)里面做!不知道大虾对这个想法有何见解,另外如果最过双核机器且和firewall相关的,请给个好的建议,小弟刚刚做这个,没有经验,一切都是在探索!非常感谢!
作者: gvim    时间: 2006-12-18 22:00
原帖由 heizi_liu 于 2006-12-18 21:45 发表
还没有做出来,首先这个是我的想法,说到底就是一个Core跑linux kernel os,一个Core跑firewall(非linux os),这里的firewall就相当于linux kernel os中的netfilter,但是我不准备这个里面跑linux os,我只是要求他在 ...


我以为你已经每个core跑一个不同的OS。不借助其他手段,几乎不可能。
我记得Linux内核可以指定某个进程/线程在某个特定的处理器/core上运行,而不被迁徙。具体的接口你查一下,我忘记了。应该是SGI的某个牛牛去年写的一篇30来页的有关调度的介绍。
作者: heizi_liu    时间: 2006-12-18 22:51
非常感谢!试试看看!感激!
作者: heizi_liu    时间: 2006-12-19 09:50
哎!只可惜这个情况不适合我,我的必须是要分开的,非常感谢!
作者: albcamus    时间: 2006-12-19 12:34
非要实现这个,干脆就装两台机器,否则的话以现有Linux是满足不了你的需求的
作者: YaoFei    时间: 2006-12-19 13:51
楼主要玩协处理器?你要干的那些事情,其实就是Intel一些带有CPU的服务器网卡干的。
作者: heizi_liu    时间: 2006-12-19 17:32
是的,你说对了,我要玩的就是协处理器,也就是网络处理器(NP),他的硬件有对包进行处理的功能,网络加速吧!呵呵!但是还是不知道怎么下手!谢谢了!
作者: wealsome    时间: 2006-12-19 17:52
标题: 回复 14楼 YaoFei 的帖子
强,

[ 本帖最后由 wealsome 于 2006-12-19 17:58 编辑 ]
作者: heizi_liu    时间: 2006-12-19 18:04
大家好,我想我有必要把我的问题重新描述一下:
现在有任务,就是在Cavium Octeon芯片(双核)上开发网络应用程序(主要是firewall )。

大概的设想是这样:

----------------
| |
| Core A |
| |
----------------

----------------
| |
| Core B |
| |
----------------

在CoreA上跑一个完整的linux OS (linux kernel + Application)

在CoreB上跑一个程序while(1),这个程序要实现转发 + 路由 + netfilter的功能,也就是说类似于netfilter  
那么现在想到的办法是:将Linux IPv4 Stack移植到Core2中跑。(感觉这个难度挺大)

不知道有没有哪位做过NP方面的,能否给点建议呢
作者: Solaris12    时间: 2006-12-22 08:28
原帖由 heizi_liu 于 2006-12-19 18:04 发表
大家好,我想我有必要把我的问题重新描述一下:
现在有任务,就是在Cavium Octeon芯片(双核)上开发网络应用程序(主要是firewall )。

大概的设想是这样:

----------------
| |
| Core A |
| | ...



这需要OS支持把线程绑定在CPU1上,并且不允许任何中断在CPU1上处理。

solaris 支持这个,linux恐怕不行吧
作者: x4ulocca    时间: 2006-12-22 23:59
core b上运行一个while(1),core a接受中断,将受到的包以核间通信的方式通知core b,让b处理.你的这个架构上核间如何通信?每个core还分硬件线程吗?.例外core b是如何被启动的呢?可以被core a唤醒,告诉他要做什么事情吗?
我的理解,smp做不到这样.你钻研以下amp.这个模型应该是amp

[ 本帖最后由 x4ulocca 于 2006-12-23 00:00 编辑 ]
作者: gvim    时间: 2006-12-23 11:22
原帖由 Solaris12 于 2006-12-22 08:28 发表



这需要OS支持把线程绑定在CPU1上,并且不允许任何中断在CPU1上处理。

solaris 支持这个,linux恐怕不行吧


Solaris是个好东西,越发感觉到它的强大。Solaris Internals出版了,希望能借此一窥Solaris的豹斑,到时还望兄台不吝赐教。
作者: albcamus    时间: 2006-12-23 14:33
原帖由 gvim 于 2006-12-23 11:22 发表


Solaris是个好东西,越发感觉到它的强大。Solaris Internals出版了,希望能借此一窥Solaris的豹斑,到时还望兄台不吝赐教。


2nd 已经出版了? 晕 我还不知道
作者: guotie    时间: 2006-12-23 15:42
很好的设想。

Cavium Octeon据说很强大,他不是有相应的网络处理的软件么?为什么还要这样呢?
作者: gvim    时间: 2006-12-26 15:40
原帖由 albcamus 于 2006-12-23 14:33 发表


2nd 已经出版了? 晕 我还不知道


http://www.china-pub.com/computers/common/info.asp?id=33152
作者: albcamus    时间: 2006-12-27 10:33
原帖由 gvim 于 2006-12-26 15:40 发表


http://www.china-pub.com/computers/common/info.asp?id=33152

原来是07年1月1日出啊,上周六回完你的帖子,俺就直奔海图去了,失望而归
作者: gvim    时间: 2006-12-27 12:50
原帖由 albcamus 于 2006-12-27 10:33 发表

原来是07年1月1日出啊,上周六回完你的帖子,俺就直奔海图去了,失望而归


china-pub早几天已经开始卖了阿,我一个朋友已经下单几天了

[ 本帖最后由 gvim 于 2006-12-27 12:53 编辑 ]
作者: connet    时间: 2006-12-27 16:56
这个类似 一些 手机或多媒体设备的双处理器架构吗?
      这种情况下, 不是 smp, 系统还是单 cpu, 第二cpu 有自己的内存,并与主cpu通讯, cpu1 启动后, 为 cpu2加载一个驱动, 此驱动负责加载cpu2 的程序(通常不会是操作系统,太复杂),并启动cpu2, 并交换数据。和pci设备上的 dsp 差不多。
作者: YaoFei    时间: 2006-12-28 13:54
其实是协处理器,楼主自己概念错误,弄成了SMP.

SMP是对称多处理,每个处理器地位是平等的。
作者: beans    时间: 2006-12-28 16:16
这样的需求,最好选用专用的处理器, 比如IXP处理器, 流量据说可达10G, 可以下到相关的开发环境和包. 是一个arm核+好多组微引擎的协处理器.
作者: mingyanguo    时间: 2006-12-28 17:38
原帖由 albcamus 于 2006-12-27 10:33 发表

原来是07年1月1日出啊,上周六回完你的帖子,俺就直奔海图去了,失望而归

china-pub还是很快的,上午定单,下午就送过来了.
作者: heizi_liu    时间: 2006-12-28 22:48
是的!YUFEI我想我可以说成SMP,他这里面的两个core就是对等的处理器,而且每个里面都有协处理器的,大家都可以运行os或者运行简单的单片程序,我想我的意思应该没有错,就是想把kernel 里面实现网络的部分拿到一个simple 程序里面去做(类似单片机while(1)),
举个例子:假如现在你想开发一个简单的网络路由器,你不想使用linux os,只是想用一个简单的单片机while(1)来控制,现在你参照linux os中的网络实现,最直接的方法就是直接把所有的网络实现部分移植过来,然后再漫漫改,一些中断处理,系统调用,堆栈接口,等等等等!!
有没有哪个兄弟做过这样的我感觉不可能完成的任务呢!这是兄弟我的一个想法,也许有人问我说,你为什么非得要移植那个linux os里面的网络处理函数呢,有好多轻量级的tcp/ip是可以参考的,甚至是可以直接拷贝的。那我的想法是,我看上了他的里面的netfilter.
真是郁闷啊,以前的CPU里面有一个core没有这些屁事,现在买了个双核的!呵呵!

[ 本帖最后由 heizi_liu 于 2006-12-28 22:58 编辑 ]
作者: gvim    时间: 2006-12-28 23:21
双核又怎么了。
把你的linux内核编成UP的,linux只在一个core上运行。它也就只启动一个core,接管所有中断。
然后为另一个core写一个驱动,启动这个core,把它当下位单片机处理不就完了。由于下位机不接受中断,上下位的通讯用共享内存,下位机直接spin在某些个内存地址,这样可以模拟单片机的输入引脚。你的程序和下位机通讯就靠driver,上下位之间用share mem。

一点想法,请指正。实在没想明白你为什么非要双核。主从结构更适合。
没有现成的,那就只有自己改造。

[ 本帖最后由 gvim 于 2006-12-28 23:22 编辑 ]
作者: heizi_liu    时间: 2006-12-29 09:07
对!你说的全对,我也的确是把下面一个做了单片机进行处理,但是我现在是想把我的这个单片机里面运行一个网络功能,一分担上面os里面网络的负担,我就是想参考linux os的网络处理代码(如ipv4以及netfilter),但是我发现把这个写到单片机里面真的好复杂,我就是这个问题,终于有人明白我的问题了,谢谢!谢谢!
作者: guotie    时间: 2006-12-29 11:45
在内核处理不好。

不宜增加功能,还是在用户态好。
作者: heizi_liu    时间: 2006-12-31 17:22
标题: 回复 35楼 guotie 的帖子
不知道楼上说的是什么意思!谢谢!
作者: rfc2544    时间: 2007-01-11 16:53
原帖由 heizi_liu 于 2006-12-19 18:04 发表
大家好,我想我有必要把我的问题重新描述一下:
现在有任务,就是在Cavium Octeon芯片(双核)上开发网络应用程序(主要是firewall )。

大概的设想是这样:

----------------
| |
| Core A |
| ...

lz这个设计很有创造性,不过我的疑问是用linux的协议栈开发出来的东东有性能保障(运行在octeon上)吗?
或者lz手头拿着cavium自己实现的专有TCP/IP协议栈?呵呵...




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2