问题标签 [tmpfs]
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.
linux - 用磁盘而不是 RAM/SWAP 支持 tempfs
我想限制文件夹的大小,以便进程不能x MB
向该文件夹写入更多数据。看起来它不可能在 linux 中为文件夹执行此操作,但可以在tempfs filesystem
.
所以我可以创建一个 tempfs 文件系统并对其设置大小限制。
但是问题是tempfs
由 RAM(和交换)支持的,这对于我的情况是不可接受的,因为我将用完磁盘空间。我可以用磁盘上的现有文件夹备份 tempfs 吗?
我想创建大约 50 个这样的目录,并为每个目录设置 500MB 的上限。
编辑1:以下命令有什么作用?
sudo mount -t tmpfs /tmp /tmp/mnt/aks2
我猜它会将文件夹/tmp
挂载为 mountpoint /tmp/mnt/aks2
。这是否意味着/tmp/mnt/aks2
挂载点由 /tmp 文件夹而不是 RAM 支持?如果是,为什么 i -t tmpfs 在命令中?
performance - 某些文件的共享内存读/写速度很慢
最近我们看到我们的应用程序存在一些共享内存读/写性能问题。
在我们的应用程序中,我们将数据从共享内存/run/shm复制到固定内存,以实现更高的 GPU 传输吞吐量。我们观察到从不同文件(相同大小)复制时,复制速度是如此不同。
为了重现该问题,我们将相同的源文件复制到共享内存中的两个文件(即 file1、file2)中。然后我们通过计算将文件复制到/dev/null的时间来确认问题,结果如下。
我们检查了 meminfo,我们只使用了 50% 的内存。没有任何东西被换掉(我们明确地禁用了它)。
搜索了一圈,但无法确定问题所在。最后,我们重新启动系统,问题就消失了。
有谁知道可能是什么根本原因?
谢谢!
unix - tmpfs docker 容器中没有足够的可用空间
我正在运行一个似乎内存不足的 docker 容器,我不知道如何解决这个问题。
我实际上是在这个 docker 容器上运行一个程序,它将图像下载到 tmpfs,执行一些操作,删除图像并返回结果。但是,似乎我遇到的图像太大而无法存储在我当前的 docker tmpfs 中。以下是df
容器内 linux 命令的输出:
我已经尝试扩展 docker 的内存(因此两个 tmpfs 的值很大),但我仍然遇到这个问题。
我想我有几个问题:
1) 3 个独立的 tmpfs 文件系统有什么区别?它们为什么存在?
2)大概我需要扩大第一个 tmpfs 大小(小的)——我将如何去做呢?
最后,一些相关的系统信息:
操作系统——OSX
Docker 版本——Docker 版本 17.09.0-ce,构建 afdb6d4
让我知道您是否还有其他需要了解的内容!
感谢大家。
glibc - 磁盘已满时 fwrite 不会失败?
这是我写的一个测试程序
我试图将 /dev/shm 填满
跑了
我的 glibc
内核版本为 2.6.32-642.13.1.el6.x86_64
我了解此行为是由 fwrite 尝试将数据缓存在内存中引起的。(我试过 setvbuf(NULL...) 和 fwrite 立即返回失败)。但这似乎与定义有点不同
fwrite() 函数应返回成功写入的元素数,如果遇到写入错误,可能小于 nitems。如果 size 或 nitems 为 0,fwrite() 将返回 0 并且流的状态保持不变。否则,如果发生写入错误,则应设置流的错误指示符,应设置[CX] [Option Start] 和errno 来指示错误。[选项结束]
数据未成功写入磁盘,但其返回值为 1。未设置 errno。在这个测试用例中, fclose 捕获了失败。但它甚至可能被一个相当混乱的 ftell 函数捕获。
我想知道这是否发生在所有版本的 glibc 上,这是否会被认为是一个错误。
docker - 没有 tmpfs 的 Docker 临时卷
在不依赖像 tmpfs 这样的文件系统的情况下,是否支持临时 Docker 卷?
在我的用例中,容器上运行的应用程序需要写入大量数据,Docker 文档建议不要在这些场景中使用存储驱动程序,但是因为容器写入的数据可能会超过主机上的总可用 RAM,使用 tmpfs 将不得不增加交换大小并影响其他内存密集型操作的性能。
那么有没有其他方法可以获取内容与容器一起删除的卷?
另外需要注意的是,假设的解决方案必须通过 docker-compose v2 进行配置,因为这将与 Rancher 一起使用,它仅支持 docker-compose v1 和 v2。
linux - 以编程方式检索内存放置的 tmpfs 的路径
我正在为基于 Linux 的系统编写一个应用程序,该应用程序大量使用临时文件用于 IPC 目的(锁、管道等),我想知道是否有任何规范的方法来获取临时文件的路径驻留在 RAM 内存中的系统(例如 /run)。到目前为止,我的解决方案是默认设置,/run
除非设置了包含该位置路径的特定环境变量,但我想知道是否存在任何可用于获取此类信息的 API。否则,您最常用的方法是什么?
谢谢你。
python - 如何在“OSError:[Errno 28] No space left on device”失败时最好地处理 Scrapy 缓存?
如果 Scrapy 因异常而失败,建议采取什么措施:
OSError:[Errno 28] 设备上没有剩余空间
在这种特定情况下,使用限制为 128 MB 的 ramdisk/tmpfs 作为缓存磁盘,在 httpcache.FilesystemCacheStorage 上设置HTTPCACHE_EXPIRATION_SECS = 300
我可能错了,但我觉得 Scrapy 的FilesystemCacheStorage可能无法很好地管理它的缓存(存储限制)(?)。
使用 LevelDB 会更好吗?
linux - 在 mmap 同一文件后删除 tmpfs(/dev/shm) 中的文件
我做了一些搜索,但没有找到类似的问题。这是我的步骤:
- 将文件复制到 /dev/shm (tmpfs)
- 用锁映射该文件
- 从该文件中读取数据
- 删除文件
第4步之后,之前加载的数据仍然可用,为什么?提前致谢
linux - shm_open 是否提交固定数量的物理内存?
我的一个朋友正在为内存受限的 Linux 系统开发一个库。他建议使用shm_open
分配多个合理大小(16MB)的内存,用于跨用户机器上的多个不同程序的进程间通信。
出现的问题是,如果分配了很多缓冲区(例如 128),那么 128 × 16MB 可能是可用系统内存的重要部分,而且很有可能实际上不会有太多保留内存用过的。例如,如果每个缓冲区中只有 128K 的内存实际用于任何事情,那么这种方法将使用大约 1/128 的保留内存。由于预期的访问模式,在任何给定时间,每个缓冲区中可能只有一小部分区域是“热的”。
我查阅了 的手册页shm_open
,其中特别提到了在 Linux 上,实现tmpfs
用于分配的内存。手册页tmpfs
反过来说,如果机器上存在物理内存压力,则可以调出分配的内存。它还说只分配存储文件系统已用内容所需的空间。
通过阅读本文,我假设以下情况属实:
使用
shm_open
分配 16MB 的空间不一定会立即消耗机器上的 16MB 物理内存,因为大多数文件系统将是零页,操作系统将延迟分配。使用的空间将与写入的数据量成正比。如果机器上剩下的物理 RAM 很少,则允许操作系统从共享内存缓冲区中调出部分。此外,如果在任何时候只访问缓冲区的某些部分,那么假设这些区域(可能不是其他区域)将在给定时间被调入并不是不合理的。
这些假设合理吗?这原则上可以通过经验进行测试,但令人担忧的是,我们会遇到以下形式的问题:“是的,它适用于您的系统,但通常不适用于其他 Linux 安装。”</p>
django - docker tmpfs seems to have no effect on postgresql
I have a Postgres database inside a docker container against which I run django tests. I want to improve the speed of the tests. The easiest way to do this (it seems to me) is to move postgres data into tmpfs volume.
Here's what I did:
Because I specified --tmpfs
I expect the tests run significantly faster. Unfortunately this is not the case. The speed of the tests remains exactly on the same level (give or take 5%).
My questions is: why did the speed of the tests did not change? And what can I do about it ?
Extra info:
- MacOS 10.13.6
- reference https://docs.docker.com/storage/tmpfs/