问题标签 [pagefile]
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.
c# - 将活动内存分页到磁盘的速率非常高,但恒定内存使用率很低
正如标题所述,我遇到了页面文件活动高的问题。
我正在开发一个处理大量图像的程序,它从硬盘驱动器加载。它从每张图像中生成一些数据,我将其保存在列表中。对于每 3600 张图像,我将列表保存到硬盘中,其大小约为 5 到 10 MB。它以尽可能快的速度运行,因此它最多使用一个 CPU 线程。
该程序工作,它生成它应该生成的数据,但是当我在 Visual Studio 中分析它时,我收到一条警告说:DA0014: Extremely high rates of paging active memory to disk。
根据任务管理器,该程序的内存消耗约为 50 MB,似乎很稳定。当我运行该程序时,我在 4 GB 中剩下大约 2 GB,所以我想我并没有用完 RAM。 http://i.stack.imgur.com/TDAB0.png
DA0014 规则描述说“例如,每秒输出的页数通常远大于每秒的页写入数。因为每秒输出的页数还包括系统文件缓存中更改的数据页。但是,它不是总是很容易确定哪个进程直接负责寻呼或为什么。”
这是否意味着我收到此警告仅仅是因为我从硬盘驱动器中读取了很多图像,还是其他原因?不太确定我在寻找什么样的错误。
编辑:链接到插入的图像。
EDIT1:图像大小约为 300 KB。在加载下一个之前,我会先处理每个。
更新:从实验看起来像分页来自只是加载大量文件。由于我不是 C# 或底层 GDI+ API 方面的专家,我不知道哪个答案最正确。我选择了 Andras Zoltans 的回答,因为它得到了很好的解释,而且他似乎做了很多工作来向像我这样的新人解释原因:)
winapi - 由系统页面文件备份的内存映射文件
我有一个使用由系统页面文件备份的 MMF 的软件。该应用程序使用 MMF 来缓存大图像。写入和读取操作以非常高的频率发生。
虽然我可以清楚地看到使用 MMF 的性能提升,但我仍然想知道什么是更好的方法,将 MMF 映射到常规文件,或映射到系统页面文件。
我想知道这里是否有人可以对此提供一些见解,将其映射到系统页面文件或仅映射到另一个文件会更好吗?
注意:我的问题一般不是关于 MMF,我不知道是否使用 MMF,我只是想知道应该将 MMF 映射到哪里。
对此有何见解?
c++ - 仅为应用程序禁用页面文件?
我有一个实时应用程序在磁盘 IO 访问时间很糟糕的服务器上运行(实际传输速度很好,但请求磁盘访问可能需要几秒钟才能被授予)。
即使有大量可用物理内存,Windows 也会将内存移动到页面文件中,因此即使普通应用程序从未明确尝试访问磁盘,它们也可能需要磁盘访问。
有没有一种方法可以实用地禁用应用程序的页面文件,而不是禁用整个页面文件系统?
c++ - Visual C++6 MFC MapViewOfFile 返回错误代码 8
我有一个正在创建地图文件的程序,它能够很好地执行该调用m_hMap = CreateFileMapping(m_hFile,0,dwProtect,0,m_dwMapSize,NULL);
,但是当随后的函数调用时MapViewOfFile(m_hMap,dwViewAccess,0,0,0)
,我得到一个错误代码 8,即 ERROR_NOT_ENOUGH_MEMORY,或错误字符串“错误存储空间不足可用于处理此命令”。
所以我并不完全理解 MapViewOfFile 为我做了什么,以及如何解决这种情况。
一些数字...
我认为我的页面大小是65536
linux - Linux 将其页面文件存储在单独的分区中的优点是什么?
Linux 将其页面文件存储在硬盘驱动器上的单独分区上,而 Windows 如何将其存储在同一分区上……这样做的优点和缺点是什么?我的教授提到,如果页面文件被感染,则在这种情况下删除页面文件……但必须不止于此。
长话短说,为什么 Linux 会这样做并且会产生负面影响?
database - 当服务器上没有足够的可用内存时,是否可以将 200GB 或更大的 SQL Server 数据库加载到页面文件中?
这就是我们正在尝试做的事情。
我们将有一个 200GB 以上的 SQL Server 数据库需要加载到内存中。Microsoft 的最佳实践是在服务器上有足够的可用物理内存,然后将整个数据库加载到其中。这意味着我们的每个 SQL Server 都需要 256GB 的内存。这将导致快速访问加载到内存中的数据库,但内存成本很高。顺便说一句,我们在 Windows Server 2008 上运行 SQL Server 2008。
目前,我们的服务器设置为只有 12GB 内存。将近 3GB 分配给操作系统,剩余的 9GB 用于 SQL Server。是否可以将页面文件增加到 256GB 并将其设置在 SSD 驱动器上?然后我们要做的是,将数据库加载到位于 SSD 上的页面文件中。我们希望性能类似于将整个数据库加载到内存中,因为它将位于 SSD 上。
这行得通吗?我们忽略了另一种选择吗?我们希望在不牺牲环境性能的情况下尽可能降低成本。任何意见,将不胜感激。
谢谢。
windows - 将 PageFile.sys 移动到另一个驱动器
将 pagefile.sys 文件从 c: 移动到 Windows Server 2008 上的另一个驱动器是否 100% 安全?我们的 C: 空间越来越少,需要将其移走,但如果存在任何风险,则不需要。这是一个生产网络服务器,(除了快速重启)停机时间是不可接受的,你可以想象:)
azure - Azure WorkerRole 如何处理其操作系统页面文件?
Azure WorkerRole 提供了创建LocalStorage 资源的可能性。我的理解是操作系统页面文件将使用本地存储空间。但是,由于可以创建多个本地存储空间,我不清楚操作系统将使用哪个存储空间来存储页面文件。有人可以阐明在 Azure WorkerRole 的情况下页面文件是如何工作的吗?
memory - 可以配置 64 位 vmware 主机,以便 windows server 2003 32 位客户端可以分页到内存
我有一个旧的 windows 2003 R2 32 位系统(客户端),它已迁移到一个非常大的 vmware 64 位主机(主机),具有大量内存。
主机是否可以在 ram 中配置一个磁盘,该磁盘可以被客户端用作页面文件,以便分页实际上是 ram。
IT 管理主机,如果可能,我需要提供指导(关键词、链接、参考)以促进解决方案。
linux - Linux有页面文件吗?
我在几个地方发现 Linux 使用页面和分页机制,但我没有找到该文件所在的任何地方或如何配置它。
我找到的所有信息都是关于 Linux 交换文件/分区的。分页和交换之间有区别:
分页将页面(包含一段数据的小帧 - 通常为 4 KB,但在不同的操作系统之间可能会有所不同)从主内存移动到后端存储,总是作为操作系统的正常功能发生。交换将整个进程移动到存储中,并在系统内存紧张或在 Windows 8 上当新应用程序处于休眠状态时发生。
Linux 是否在这两种情况下都使用它的交换文件/分区?如果是这样,我如何查看当前已调出多少页?此信息在 vmstat、free 或 swapon 命令中不存在(或者我看不到它)。
或者是否有另一个文件用于分页?如果是这样,我该如何配置它(并观察它的使用情况)?
或者Linux根本不使用分页,我被误导了?
如果答案将特定于红帽企业 Linux 版本 6 和 7,而且关于所有 Linux 的一般答案将是好的,我将不胜感激。
提前致谢。