提问人:eugen_nw 提问时间:11/9/2023 更新时间:11/9/2023 访问量:25
在 Windows 容器中使用 OR 工具的互操作本机 C++ 代码
Interop-ed native C++ code that uses OR Tools in a Windows Container
问:
我们公司有一个原生的 x64 .DLL,现在链接到 OR 工具。LIB 文件。我们通过 Windows 容器中的 C# 互操作使用此.DLL。我确实清除了.DLL无法加载以下列表中的依赖项的障碍:FROM mcr.microsoft.com/windows/servercore:ltsc2019
- msvcp140.dll
- vcruntime140.dll
- vcruntime140_1.dll
我现在的经验是程序在调用 OR 库后冻结。为了能够在这种情况下使用 OR 工具,我还需要什么?看着 ProcMon 观察正在运行的应用程序的非容器化实例,我注意到有相当多的 TCP 通信正在进行;我需要打开容器上的 58656 端口吗?人们可能遇到的任何其他障碍?
答:
0赞
Laurent Perron
11/9/2023
#1
or-tools 代码中的通信为零。所以它来自别的东西。
0赞
eugen_nw
11/28/2023
#2
如果有人需要在 Windows 容器中运行 OR 工具,则该解决方案。
添加 3 .上面列出的 DLL 足以让 OR 工具在全新的 Windows 实例上运行。这并不完全是我遇到的挂起,而是处理速度极慢。当我在配置为与容器相同的低 vCPU 和内存计数的 Windows Server VM 上运行程序时,这一点变得很明显:任务管理器显示所有内核的 CPU 利用率为 100%,但没有任何反应。
我尊敬的同事正在使用 OR 工具解决了这个问题,这是他的回应:
我手动将 OR-Tools 配置中的“worker”数量设置为 16。 通常,它将工作线程数默认为 vCPU 数。 问题在于OR-Tools选择它使用的算法的多样性 根据可用的工人数量,4 个是不够的 显然,为这些问题获取必要的算法。
评论