Questions tagged «shared-memory»

3
在系统内存上,尤其是tmpfs,shm和hugepages之间的区别。
最近,我对基于Linux内核内存的各种文件系统感到好奇。 Note:就我而言,与更好地理解标题中提出的问题相比,以下问题应被视为或多或少是可选的。我在下面问他们,因为我相信回答它们可以更好地帮助我理解这些差异,但是由于我的理解有限,因此其他人可能会更好。我准备接受任何可以丰富我对标题中提到的三个文件系统之间差异的理解的答案。 最终,我认为我想挂载一个可用的文件系统,hugepages,尽管一些轻松的研究(并且仍在进行更轻松的修改)使我相信a rewritable hugepage mount不是一个选择。我错了吗?这里有什么机制? 另外关于 hugepages: uname -a 3.13.3-1-MANJARO \ #1 SMP PREEMPT \ x86_64 GNU/Linux tail -n8 /proc/meminfo HugePages_Total: 0 HugePages_Free: 0 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 2048 kB DirectMap4k: 8223772 kB DirectMap2M: 16924672 kB DirectMap1G: 2097152 kB (以下是/ proc / meminfo和/ proc / cpuinfo的全文版本) 以上是怎么回事?我是否已经分配hugepages?了DirectMap内存页和hugepages? 更新 …

1
将“ memfd”视为“拥有文件的进程”是否错误?
https://dvdhrm.wordpress.com/2014/06/10/memfd_create2/ 从理论上讲,您可以在memfd_create()不引入新系统调用的情况下实现[ ]行为,如下所示: int fd = open("/tmp", O_RDWR | O_TMPFILE | O_EXCL, S_IRWXU); (请注意,为了在此处更方便地保证tmpfs,我们可以使用“ /dev/shm”代替“ /tmp”)。 因此,最重要的问题是为什么我们到底需要第三种方式? [...] 后备内存用于拥有文件且不受安装配额限制的进程。 ^我认为这句话的第一部分不值得依靠吗? 所述memfd_create()的代码被作为“的字面实施链接的文件居住在[α] TMPFS必须是内核内部 ”。跟踪代码,我知道它与不实施LSM检查有所不同,正如博客文章继续说明的那样,它还创建了memfds以支持“密封”。但是,我非常怀疑memfds正在考虑不同的,以原则上TMPFILE。 具体来说,当OOM杀手敲门时,我认为它不会解决memfds持有的内存问题。这可能总计高达RAM的50%-tmpfs的size = option的值。内核不会为内部tmpfs设置其他值,因此它将使用默认大小50%。 因此,我认为我们通常可以期望拥有大memfd的进程,但是没有其他重要的内存分配不会被OOM杀死。那是对的吗?


1
了解MMAP
我在这里浏览有关MMAP的文档,并尝试使用此文档来实现 我对它的实施有一些疑问。 MMAP是提供文件的映射并返回物理内存中该位置的指针还是返回映射表的地址?是否也为该文件分配和锁定空间? 将文件存储在内存中的那个位置后,它会一直保持在那里直到munmap被调用吗? 该文件是否甚至移至内存中,还是只是用作重定向的映射表,而该文件实际上位于虚拟内存-(disk)中? 假设将其移到内存中,如果其他进程具有地址,其他进程可以访问该空间以读取数据吗?

2
Linux在哪里设置SHMMAX的默认值?
我只是想知道在哪里设置这些值以及它们的默认值是什么?我的目前是18446744073692774399。我没有将其设置在任何可以看到的地方。 $ cat /proc/sys/kernel/shmmax 18446744073692774399 $ sysctl kernel.shmmax kernel.shmmax = 18446744073692774399

1
使用`/ run / shm`(以前是`/ dev / shm`)作为临时目录
在/run/shm(以前/dev/shm)中创建目录并将其像临时目录一样用于应用程序是一种好习惯吗? 背景:我正在为一个程序编写黑匣子测试,该程序对文件和目录做了很多工作。对于每次测试,我都会创建很多文件和目录,然后运行程序,然后创建预期的文件和目录集,然后运行diff进行比较。我现在有大约40个测试,它们已经花费了2秒钟以上的时间来运行。希望加快速度,我想在某种虚拟磁盘上的目录中运行测试。 在研究ram磁盘时,我偶然发现了一个带有答案的问题,指出可以在其中创建目录/dev/shm并像临时目录一样使用该目录。然而,研究了更多内容后,我偶然发现了来自debian 的Wiki页面,指出/dev/shm直接使用是错误的。我应该使用这些shm_*功能。不幸的是,这些shm_*功能似乎无法在Shell脚本中使用。 现在我很困惑。是否可以像/run/shm以前/dev/shm那样使用temp目录?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.