sunyc
发表于 2013-4-1 13:26:32
其实 这个说的不是很对mudos 不会经常遍历所有物件的。主要是减少 heart beat, reset 这些object 就行了。
另外有些性能不太好的地方 可以做做优化 比如说 一些节省内存 消耗cpu的 等等都可以改改 workaround.
dahao
发表于 2013-4-1 22:11:33
回复 10# jason
不用分布式, 可以使用共享内存的多线程并行方法。在目前一台机器可以轻松达到16核的情况下,共享内存的多线程并行比分布式简单容易多了。
可以使用OpenMP将MudOS重新编译一遍, 初步估计加几条语句就可以解决问题。
sunyc
发表于 2013-4-2 10:15:28
哪来那么简单 mudos主要的cpu都是在 stack machine的执行上 这个不可能靠分布式优化.
sure
发表于 2013-4-2 10:37:29
定期也不好,有些物品刚刷出来就没了
yhzzyahoo 发表于 2012-8-25 06:58 PM http://www.pkuxkx.net/forum/images/common/back.gif
风云就是15分钟全地图刷新一次,不是原房间的东西全部清除。
jason
发表于 2013-4-2 11:35:46
回复jason
不用分布式, 可以使用共享内存的多线程并行方法。在目前一台机器可以轻松达到16核的情况 ...
dahao 发表于 2013-4-1 10:11 PM http://pkuxkx.net/forum/images/common/back.gif
没那么容易。mudos是用单线程模式开发的,用openmp就得到处加锁,最后性能还不一定高了还是低了。
dahao
发表于 2013-4-2 13:19:41
没那么容易。mudos是用单线程模式开发的,用openmp就得到处加锁,最后性能还不一定高了还是低了。
jason 发表于 2013-4-2 03:35 AM http://pkuxkx.net/forum/images/common/back.gif
首先, 一个物品只会交给一个线程处理。
我想对于绝大部分的物品来说, 处理的先后并没有关系。 稍加规划,对这样的物品用多线程并行并不用加锁。 然后对剩下的物品交给主线程去处理就好了。
当然如果绝大部分的物品都必须考虑先后, 就当我没说。
有些事情也许多考虑一步,也许并没有那么复杂也说不定。
jason
发表于 2013-4-2 14:03:24
首先, 一个物品只会交给一个线程处理。
我想对于绝大部分的物品来说, 处理的先后并没有关系。 稍加规 ...
dahao 发表于 2013-4-2 01:19 PM http://pkuxkx.net/forum/images/common/back.gif
最基本的切分方式是以玩家为单位,每个玩家用一个线程去处理他的输入。比如你输入kill xxx,这个命令要涉及到:
me - 玩家自身
xxx - 对手
environment - 房间
xxx's guarder - 保护xxx的人
xxx' suicong - xxx的随从
如果另一个玩家也输入kill xxx,那么两个线程之间就有一大堆同时要访问的对象。这些对象就需要加锁。
dahao
发表于 2013-4-2 21:47:45
最基本的切分方式是以玩家为单位,每个玩家用一个线程去处理他的输入。比如你输入kill xxx,这个命令要 ...
jason 发表于 2013-4-2 06:03 AM http://pkuxkx.net/forum/images/common/back.gif
如果两个玩家在相同房间, 让这两个玩家一个线程串行处理。
总之, 以你的聪明才智, 这点不难。
在一台机器上共享内存, 多线程运行还是比多台机器分布式运行容易处理多了。 这个不难的只要你想去做。
seagate
发表于 2013-4-3 00:35:05
我觉得把心跳处理独立线程就好了,需要互动环节交回主线程处理,也就是有一个独立的心跳处理线程,其他处理流程负担没有那么大
jason
发表于 2013-4-3 10:08:13
我觉得把心跳处理独立线程就好了,需要互动环节交回主线程处理,也就是有一个独立的心跳处理线程,其他处理 ...
seagate 发表于 2013-4-3 12:35 AM http://pkuxkx.net/forum/images/common/back.gif
最大的压力还不是心跳。最大的压力是一个房间如果有100个人,其中一个人出一招群体攻击,这100个人要被拿来进行计算。对北侠,也就是襄阳保卫。