maigan2015 2016-08-02 02:15 采纳率: 0%
浏览 1943

如何高效利用服务器CPU?当服务器上只有一个方法

我们现在在网络上有一台服务器专门用来运行算法,这个算法为matlab自动生成的dll文件,或者为单一matlab进程。算法的调用由c#实现。调用请求按照紧急程度分为2种,一种需要尽快返回结果,一种可以排队,不需要立刻返回。
但是实际过程中发现,不管算法由哪种方式提供,c#分线程进行调用的时候,都会在算法处排队。c#调用dll排队是因为dll在c#进程中只被复制一次,因此多个线程访问的都是同一方法。c#调用matlab进程排队是因为matlab只有单一进程,来自c#的计算请求会一个个进行。不管是哪种方式,发现cpu使用率都很低。
现在云提供商,升级服务器的时候都是把机器变成更多核心的,但是对于这种单方法的服务器来说,似乎无法提高运算速度(matlab内部对于for loop做bash计算另说)。有没有办法提高cpu使用率呢?或者让这个机器,能够多个同一方法同时调用?

我想到一个非常不规范的办法,不知是否可行。请大家提供建议! 将同一方法在dll中做上几个,每个函数名不同,然后c#在分出线程调用的时候,就可以同时跑‘同一’方法了(虽然函数名不同,但内容是一样的)。

  • 写回答

2条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置