出于测试目的,我需要清除文件缓存(例如测量文件操作性能)。
我从 sysinternals找到了CacheSet,但在那里按Clear没有帮助。我刚刚复制到 Nil 时再次复制的文件眨眼间就完成了(而初始操作花费了大量的 2 秒)。
是不是说HD有自己的缓存不能取消或清除?
(Ubuntu Linux 服务器,64 位)我正在对刚刚下载的文件(~3.0 GB)进行故障排除,但是当我发现一些非常不寻常的东西时,它没有通过完整性测试。
首先这是下载后文件的MD5,与预期值不匹配:
~% md5sum media.iso
5d74facb904cc1765a468354908a8f34 media.iso
Run Code Online (Sandbox Code Playgroud)
一段时间过去了,在此期间应该没有任何更改文件,但是当我再次检查文件时:
~% md5sum media.iso
a5b97c5016afb39bd67ccfc3fa6ca59e media.iso
Run Code Online (Sandbox Code Playgroud)
这真是出乎意料。由于我有很多 RAM,我怀疑这是缓存的影响,并且出现了问题。我决定从磁盘重试整个文件,令我惊讶的是:
~% sudo sysctl -w vm.drop_caches=3 # This linux command invalidates
vm.drop_caches = 3 # everything in the memory cache.
~% md5sum media.iso
2992aa6270f6e1de9154730ed3beedc1 media.iso
Run Code Online (Sandbox Code Playgroud)
我重做了它,现在它似乎保持一致,尽管这仍然不是我期望的值。当然,内存缓存中的内容与磁盘上的内容不同。这是大问题。
为了修复下载,我在源机器上创建了一个 torrent 并在目标机器上打开它。大约 3.0GB 中的五个 1MB 块未通过完整性检查。我使用 torrent 来修复这些文件块以及文件完整性如何。
现在的问题是确定数据在何处不同步。
关于我还可以检查什么的任何想法,或者缺陷/错误到底可能在哪里?
它是 Ubuntu 10.10 64 位、Core …
我使用的是带有 4 核 Intel i7 和 8 GB RAM 的 Windows 7 x64,但最近感觉我的计算机的“RAM”仅位于硬盘驱动器上。
这是任务管理器显示的内容:

列表中的进程使用的内存总量只有大约 1 GB。几天来,我的计算机上发生的事情是,一个程序 (Cataloger.exe) 不断处理大量文件(每个文件接近 5-10 MB),为了编目而反复打开和读取它们。但它在内存中不会增长太多,并且保持在 100 MB 左右的大小。但是,它在 30 分钟内处理的数据量可以用千兆字节来衡量。
所以我的猜测是 Windows 文件缓存与它有关。在对该主题进行了一些研究之后,我发现了一个名为 RamMap 的程序,它可以显示计算机 RAM 的详细信息。这是屏幕截图:

所以在我看来,Windows 将大量不再需要的数据保存在 RAM 中,将任何 RAM 分配请求重定向到硬盘驱动器上的页面文件。即使我关闭 Cataloger.exe,RamMap 也会报告映射文件的大小在很长一段时间内大致相同。这不仅仅是这个特殊的程序。早些时候,我注意到在与其他程序进行一些大量文件操作后发生了类似的减速。因此,这确实不是 Cataloger.exe 的异常行为,而且该问题过去曾多次出现。
不管是什么,它都会使计算机速度降低 50 倍。在 Chrome 中打开一个新标签需要 20-30 秒,打开一个新程序最多需要一分钟。由于速度变慢,一些程序甚至崩溃。
那么你怎么看,问题是隐藏在文件缓存中还是其他地方?我该如何解决?
在 Windows 10 中,任务管理器中的性能选项卡/内存按钮,缓存值是什么意思?
在下面的图片中,它说我有一个 1.3GB 的缓存。这是否意味着RAM缓存?CPU缓存?磁盘缓存?文件系统缓存?以及如何清除它。

有没有办法在 Linux 中关闭读取的页面缓存?更具体地说,我希望我的进程直接从磁盘读取。
我的问题的设置:我正在 Postgres 中尝试新的查询处理技术并测量它们的运行时间。为了准确比较不同方法的运行时间,我需要关闭从操作系统缓存的读取。
我已阅读以下方法,但它们都不适用于我的情况:
echo 1 > /proc/sys/vm/drop_caches:我需要在查询的每次迭代时调用它,这会弄乱我的最终测量时间。O_DIRECT在程序内使用:我无法控制 Postgres 如何读取文件-o sync。我在这里读到它将关闭写入缓冲,但我不确定它是否也会禁用从缓存的读取?hdparm -W 0 /dev/sda1:同样,这只会禁用写入缓存。在 Windows XP 中,任务栏属性中有一个选项可以清除所有最近访问的网页、最近的文件列表,即。缓存、临时文件等;有 Windows 7 的等价物吗?
我正在使用 Ubuntu 和 GNOME Do 并且有一些不好的快捷方式(它们甚至有一个灰色的 X 图标),我无法弄清楚并从列表中删除。
我认为 GNOME Do 有一些缓存,但已经有一段时间了,它们仍然存在。
我删除了~/local/share/gnome-do文件夹,但仍然没有成功。
任何想法如何从列表中清除它们?
有时您比 Windows 更清楚哪些文件将在以后重新使用。假设您有 8GB 内存,并且您每小时在 I/O 绑定应用程序中使用相同的 1GB 文件(如果文件被缓存,则需要 1 秒才能完成,否则需要 1 分钟。)现在您处理其他一些 16GB不会被重复使用的数据。自然而然,经常使用的 1GB 文件将被推出缓存。如果可以告诉 Windows 将 1GB 文件保留在内存中,那将是有益的。(更好的是,如果有人可以告诉 Windows 不要缓存这 16GB 的数据,那就太好了,但我对这可以做到并不乐观。)
网络共享中的文件情况更糟:即使有可用内存,Windows 也会从缓存中删除文件。如果你立即重新使用一个文件,它仍然会在缓存中;但是如果关闭文件并等待 30 秒,缓存就会消失,系统将需要从远程服务器重新获取文件。对我来说,这是非常明显的,因为我使用的是 3 Mbps 的网络链接,并且我处理的文件大小约为 10 MB。
将文件保存在缓存中的穷人的方法是继续读取文件。有没有更好的方法?你知道有什么程序可以做到这一点吗?
(如果这可以在 Linux 下轻松完成,也请告诉我。)
调整 SSD 驱动器以减少磨损似乎在当今风靡一时。在这个主题上,写入缓存仍然与 SSD 驱动器相关吗?关掉了有什么影响吗?
它在哪里缓存使用“@require”关键字添加的脚本?我想知道它在 Mac OS X 上的位置,最好,但如果你知道它在另一个系统上的位置,那么在 Mac 上应该不难找到。
cache ×10
memory ×4
linux ×3
windows ×3
performance ×2
windows-7 ×2
cpu ×1
gnome-do ×1
greasemonkey ×1
history ×1
postgresql ×1
resources ×1
shortcuts ×1
ssd ×1
superfetch ×1
ubuntu ×1
windows-10 ×1