我们有一个运行在Windows Server 2012上的.Net(VS 2012)64位应用程序,它可以在内存中加载大量数据,以便在接下来的24到48小时内使用它。根据我们的设计,我们更喜欢通过连接到数据源来预先加载数据。该进程的净内存占用量高达7-8 GB,这是因为我们复制了4个独立线程的数据,这些线程代表并行客户端,因此它类似于每个客户端2 GB的数据。
我们使用的硬件是128 GB RAM,4 CPU(24 Core)处理器
我想知道内存占用量是否会影响流程的净性能,如执行速度,处理器利用率等等。
即使我们拥有如此优秀的RAM并且净使用率从未超过60%,仍然会将处理页面交换为HD,从而使其在连续使用48小时时变慢。是否有一些服务器设置或.Net c#代码API,这将有助于我们处理因内存占用而导致的性能问题。我们可以明确告诉系统我们的进程需要大量内存。
另外,我要补充一点,每个并行客户端都会生成多个Threadpool线程。为了完成Sub任务,现在流程的平均CPU使用率在50-60%之间,对于我们正在进行的良好配置,这是否意味着我们需要采取措施来找出磁盘IO瓶颈,这可能会影响性能
答案 0 :(得分:0)
当内存消耗很重要的第一种情况是CPU密集型应用程序正在处理大量数据。典型的PC可以在不到半纳秒(0.5 ns)内执行指令。第二种情况是(某些)内存消耗很重要是在应用程序冷启动期间。操作系统尝试通过缓存主内存中磁盘的数据来缓解这种情况。这就是第二次启动时应用程序更快的原因,即所谓的热启动期间(数据缓存在更快的内存中)。