将IntelliJ IDEA的缓存/索引目录移动到RAM

4

我正在尝试将IntelliJ IDEA配置目录中的和目录移动到/tmp中的RAM挂载点,使用符号链接。

我已经向/etc/fstab添加了:tmpfs /tmp/ramdisk tmpfs defaults,size=1024M,x-gvfs-show,mode=1777 0 0,并用符号链接替换了Intellij配置目录中的和目录,这些符号链接指向了RAM挂载点。

$ mkdir /tmp/ramdisk/intellij/caches
$ mkdir /tmp/ramdisk/intellij/index
$ ln -s /tmp/ramdisk/intellij/caches caches #inside intellij config/system dir
$ ln -s /tmp/ramdisk/intellij/index index #inside intellij config/system dir

问题是,每次重启后,挂载目录将从/tmp中删除,在挂载之前我需要重新创建它们,否则我将会收到一个错误信息:mount: /tmp/ramdisk: mount point does not exist. 我还需要重新创建缓存和索引目录,否则符号链接将无法工作。
是否有更好的方法来解决这个问题?

3
你想实现什么目标?更好的读取性能吗? 由于Linux的页面缓存,这不会像你期望的那样显著提高性能。我在一个ramdisk上完全构建了一个项目,相比直接从磁盘上构建,它只节省了2秒,不值得这个努力。 - Peter
1
是的,我想要实现更好的性能。同时也要避免SSD不必要的读写操作以延长其寿命。至于原始问题。目前我只是从我的一个~/.bash*文件中在shell启动时创建目录 - 看起来运行良好。但我想知道是否有更好的方法来实现这一点。 - SergioLeone
我没有更好的想法,只是想指出,Linux 在幕后缓存了很多东西,我非常确定 IntelliJ IDEA 也使用内存映射文件进行缓存。此外,你必须在某个时刻将数据写回磁盘。顺便说一句:我每个工作日都会运行 IntelliJ IDEA 数小时,并且自 10 年前以来一直在使用不同的 SSD。从未遇到过 SSD 寿命问题。 - Peter
1
感谢您的评论,@Peter。我会重新考虑是否需要这样做,或者只是让事情保持默认状态。 - SergioLeone
2个回答

6

为了回答这个问题,并且以防其他人碰巧遇到并需要答案。

我最终使用了tmpfiles.d。在/usr/lib/tmpfiles.d/下创建了一个新的配置文件,内容如下:

#Type Path                          Mode UID  GID   Age Argument
d     /tmp/ramdisk/intellij/caches  0777 root root  -   -
d     /tmp/ramdisk/intellij/index   0777 root root  -   -

现在,我需要的目录每次启动都会重新创建。

鉴于第一篇帖子中的评论,我仍然会重新考虑是否需要这个功能,因为它在Linux操作系统上不会产生太大的影响。


在当前版本中,似乎不支持符号链接。 - dawid
自从2020年版本以来,他们完全重新设计了整个配置管理系统,所以如果这不再起作用,我也不会感到惊讶。 - SergioLeone

0

正如@SergioLeone和我在评论部分指出的那样,以前的解决方案不再适用。 我选择将整个相关的JetBrains文件夹放入RAM中,方法如下:

    ~/.cache/JetBrains -> /tmp/intellij/JetBrains

使用这种方法已经几天了,到目前为止,没有SSD噪音,也没有任何后悔。 - dawid
我在升级到2020.x后尝试过这个方法,当时他们把所有东西都搞砸了:D。但那时我没有观察到任何显著的性能变化,所以我完全停止使用这个"hack"。也许我应该在2021.x版本中再次尝试并测试一下。 - SergioLeone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接