Dom*_*omi 2 linux windows filesystems memory cache
有没有什么简单的方法可以告诉 Linux 在内存中缓存文件目录?
我意识到 Node.Js 和 Apache 将大部分时间花在文件 I/O 上,如果您有很多文件(尤其是对于脚本和模板文件;数据库可以根据需要缓存内容,如果表不是太大)。当然,您应该使用 Squid 或其他加快速度的方法,但这需要大量配置,并且不能轻松自动完成,我的重点是“可部署性”(即使是交互式安装也需要太多您的普通用户。当然,必须考虑所有安全因素(包括对包含的 httpd 配置的自动修补)。)。
另一方面,内存映射文件应该是轻而易举的,因为您真的只想告诉系统:“嘿,将该文件保留在内存中,直到我告诉您删除它或直到重新启动”;或者甚至是一些侵入性的 API,它可以直接将其挂钩到相关的 POSIX 或系统调用中,并且在用户空间中完全做到这一点。有那么简单吗?我似乎找不到一些简单的代码片段或指令集来完成(不适用于 Linux 或 Windows)。
帮助将不胜感激!
您可以使用vmtouch 实用程序将文件甚至文件目录锁定到内存中。
vmtouch -dl /var/www/html/important_files
Run Code Online (Sandbox Code Playgroud)
用法:
vmtouch v0.8.0 - the Virtual Memory Toucher by Doug Hoyte
Portable file system cache diagnostics and control
Usage: vmtouch [OPTIONS] ... FILES OR DIRECTORIES ...
Options:
-t touch pages into memory
-e evict pages from memory
-l lock pages in physical memory with mlock(2)
-L lock pages in physical memory with mlockall(2)
-d daemon mode
-m <size> max file size to touch
-f follow symbolic links
-v verbose
-q quiet
Run Code Online (Sandbox Code Playgroud)
所以我可以使用这样的目录,看看内存中有多少:
[root@xt /var/www/html/xt/centos]# vmtouch .
Files: 146
Directories: 14
Resident Pages: 0/5996 0/23M 0%
Elapsed: 0.059768 seconds
Run Code Online (Sandbox Code Playgroud)
所以我可以“触摸”目录并将它们放入缓存中:
[root@xt /var/www/html/xt/centos]# vmtouch -t .
Files: 146
Directories: 14
Touched Pages: 5996 (23M)
Elapsed: 0.64321 seconds
Run Code Online (Sandbox Code Playgroud)
随后的检查显示:
[root@xt /var/www/html/xt/centos]# vmtouch .
Files: 146
Directories: 14
Resident Pages: 5996/5996 23M/23M 100%
Elapsed: 0.001846 seconds
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1985 次 |
| 最近记录: |