|
|
1
3
所以您当前最坏的内存使用率是16GB。只有8GB的RAM,在操作系统和系统进程占有它们的份额之后,您就有6或7GB的内存了。所以平均来说,在一个适度加载的系统上,你已经在改变内存了。这台机器有多少个内核?您是否有8个工作线程,因为它是一个8核机器? 基本上,您可以减少内存消耗,或者增加可用内存。您的选项1,只运行4个线程,在利用CPU资源的情况下,它可以将吞吐量减半——绝对是次优的。 选项2是可能的,但有风险。内存管理非常复杂,查询可用内存并不能保证您能够继续进行分配(而不会导致分页)。磁盘I/O突发可能导致系统增加缓存大小,后台进程可能启动并在其工作集中交换,以及任何其他因素。由于这些原因,可用内存越小,您对它的依赖就越少。此外,随着时间的推移,内存碎片也会导致问题。 选项3很有趣,但很容易导致CPU负载不足。如果您运行的作业具有较高的内存需求,那么最终可能只运行几个线程,并且与选项1(您正在加载核心)处于相同的情况。 因此,采用“减少消耗”策略,您真的需要将整个数据集同时保存在内存中吗?根据算法和数据访问模式(如随机和顺序),您可以逐步加载数据。更深奥的方法可能涉及压缩,这取决于您的数据和算法(但实际上,这可能是浪费精力)。 然后是“增加可用内存”。在价格/性能方面,您应该认真考虑购买更多RAM。有时,投资更多的硬件比开发时间更便宜,以获得相同的最终结果。例如,您可以花几百美元放入32GB的RAM,这将立即提高性能,而不会给解决方案增加任何复杂性。在性能压力关闭的情况下,您可以对应用程序进行分析,以了解在哪里可以提高软件的效率。 |
|
|
2
1
|
|
|
3
0
很难在不确切知道自己在做什么的情况下提出解决方案,但是如何考虑:
希望有帮助?! |