Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何";强迫;使用多个处理器的单线程遗留应用程序_Linux_Multithreading_Cpu Usage_Kvm - Fatal编程技术网

Linux 如何";强迫;使用多个处理器的单线程遗留应用程序

Linux 如何";强迫;使用多个处理器的单线程遗留应用程序,linux,multithreading,cpu-usage,kvm,Linux,Multithreading,Cpu Usage,Kvm,我有一个小型的多核服务器,它可以执行各种任务,其中大多数是多线程的,并且已经进行了令人满意的速度调整。然而,有些任务依赖于现有的单线程应用程序,这些应用程序偶尔会阻塞对时间敏感的批处理过程的性能(作为一个具体的例子,偶尔通过bzip2(一个单线程进程)转储数据库系统,会在整个转储过程中锁定某些数据库记录,这可能需要7-10个小时,从而干扰其他数据库操作)。显然,除了用原始项目的多线程分支替换它之外,没有办法通过多个CPU本机运行单线程进程。bzip2有几种多线程替代方案。但是,还有许多其他有问题

我有一个小型的多核服务器,它可以执行各种任务,其中大多数是多线程的,并且已经进行了令人满意的速度调整。然而,有些任务依赖于现有的单线程应用程序,这些应用程序偶尔会阻塞对时间敏感的批处理过程的性能(作为一个具体的例子,偶尔通过bzip2(一个单线程进程)转储数据库系统,会在整个转储过程中锁定某些数据库记录,这可能需要7-10个小时,从而干扰其他数据库操作)。显然,除了用原始项目的多线程分支替换它之外,没有办法通过多个CPU本机运行单线程进程。bzip2有几种多线程替代方案。但是,还有许多其他有问题的单线程应用程序,我更愿意减少应用程序的数量在需要维护和测试的服务器上

为此,我正在寻找一种通用解决方案,以在现有硬件上运行现有的单线程应用程序(即,一个抽象程序,基本上可以跨多个处理器细分和重新组装指令集)。我曾考虑过虚拟化解决方案,但对此类工具缺乏经验,似乎无法找到满足上述用例的相同功能。请注意,现有硬件是64位的,能够虚拟化并运行非BSD Linux


非常感谢!

您无法使单线程应用程序成为多线程应用程序。这样做行不通。 您可以做的是群集单线程应用程序-即同时运行它们的多个副本

node.js就是一个例子,它是一个基于java脚本的单线程事件驱动环境。有一些工具,如cluster,可以管理一个节点集群的多个实例,并平衡它们之间的工作


通过运行多个副本,每个实例将有一个单独的进程,然后在不同的内核上运行。

感谢您的快速回复。我认为这是在黑暗中拍摄的。看来这将是代码和维护路线。我会给一些时间进行其他输入,但会确保标记一个答案。再次感谢。