我的同事正在使用消耗大量内存的应用程序,这使系统速度太慢。是否可以通过Internet与其他PC共享内存?
系统具有8 GB的RAM,应用程序消耗的内存超过6 GB。
我的同事正在使用消耗大量内存的应用程序,这使系统速度太慢。是否可以通过Internet与其他PC共享内存?
系统具有8 GB的RAM,应用程序消耗的内存超过6 GB。
Answers:
我只考虑了在“标准”计算机上运行的独立应用程序,无法将其简单地安装在其他地方或使用专业的硬件或软件。其他答案(正确)涉及该任务的软件迁移或专用硬件。
通过网络“共享RAM”的任何方式都将受到该网络介质的限制。由于甚至千兆以太网被限制为大约100MB / s(兆字节),这意味着您的“ RAM”速度也将受到限制。
100MB / s是系统中实际RAM速度的一小部分。您的程序将非常缓慢,并且感觉好像它在90年代初期就在计算机上运行
对于顺序读取和写入,现代硬盘驱动器比这快一点。SSD快几倍。
这忽略了延迟问题,这将使您的程序再次变慢一个数量级。
由于速度慢和涉及的其他技术问题,这不是任何人都认为值得尝试解决“家庭”或“办公”系统的问题。如果需要的话,购买更多的内存更便宜,更有效。
只需购买更多RAM,甚至为页面文件购买SSD。没有其他方法可以做到这一点,而无需花费大量的工作或硬件即可获得很少的收益。
仅出于完整性考虑:InfiniBand允许直接访问其他计算机的内存。
但是,它要求:
它不能在现有网络上工作,它需要用于所有连接节点的完全独立的基础结构。它也不能通过互联网工作
Is there any alternative solution?
这在很大程度上取决于数据的性质。
您可以在2台不同的计算机上运行2台不同的mysql服务器。
然后将数据除以1/2,然后编写程序以自动知道要转到哪个服务器。
当然,如果有可用的服务器,则可以扩展到任意数量的服务器。
是的,使用网络块设备协议很容易做到(对于需要交换的无盘系统,我已经做到了)。
nbd-server
在服务器计算机上安装,并将其配置为自动创建每个主机的文件。
确保客户端计算机已将NBD编译到其内核中,然后将其配置为交换到安装NBD的设备。该nbd-client
软件包可以提供帮助。
抱歉,如果上述内容含糊不清-从这里无法访问我完成此操作的机器;当我可以访问这些细节时,我可以填写它们。
NBD服务器的另一种实现称为nbdkit
;我对此一无所知。
鉴于细节不重要,“ Windows 10,工作站具有8G B RAM”,实际上只有一个理智的答案:购买更多RAM并减少废品率。
购买SSD并将页面文件放在第二个最佳选择,但实际上...购买更多RAM。
当然可以通过网络提供页面文件(“共享内存”),但这是一个非常糟糕的主意。确实存在极端情况,即通过网络的访问时间比访问本地驱动器要好,但这与您的使用情况无关,因为您同时需要一致的低访问时间和高带宽。请记住,您不是在预期一两个页面错误,而是在不断地交换。除非您愿意支付数千美元,否则您将无处接近购买RAM或SSD。
8 GB不足以同时运行Windows 10 和需要大量内存的应用程序。它仅够同时运行Word,Excel和Outlook。这恰恰是典型的完全不可用的“胡说八道的公司设置”,数百万人每天必须使用他们的笔记本电脑生活。在另一个内存模块中投资100-200货币,并在一周之内摊销其成本(花费几分钟的时间现在要花费几秒钟,而时间就是金钱-不幸的是,这通常很难进入本地bean柜台的头)。
或者,如果您拥有计算机,则可以使用NTLite减少Windows 10废话,从而减少其内存占用。或者,您可能只是关闭了80%的不必要服务。似乎令人难以置信,但是可以使用少于2 GB的RAM运行最新版本的Windows。
但是,实际上,只需购买RAM……比花费数小时的宝贵时间减少Windows废话要容易得多。
一种简单的替代方法是在远程PC上运行该应用程序(可能使用专用用户帐户),然后通过RDP,VNC或任何方便的方法对其进行控制。
另一个选择是将应用程序临时部署在可以轻松扩展或缩小ram的环境中。
我看一下一个Amazon AWS实例,可以通过重新启动来更改大小。
IE小型实例(如C5.large)具有4GB内存和2个内核,对于Linux,每天的费用为2.04美元,对于Windows安装,每天的费用为4.26美元。EBS磁盘空间是额外的成本,并且会随着分配的GB线性增加。
您可以将系统设置为较小的大小,然后在要完全消除噪音时将其停止,更改实例大小,然后运行该软件。
或最大的...
https://www.ec2instances.info/ 将帮助您选择合适的尺寸。请注意,某些地点的费用高于其他地点。新加坡和北加利福尼亚很贵。但是,除了磁盘存储成本外,您的VM在不运行时不会花费任何成本。
缺点是,如果您长时间需要此内存,则购买虚拟机时间是一种昂贵的方式。但是,会计师似乎有时更喜欢诸如租金之类的运营成本,而不是诸如升级之类的资本成本。
要求IT为您的PC购买更多的RAM,并在任务管理器中使用该应用程序的使用情况的屏幕快照来说明需求。
通过一家名为Kove的公司(http://kove.net/)。它需要Infiniband基础结构在“底板”上工作(以太网正常工作),尽管有时可以根据具体情况提供其他选择,例如RoCE。它们提供了许多透明的接口以允许零代码更改集成,并提供了用于API的内核绕过的API,可通过更直接的CPU访问(即避免内核开销)。在性能方面,这取决于您的应用程序。如果您受CPU限制,那么影响可能很小(这可能令人惊讶)。如果您将内存带宽限制在本地主机上,则它们将为您提供更大的内存,但是您将受到现有瓶颈的限制。在这种情况下,具有比可以放在盒子中的内存更大的内存对工作量有利,而不用完RAM?我们已经看到(非常)虚拟化和python机器学习库的良好结果。高端HPC应用程序往往会更糟,但是我们使用了C API并设法使性能达到可接受的水平,同时减少了节点数(节点用于RAM,而不是CPU周期),这比MPI更好。 。对于您的同事来说,这是否是一个好的解决方案还很难说,但是您可以研究一下。希望能有所帮助。明确地说,我不是为Kove工作,也没有经济动力,但是我与他们合作了很多年,并认为该技术有可能对某些计算的完成方式产生重大影响。但是我们使用了C API并设法使性能达到可接受的水平,同时减少了节点数(节点用于RAM,而不是CPU周期),与MPI相比,这是一个加分。对于您的同事来说,这是否是一个好的解决方案还很难说,但是您可以研究一下。希望能有所帮助。明确地说,我不是为Kove工作,也没有经济动力,但是我与他们合作了很多年,并认为该技术有可能对某些计算的完成方式产生重大影响。但是我们使用了C API并设法使性能达到可接受的水平,同时减少了节点数(节点用于RAM,而不是CPU周期),与MPI相比,这是一个加分。对于您的同事来说,这是否是一个好的解决方案还很难说,但是您可以研究一下。希望能有所帮助。明确地说,我不是为Kove工作,也没有经济动力,但是我与他们合作了很多年,并认为该技术有可能对某些计算的完成方式产生重大影响。
另一种观点-也许问题不在于系统资源的限制,而是您的朋友正在编写的浪费应用程序。6 GB的RAM太多了。
仅仅因为许多其他应用程序过于肿,并不一定意味着您的朋友应用程序需要成为其中的一个。使用不同的编程方法可以减少内存需求,同时提高速度。例如,如果应用程序将整个数据集加载到内存中然后进行处理,则比例如将数据存储在(本地或远程)SQL数据库中且选择索引很少并在那里访问数据要浪费得多。如果可能,使其逐块处理数据,而不是一次全部加载。内存中的结构也可能是浪费的。完成后释放内存。不要将可用的内存映射加载到RAM中。以及其他数百个提示...
但是,如果应用程序确实需要更多内存,需要将其存储在其他计算机上,则可以将其修改为使用memcached等将其存储在其中。奖励积分,因为它将在将来更好地扩展。
因此,用户要求HOW通过网络共享内存。如果这是个好主意,那就不是。因此,这实际上是您可以执行的操作。
我并不是说这是个好主意,也不会表现出色,但是应该可以。
我假设这不是Windows Server,您可以在其中创建iSCSI安装点。
计算机1的步骤:
电脑2个步骤:
做完了!
注意事项-如果Windows允许您将页面文件移动到网络共享,则可以跳过VHD废话。网上没有很多例子(很明显的原因)。
可能会发生完全的系统不稳定,或完全发生其他情况。没有人真正知道会发生什么。
正如您提到的用于通过网络共享的“ RAM”而不仅仅是任何形式的“内存”一样,最终的答案在理论上是肯定的,实际上不是。
而出于各种目的和原因,定期在网络上共享其他类型的内存(例如存储和其他临时数据)。同样,如果需要,RAM在技术上可以通过网络共享。但是性能和成本太高,无法在现实世界中实现。
RAM或随机存取存储器被操作系统用作工作空间,因此在其上执行许多读/写操作。在一般系统上,与其他部件相比,带有RAM的数据速度容量最高。如果将RAM放在网络上,则需要具有非常高的数据传输容量,即使在技术上可能实现,成本也会很高。只需花费一小部分网络速度升级,您就可以在本地获得计算机的RAM。
应用程序通常在虚拟内存中运行,因此它们的虚拟内存需求可以超过系统的可用物理内存,而性能不会有任何其他影响。操作系统将简单地将虚拟内存分页到磁盘上,以在任何给定时间内根据需要释放物理内存以进行主动使用。这通常对于具有合理局部性的应用程序是很好的(在任何给定时间,活动在某种程度上都集中于应用程序虚拟内存空间中的有限区域)。如果应用程序的本地性很差(在整个虚拟空间中始终引用内存),除非其所有虚拟内存都可以容纳在物理内存中(所有虚拟内存都驻留在其中),否则它的性能将很差。
因此,这里有几种可能性:
在远程计算机上使用内存的想法基本上是创建一个联网的页面文件。从理论上讲,它可以工作,但实际上,由于网络带宽和延迟的原因,如果分页文件位于计算机(其自己的硬盘)本地,则性能会好得多。远程系统是在其内存中还是在磁盘上托管页面文件都没有关系,瓶颈(性能的最大限制)将是网络。在Internet上尤其如此,但是即使远程计算机在同一LAN上相邻也是如此。