Nil*_*ils 18 java java-native-interface multithreading jvm-hotspot numa
我正在开发一个Java应用程序,用于解决一类数值优化问题-更确切地说是大规模线性编程问题。单个问题可以分解为多个较小的子问题,这些子问题可以并行解决。由于子问题多于CPU内核,因此我使用ExecutorService并将每个子问题定义为可提交给ExecutorService的Callable。解决子问题需要调用本机库-在这种情况下为线性编程求解器。
问题
我可以在Unix和具有多达44个物理内核和256g内存的Windows系统上运行该应用程序,但是在Windows上,大问题的计算时间比Linux上高一个数量级。Windows不仅需要大量内存,而且随着时间的推移,CPU利用率从开始时的25%下降到几个小时后的5%。这是Windows中任务管理器的屏幕截图:
观察结果
我尝试过的
问题
听起来Windows正在将一些内存缓存到页面文件中,在一段时间没有被触及之后,这就是CPU受到磁盘速度瓶颈的原因
您可以使用 Process explorer 进行验证并检查缓存了多少内存
| 归档时间: |
|
| 查看次数: |
369 次 |
| 最近记录: |