![Windows 资源监视器如何报告与虚拟内存读/写相关的磁盘 I/O?](https://linux22.com/image/753056/Windows%20%E8%B5%84%E6%BA%90%E7%9B%91%E8%A7%86%E5%99%A8%E5%A6%82%E4%BD%95%E6%8A%A5%E5%91%8A%E4%B8%8E%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98%E8%AF%BB%2F%E5%86%99%E7%9B%B8%E5%85%B3%E7%9A%84%E7%A3%81%E7%9B%98%20I%2FO%EF%BC%9F.png)
在资源监视器中,在磁盘 > 磁盘活动下,会显示文件列表以及每个文件执行的磁盘读/写 B/秒。当内存分页到磁盘(即写入虚拟内存)时,是否将其报告为针对 pagefile.sys 的写入活动?当发生硬故障(即读取虚拟内存)时,是否将其报告为针对 pagefile.sys 的读取活动?
背景
我们在使用大型数据库时遇到了性能问题。资源监视器显示大量磁盘活动,主要是针对 mdf 文件和 sqlservr 进程的读取;比通常的负载高出两个数量级。这似乎不是由于我们的应用程序执行的任何操作造成的。当时内存也受到限制。我想知道资源监视器是否将虚拟内存分页报告为 db 文件和 sqlservr 进程上的磁盘 I/O,而不是页面文件上的磁盘 I/O。重新启动和增加虚拟机的大小使磁盘 I/O 恢复到正常水平。
答案1
是的,资源监视器仅报告 I/O 活动 - 与原因或目标文件名无关。这包括 pagefile.sys。
我想知道资源监视器是否将虚拟内存分页报告为数据库文件上的磁盘 I/O
不,资源监视器中没有能够“伪造访问文件名”的逻辑。
更有可能的是你的数据库进程只是很多当内存受限时(并且不再能够缓存访问的数据),对数据库文件进行更多的读写。数据库访问速度,特别是在执行大量读取操作时,几乎与内存大小成线性关系。