问题标签 [ramdisk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
20324 浏览

python - 如何在 Python 中创建 ramdisk?

我想在 Python 中创建一个 ramdisk。我希望能够以跨平台的方式执行此操作,因此它可以在 Windows XP-to-7、Mac 和 Linux 上运行。我希望能够像普通驱动器一样读取/写入 ramdisk,最好使用驱动器号/路径。

我想要这个的原因是为创建具有特定结构的目录的脚本编写测试。我想完全在 ramdisk 中创建目录,所以我会确保在测试结束后它会被完全删除。我考虑过使用 Python 的tempfile,但如果测试将在中间停止,则目录可能不会被删除。我想完全确定它是否被删除,即使有人在测试过程中拔掉了电脑上的插头。

0 投票
3 回答
7675 浏览

java - 可以创建一个 java RAM 磁盘以与 java.io.* API 一起使用吗?

我正在使用一个 3rd 方库,它基本上创建了一个输出目录,其中包含不同类型的文件和子目录。我希望能够编写单元测试来确认输出是否正确。

我希望能够将 lib 与 RAM 磁盘一起使用,这样库所做的任何事情都不会以任何方式触及实际的磁盘板。这个想法是使测试运行和清理速度非常快(丢弃 RAM 磁盘?)。

我可以使用的两个最突出的选项是Commons VFSJSR 203。前者对我没有用,因为我希望使用 java.io.* API 而不是 Commons VFS 类透明地工作。后者并没有削减它,因为我必须使用 JDK 6(它应该是 JDK 7 的一部分)而且我不知道它是否可以与 java.io.* 无缝工作(我不会赌它)。

还有其他解决方案,但我不能使用它们,原因与我不能使用 Commons VFS 相同。由于所讨论的库的复杂性,模拟是不可能的。

在我的 linux 机器上,我可以轻松地创建一个 RAM 驱动器并使用 java.io.* API,就像使用磁盘上的文件一样。问题是,我希望它是跨平台的,更具体地说,是让磁盘设置成为测试过程的一部分,而不是外部的。

那么,有没有办法在 Java 中注册一个可与标准 java.io.* API 一起使用的 RAM 驱动器?

0 投票
2 回答
3219 浏览

r - 在 Matlab 和 R 之间共享大型数据集

我需要一种相对有效的方式在 Matlab 和R之间共享数据。

我检查了SaveRMATLAB R-link,但是SaveR 首先将Matlab 的二进制数据 格式化为文本字符串,然后将它们打印到 ASCII 文件中,这对于大型数据集效率不高,并且MATLAB R-link仅适用于 Windows(它使用基于 COM 的接口)。

更新:

Dirk 发布了一个列表,其中列出了似乎比SaveRMatlab R-link更好的解决方案。我最近还了解了RAM 磁盘(有关一些实现示例,请参见此处此处),并认为它们可能有助于在 Matlab 和 R(或类似的计算环境)之间进一步共享大型数据集的任务。这导致我提出以下问题:

假设数据适合 Matlab 或 R 的本机数据容器中的机器内存:

  1. 到目前为止列出的任何解决方案是否更适合 RAM 磁盘?

  2. 在处理 RAM 磁盘而不是辅助存储解决方案时,是否还有其他需要考虑的因素?

谢谢!

0 投票
2 回答
335 浏览

c# - 如何减少写入磁盘的旧应用程序和实时读取它的应用程序 (.NET) 上的文件 IO

我的情况是我有一个遗留应用程序,我没有每秒左右将数据写入磁盘的代码。我有一个我编写的 C# 程序,它每秒读取写入磁盘的内容并使用数据。数据被写入几个文本文件,我在创建之前就知道文件名。

问题是我有很多虚拟机运行这个遗留应用程序和我的程序。它们不受 ram 或 cpu 的限制,但由于文件 io 瓶颈,我不能为每台机器添加超过 10 个 VM。

有没有一种简单的方法可以在磁盘上创建一个存在于 ram 或其他东西中的文件?我听说命名管道是一种选择?

谢谢!

0 投票
1 回答
1574 浏览

winapi - 如何知道有多少物理 Ram 将 imdisk 分配给 ramdisk

最近我正在使用 imdisk http://www.ltr-data.se/opencode.html/#ImDisk 我正在使用以下命令制作 1 GB ramdisk:imdisk.exe -a -t vm -m V: -s 1024M -p "/fs:NTFS /q /y /v:Name /c" 我想知道多少物理 Ram 占用了这个 ramdisk。但似乎这取决于 ramdisk 是如何填充文件的。它从几 MB 开始,然后随着我复制的每个文件而增加。如果我随后删除这些文件,则它所占用的物​​理 RAM 量不会减少。所以我不能使用 GetDiskFreeSpaceEx 来获取物理内存的数量,因为它不会正确显示。此外,我无法将程序的驱动程序视为普通程序,因此我可以测量其大小。

我和作者谈过,他说:

好吧,你说的是物理内存。我在谈论内核地址空间。ImDisk 一次在一个地址块中为 ram 磁盘分配所有内存,因此没有动态分配或类似的东西。

我认为确定该地址空间在某个特定时刻使用多少物理内存的唯一方法是,如果有一些未记录的 API 报告特定内存块的提交/物理值。但是,我不知道任何此类 API。

但也许有人知道一种方法......我的意思是在程序中获得这个数字,而不仅仅是视觉上。

0 投票
2 回答
1020 浏览

database - PostgreSQL on RamDisk: Size of work_mem etc.?

I am experimenting with running PostgreSQL on a ramdisk on windows. The way I did it was to simply place the data directory on the ramdisk.

Without having done any specific benchmarks, the performance seems to be magnificent and only CPU bound. My question is what the optimal values for things like work_mem, shared_buffers etc. would be?

Even when the database is in ram it take more than half a minute to run many of my queries. Therefore, I wonder whether it makes sence to create indexes on the table. The indexes would, of course, need to stay in ram. I should mention that I am using PostgreSQL for a data warehouse (small one, though).

Edit: I should mention that I am using the RamDisk utility from DataRam.com. It only gives me a bluescreen once in a while, when I configure the ramdisk, never when it is established. I think of this as nostalgic eyecandy. ;)

0 投票
1 回答
214 浏览

windows - 在 Windows 应用程序中实现我自己的文件缓存有什么意义吗?

我有一个引用 28 字节记录的数据文件的 Delphi 应用程序。该文件按顺序写入,但随机读取。数据文件被拆分为 N 个物理文件,它们以 10 兆左右的速度滚动以提供一些针对磁盘问题的保险,因为我们只写入最近的一个,我发现它变得越来越慢,如果它被允许长大。在启动时,我读取了整个文件集并建立了一个索引,以便我可以快速知道在给定虚拟记录号的情况下要查找哪个文件。

作为拆分成 N 个文件的一部分,我实现了一个读取缓存。我现在意识到 Windows 自己做了相当多的缓存,我想知道我是否通过在我自己和磁盘文件之间粘贴另一个缓存来获得任何东西。

任何想法表示赞赏。

0 投票
1 回答
2139 浏览

java - EhCache BigMemory 与 RAM 磁盘上的 Diskstore

企业版 Ehcache 的 BigMemory 与使用 RAM 盘的 Ehcache 社区版的 Diskstore 相比,性能如何?

如果我们使用对象堆中的所有 RAM,大内存允许缓存通过减少 GC 的开销在对象堆之外使用额外类型的内存存储。序列化和反序列化确实发生在从这个堆外存储中放入和取出时。

同样,Diskstore 也是二级缓存,将序列化的对象存储在磁盘上。

在上面的链接中,提到堆外存储比 Diskstore 快两个数量级。如果我将 Diskstore 配置为在RAM Disk中存储数据会怎样?BigMemory 是否仍具有显着的性能优势?

BigMemory 是否还有其他一些优化?有没有人遇到过任何比较这两种方法的实验?

0 投票
1 回答
644 浏览

build-process - RAMDisk 可靠性

我正在查看现有的 RAMDisk 讨论……似乎没有人提出任何可靠性问题。我最近开始为我的源代码使用 Dataram ramdisk,我想知道是否有任何我应该关注的风险。

它确实将编译时间加快了 30%

0 投票
4 回答
159 浏览

windows - 在 Windows 中是否可以将部分内存用作虚拟文件

我正在使用命令行工具对文件进行一些处理。问题是这个文件不应该存储在磁盘上(安全原因)。所以我想知道在 Windows 中是否可以将一部分内存用作虚拟文件,该虚拟文件可以通过命令行工具访问,就好像它是一个真实的物理文件一样。