万国觉醒是一款SLG策略手游,拥有庞大的用户群体和较好的口碑,是一款品质很高的SLG手游。但是往往到晚上玩家上线比较集中、战斗比较激烈的时候,就会出现服务器卡顿现象。经过分析,是战斗太多造成的。于是我写了两篇利用CUDA、DPDK、NUMA、Thread-Affinity优化服务器战斗的方案。文章链接如下。
如果服务器端用Java语言,那么需要用JNI技术。但是在用libdpdk.so或者libmtcp.so时会出现CPU占用过高的问题,这是DPDK的PMD轮询机制造成的,需要深度优化DPDK,参考文章如下:
DPDK核心优化
从成本考虑,本优化方案不需要额外增加硬件,只需要服务器的GPU支持,采用较便宜的GeForce系列GPU,成本增加不多,但是可以极大提高运算速度。经测试2000个军队同时战斗只需要1个毫秒左右就可以计算完,加上Device到Host数据传输的时间也仅有几个毫秒而已。服务器因此造成的卡顿可以完全解决。