通过网络共享 RAM

Shr*_*thi 50 networking memory windows

我的同事正在使用一个消耗大量内存的应用程序,这使得系统太慢。是否可以通过 Internet 与其他 PC 共享内存?

系统有 8 GB 的 RAM,应用程序消耗超过 6 GB。

Mok*_*bai 165

我只考虑过在“标准”机器上运行的独立应用程序,无法简单地将其安装在其他地方或使用专业硬件或软件。其他答案(正确)解决了该任务的软件迁移或专用硬件。

通过网络“共享 RAM”的任何方式都将受到该网络介质的限制。由于即使是千兆以太网也被限制在大约 100MB/s(兆字节),这意味着您的“RAM”速度也将受到限制。

100MB/s 是您系统中实际 RAM 速度的一小部分。你的程序会非常缓慢,感觉就像是在 90 年代初的计算机上运行

对于顺序读取和写入,现代硬盘驱动器比这略快。SSD 的速度要快几倍。

这忽略了延迟问题,这将使您的程序再次变慢一个数量级。

由于涉及的缓慢和其他技术问题,这不是任何人可能认为值得尝试为“家庭”或“办公室”系统解决的问题。如果需要,购买更多 RAM 更便宜、更有效。

只需为页面文件购买更多 RAM,甚至是 SSD。没有其他方法可以做到这一点,而不需要大量的工作或硬件,而收益却微乎其微。

  • 通过千兆以太网交换/分页可以比本地*磁盘*磁盘上的页面文件具有更低的延迟。例如,10 毫秒的磁盘延迟对比本地以太网的 1 毫秒 ping 时间。如果保存页面文件(或您要交换到的 iSCSI 设备)的文件服务器在 * 其 * RAM 中保持热状态,您就有可能获胜。IDK,如果 Windows 支持分页到网络文件。(我很确定 Linux 确实如此,但这是一个 Windows 问题)。哦,刚刚看到问题说“通过互联网”,所以 nvm。 (52认同)
  • “感觉就像是在 90 年代初的计算机上运行”——奇怪的是,90 年代的计算机感觉比今天的计算机快得多。 (13认同)
  • @TomTom 用于家庭和“正常”办公室使用千兆仍然是您在台式机上获得的。仅仅因为 25G 和 100G 很常见(或至少可用)*用于骨干基础设施*并不意味着您可能会在桌面上看到它。我什至无法在任何本地供应商处以合理的价格*找到*桌面 10GigE 卡,更不用说 25GigE。10GigE 卡大约是 8GB 记忆棒成本的 4 倍。我知道我会考虑合理的升级。 (12认同)
  • @MarkHu 鉴于这是在超级用户上提出的问题,我认为提问者无法控制所使用软件的代码。 (2认同)
  • @PeterCordes 您所描述的仍然是购买更多 RAM 或 SSD 的损失。在 Windows 中更是如此。;) (2认同)
  • @Mehrdad:SSD 代表“固态磁盘”。如果你在谈论 `fsync`,你会说它直到数据在磁盘上才会返回,即使你知道现在这通常是一个 SSD。在某些情况下,“磁盘”只是非易失性存储的方便简写。在这种情况下,我认为它的意思是“无论计算机将其操作系统文件系统保持在什么状态”(因此通常希望它交换到)。 (2认同)
  • @PeterCordes SSD 中的 D 代表“驱动器”。HDD 中的第一个 D 代表“磁盘”。HDD 是“硬盘驱动器”。 (2认同)

Ger*_*der 76

只是为了完整性:InfiniBand允许直接访问其他机器的内存。

但是,它需要:

  • InfiniBand 交换机
  • 每台机器中的 InfiniBand 附加卡
  • 必须专门对应用程序进行编程才能使用它

它不能在现有网络上工作,它需要所有连接节点的完全独立的基础设施。它也不能通过 Internet 工作

  • 它当然也比仅仅获得另外 8 GiB 左右的 RAM 贵得多 :-)。 (54认同)
  • 哦,只有一个数量级左右;) (40认同)
  • 您不需要 infiniband,RoCE 也是可能的。但是,这确实需要支持 RDMA 的 NIC 和可能支持 NIC 的新交换机,以及编程为使用 RDMA 的应用程序。 (7认同)
  • +1 因为它是一个伟大而正确的但 - 对于这种情况 - 完全没用的答案:-) (7认同)

cyb*_*ard 19

Is there any alternative solution?
Run Code Online (Sandbox Code Playgroud)

这在很大程度上取决于数据的性质。

您可以在 2 台不同的机器上运行 2 个不同的 mysql 服务器。

然后把数据分成1/2,写程序自动知道要去哪个服务器。

当然,如果您有可用的服务器,这可以扩展到任意数量的服务器。

  • 您有 2 台计算机运行不同的操作系统,每台计算机都有一个运行 mysql 的副本。因此,#1 计算机可以是 192.168.0.1,计算机#2 可以是 192.168.0.2(或其他)。在您的主 PC 上,您现在可以使用这两个 IP 来检索您的数据。Mysql 或其免费替代品 mariadb 提供了像 libmysql 这样的库来添加到您的程序中,因此它可以本地访问 mysql。这不是远程桌面,它不是客户端-服务器和/或客户端和多服务器关系。 (4认同)

Tob*_*ght 16

是的,使用网络块设备协议相当容易做到(对于需要交换的无盘系统,我已经这样做了)。

安装nbd-server在服务器机器上,并将其配置为自动创建每个主机的文件。

确保您的客户端机器已将 NBD 编译到其内核中,然后将它们配置为交换到安装了 NBD 的设备。该nbd-client软件包可以提供帮助。

抱歉,如果以上内容有点含糊 - 从这里无法访问我使用过的机器;当我可以访问它们时,我可以填写详细信息。

有一个替代的 NBD 服务器实现,称为nbdkit; 我对此一无所知。

  • +1,如果您要交换的文件服务器将交换文件缓存在 * 其 * RAM 中,则在 LAN 上通过 GigE 交换应该比本地磁性硬盘驱动程序具有更低的延迟。HD 寻道时间约为 10 毫秒,而 LAN ping 时间约为 0.25 毫秒。不知道 Windows 是否可以做任何类似的事情,例如通过 Windows 文件共享 (SMB) 或任何其他协议的页面文件,但也许 iSCSI 可以工作。OP 提到“通过互联网”;那可不是个好主意。除非您的 ping 时间低于您的 HD 随机访问延迟,否则这不是一场胜利。 (8认同)

Dam*_*mon 9

鉴于“Windows 10,工作站具有 8GB RAM”这些不重要的小细节,实际上只有一个合理的答案:购买更多 RAM 并减少废话。

购买 SSD 并将页面文件放在那里将是下一个最佳选择,但实际上……购买更多 RAM。

通过网络提供页面文件(“共享内存”)当然是可能的,但这是一个非常糟糕的主意。虽然确实存在通过网络访问时间比访问本地驱动器更好的边界情况,但这与您的使用情况无关,因为您同时需要一致的低访问时间高带宽。请记住,您不会预料到一两个页面错误,而是不断地交换。除非您愿意支付数千美元,否则您不可能接近购买 RAM 或 SSD。

8 GB 几乎不足以同时运行 Windows 10内存消耗量大的应用程序。同时运行 Word、Excel 和 Outlook 几乎是不够的。这正是典型的完全无法使用的“完全胡说八道的公司设置”,数百万人每天必须在他们的工作笔记本电脑上生活。在另一个内存模块中投资 100-200 货币,它会在一周内分摊其成本(需要几分钟的事情现在只需几秒钟,时间就是金钱——不幸的是,这通常很难进入当地豆类柜台的负责人)。

或者,如果你拥有这台机器,你可以使用 NTLite 来减少 Windows 10 的垃圾,减少它的内存占用。或者,您可能只是关闭 80% 的大部分不必要的服务。这似乎令人难以置信,但使用 2 GB 以下的 RAM 运行最新版本的 Windows是可能的

但实际上,只需购买 RAM...它比花费数小时的宝贵时间来减少 Windows 垃圾要快得多、容易得多。

  • @Xen2050 我想知道它是否真的那么糟糕,所以在我的 6GB Windows 10 机器上我打开了 Outlook、Excel、Word、Edge,我运行了一个非常小的 SQL Server 实例,Malwarebytes 似乎在用 170MB 做一些事情,我打开了 Visual Studio 2017,我在这里打开了 Firefox,我的内存使用率为 65%,Windows 甚至不必开始使用压缩内存。因此,IME,Windows 10 在内存不足 8GB 的​​情况下运行良好,无论如何,Damon 明显不喜欢 Windows 与答案无关。 (8认同)
  • ram 上的 windows 真的那么糟糕吗?我正在运行带有完整系统的 Debian ram(无物理驱动器),并且可以打开数十个 Web 浏览器选项卡、LibreOffice 文本和电子表格、gimp 照片编辑、观看视频或听音乐,剩下大约 3 场免费演出程序或文件的空间,总共 8GB。我不是一个讨厌赢家的人,但从你的话来说,*“全面的 BS 公司设置”* 听起来很像 Windows 本身...... (2认同)

rac*_*man 6

一个简单的替代方法是在远程 PC 上运行应用程序,可能在专用用户帐户下,并通过 RDP、VNC 或任何方便的方式简单地控制它。

  • 是的,通过网络合并两台机器的 RAM ......网络不起作用,不适用于普通应用程序(带有按钮和菜单的方形灰色那种)。 (2认同)

Cri*_*gie 6

另一种选择是在 ram 可以轻松扩展或缩减的环境中临时部署应用程序。

我会查看一个 Amazon AWS 实例,它可以通过一次重新启动来更改大小。

IE 一个像 C5.large 这样的小实例有 4GB 内存和 2 个内核,Linux 每天花费 2.04 美元,Windows 安装每天花费 4.26 美元。EBS 磁盘空间是一项额外成本,可随分配的 GB 线性扩展。

您可以将系统设置为较小的尺寸,然后当您想要完全消除噪音时,停止它,更改实例大小,然后运行软件。

  • m5.4xlarge 是 64 GB 内存和 16 个内核,价格为 18.44 美元/天或 Windows 36.10 美元/天。
  • r4.8xlarge 为 244 GB 和 32 个内核,价格为 51.07 美元/天或 86.40 美元/天(带 Windows)。
  • x1.32xlarge 为 1952 GB 和 128 个内核,价格为 320.12 美元/天或 461.43 美元/天(带 Windows)

或者最大的...

  • x1e.32xlarge 为3904 GB和 128 个内核,价格为 640.52 美元/天或 781.82 美元/天(带 Windows)。如果您的同事需要的不止这些,那么问题需要以更优化的方式重写。

https://www.ec2instances.info/ 将帮助您选择合适的尺寸。请注意,某些地点的成本高于其他地点。新加坡和北加州很贵。但是,除了磁盘存储成本之外,您的 VM 在不运行时不会产生任何费用。

缺点是,如果您长时间需要此内存,则购买 VM 时间是一种昂贵的方法。然而,会计师似乎有时更喜欢租金等运营成本,而不是升级等资本成本。