标签: ramdisk

EhCache BigMemory vs RAM磁盘上的Diskstore

与使用RAM磁盘的Ehcache Community Edition的Diskstore相比,Enterprise Ehcache的BigMemory的性能如何?

如果我们在对象堆中使用了所有RAM,Big Memory允许缓存在对象堆外部使用其他类型的内存存储,通过减少GC的开销.序列化和反序列化确实发生在这个堆外存储的放置和获取上.

类似地,Diskstore也是二级缓存,用于将序列化对象存储在磁盘上.

在上面的链接中提到了堆外存储比Diskstore快两个数量级.如果我配置Diskstore将数据存储在RAM磁盘中会发生什么?BigMemory还会有明显的性能优势吗?

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

java performance caching ehcache ramdisk

5
推荐指数
1
解决办法
2061
查看次数

如何使用Node.js创建RAM磁盘?

我想使用Node.js以编程方式创建一个RAM磁盘,无论底层操作系统是什么(OS X,Linux和Windows都应该受支持).

实现这一目标的最佳方法是什么?

当然,我可以将命令作为子进程运行,但我需要为每个操作系统单独编写此代码.出于显而易见的原因,我想避免这种情况.

有没有更好的方法(甚至一个模块可以做到这一点)?

ramdisk node.js

5
推荐指数
1
解决办法
1241
查看次数

通过wget获取内存并绕过磁盘写入

是否可以将网站内容 - 一组HTML页面 - 直接下载到内存而无需写入磁盘?

我有一组机器,每台机器都安装了24G,但我受限于磁盘配额到几百MB.我想将输出重定向wget到某种内存结构而不将内容存储在磁盘上.另一种选择是创建我自己的版本,wget但可能有一种简单的方法来管道

此外,并行运行此下载的最佳方法是什么(群集有> 20个节点).在这种情况下无法使用文件系统.

wget pipe ramdisk io-redirection

4
推荐指数
3
解决办法
2869
查看次数

为什么根文件系统被加载到ramdisk?

我正在研究Linux中的启动过程.我遇到这句话"RAM比软盘快几个数量级,所以系统操作从ramdisk快速"

无论如何,内核将在RAM中加载根文件系统以执行它.所以我的问题是,如果内核将根文件系统加载到RAM中,为什么我们需要一个ramdisk来加载根文件系统?

boot rootfs ramdisk

4
推荐指数
2
解决办法
6471
查看次数

磁盘上的unix套接字文件和ubuntu上的tmpfs

如果将unix套接字文件放在磁盘而不是tmpfs/ramdisk(ubuntu)上,速度是否有差异(无论多么微小)?

linux optimization ramdisk unix-socket

4
推荐指数
1
解决办法
1212
查看次数

使用 docker build 和 tmpfs 构建 Docker 映像?

问题:如何在 Dockerfile 或docker build命令行中指定要在构建容器中安装 tmpfs?这是在拆分构建的上下文中 - 第一个容器将使用 RAM 磁盘,从源构建应用程序,第二阶段将结果复制到新容器中。

这个问题看起来很相似,但我的动机不同。我不太关心持续存在的陈旧图像层,但我关心构建的性能。在 Docker 之外进行试验时,当整个源代码树在 RAM 中而不是在磁盘上时,构建我正在使用的特定应用程序的速度要快 4 倍以上。(该项目有许多中间构建和并行性,所以即使是 SSD 也会有一些颠簸)

由于 Docker 确实支持在正常docker run命令期间挂载 tmpfs ,似乎应该有一种方法可以将其包含在 Dockerfile 中?但是,我似乎无法在任何地方找到此信息 - 几乎所有对“tmpfs”和“dockerfile”或“build”或“ramdisk”等的搜索都指向上面链接的帖子或 Docker 中使用 tmpfs 的文档容器以docker run.

如果 tmpfs 甚至不会持续到第二个容器的程序集,那也是可以接受的。这可以通过在该容器退出之前从构建容器内的 tmpfs 中复制构建的应用程序,然后在复制时使用该新位置来简单地解决。

ramdisk tmpfs docker dockerfile

4
推荐指数
1
解决办法
6523
查看次数

使用 ramdisk 的机器上的 Docker 无法工作

我在 ramdisk 上启动的机器无法启动 docker 容器。

例如,运行hello-world结果为

$ docker run hello-world
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:430: container init caused \"rootfs_linux.go:109: jailing process inside rootfs caused \\\"pivot_root invalid argument\\\"\"": unknown.
ERRO[0000] error waiting for container: context canceled
Run Code Online (Sandbox Code Playgroud)

不幸的是,该DOCKER_RAMDISK=true变量似乎没有效果。我在重新启动 docker 服务之前设置了它,systemctl restart docker但没有效果。(我在 Debian Buster)

ramdisk docker

4
推荐指数
1
解决办法
2439
查看次数

增强内存映射文件的问题:它们转到磁盘而不是RAM

我试图了解Boost内存映射文件的工作原理.下面的代码可以工作,它可以完成它应该做的事情,但问题是它生成的文件存储在磁盘上(在可执行文件的同一目录中)而不是内存.也许有一个标志设置在某处,但我找不到它...
提前感谢任何信息!

    #include <iostream>
    #include <string>
    #include <cstring>
    #include <boost/iostreams/device/mapped_file.hpp>
    using std::cout;
    using std::endl;

    int main(int argc, char** argv) {
     const int blockSize = 64;
     bool writer = false;

     if(argc > 1) {
      if(!strcmp(argv[1], "w"))
       writer = true;
     }

     boost::iostreams::mapped_file_params  params;
     params.path = "map.dat";
    // params.length = 1024;     // default: all the file
     params.new_file_size = blockSize;

     if(writer) {
      cout << "Writer" << endl;
      params.mode = std::ios_base::out;
     }
     else {
      cout << "Reader" << endl;
      params.mode = std::ios_base::in;
     }

        boost::iostreams::mapped_file  mf; …
Run Code Online (Sandbox Code Playgroud)

c++ boost memory-mapped-files ramdisk

3
推荐指数
1
解决办法
7229
查看次数

如何设置ramdisk的容量

我将ramdisk编译为内核中的模块。然后我想使用cmd :insmod brd rd_size = 10000来设置ramdisk的容量。但它说我给出了错误的参数。然后我就去看这个模块的源码。static int __init brd_init(void)。没有参数列表。如果我想设置ramdisk的容量,我该怎么办?

linux module ramdisk

3
推荐指数
1
解决办法
5693
查看次数

在过度编译之间更快地从硬盘驱动器读取数据

我正在使用编译语言(Fortran 95)开发代码,该代码在巨大的星系目录上进行某些计算.每次我实现一些更改,我编译并运行代码,只需要用磁盘上的galaxy数据读取ASCII文件大约需要3分钟.这是浪费时间.

如果我在IDL或Matlab中启动这个项目,那么它会有所不同,因为包含数组数据的变量将保存在不同编译之间的内存中.

但是,我认为可以采取一些措施来加速从磁盘上的令人不安的读取,例如将文件放在假的RAM分区或其他东西中.

arrays mount fortran ramdisk

3
推荐指数
1
解决办法
71
查看次数

PostgreSQL的initdb是如何工作的?如何使用它进行测试?

许多关于集成测试(包括 Postgres 数据库)的建议都表明我可以initdb在 RAM 磁盘中创建一个新的整个集群并对其进行处理。

据我了解,initdb这是一个与数据库相关的新文件夹。

根据 Postgres 文档:

initdb创建一个新的 PostgreSQL 数据库集群。数据库集群是由单个服务器实例管理的数据库的集合。

它会创建一个新服务器吗?或者一个新的数据库?

数据库服务器

创建数据库集群包括创建数据库数据所在的目录、生成共享目录表(属于整个集群而不是任何特定数据库的表)以及创建 template1 和 Postgres 数据库。当您稍后创建新数据库时,template1 数据库中的所有内容都会被复制。(因此,template1 中安装的任何内容都会自动复制到以后创建的每个数据库中。)Postgres 数据库是默认数据库,供用户、实用程序和第三方应用程序使用。

上面这句话是否意味着从现在开始,无论创建什么数据库,它都存储在新的“集群”中?如果不是如何在这样的RAM磁盘集群中创建表?


我如何使用它来设置它以进行测试?

postgresql integration-testing ramdisk

3
推荐指数
1
解决办法
4797
查看次数

我可以使用RAM磁盘来加速我的IDE吗?

重复:

用于编译的RAMDrive - 有这样的事吗?

我知道如何加速我的IDE.

我想创建一个RAM磁盘并将我的解决方案移动到这个虚拟磁盘上.
我认为这可以加速IDE,因为RAM比HDD快得多.

有没有人这样做过?

PS:我认为,当我在我的程序(真实世界)中有一些经常使用的文档(例如一些文档模板)时,最好将这些文档移到RAM磁盘上以加速I/O. 我错了吗?

如果电力有问题,UPS可以解决它.

ide performance ramdrive ramdisk

2
推荐指数
1
解决办法
9607
查看次数

如何在特定地址创建SQLite内存数据库

我想使用 SQLite 在文件中存储一些元数据信息。该文件已经进行了 mmap。我想要做的是创建一个 SQLite DB,传入一个 char* 来告诉它在哪里创建 DB,而不是让它分配自己的 DB。这可以做到吗?内存数据库的 SQLite 文档只是说使用“:内存:”,并且数据库将在进程结束时被销毁,没有指示如何使用已经存在的数据或保留它。

如果没有,Linux 上有哪些解决方法?是否有“反向”mmap,以便我可以获取地址并将其映射到新文件?(那么 /foo 将是 /bar 的一部分的视图?)

sqlite mmap ramdisk in-memory-database

0
推荐指数
1
解决办法
2142
查看次数