问题标签 [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.

0 投票
2 回答
707 浏览

ntfs - Windows XP 是否使用 NTFS 文件系统函数调用来读取/写入页面文件 (pagefile.sys)?

如果是这样,那么您如何证明所产生的间接费用(日记等)是合理的?如果没有,那么页面文件怎么会碎片化?此外,增加集群大小会提高页面文件性能(集群松弛空间不是问题)吗?

0 投票
5 回答
848 浏览

windows - 防止繁重的进程沉入交换文件

我们的服务往往在晚上在我们客户的服务器上睡着,然后很难醒来。似乎发生的情况是,有时数百 MB 的进程堆被移动到交换文件中。这发生在晚上,当我们的服务未被使用,而其他服务被安排运行(数据库备份、反病毒扫描等)时。发生这种情况时,在几个小时不活动后,对服务的第一次调用最多需要几分钟(后续调用需要几秒钟)。

我很确定这是虚拟内存管理的问题,我真的很讨厌强迫操作系统将我们的服务保留在物理内存中的想法。我知道这样做会损害服务器上的其他进程,并降低整体服务器吞吐量。话虽如此,我们的客户只是希望我们的应用程序能够响应。他们不在乎夜间工作是否需要更长的时间。

我隐约记得有一种方法可以强制 Windows 将页面保留在物理内存上,但我真的很讨厌这个想法。我更倾向于一些内部或外部的看门狗,它们将启动更高级别的功能(已经有一些内部调度程序做的很少,并且没有区别)。如果有提供这种服务的第 3 方工具会同样好。

我很想听听针对此类问题的任何意见、建议和常见解决方案。该服务是用VC2005编写的,运行在Windows服务器上。

0 投票
3 回答
649 浏览

windows - 页面文件使用

我运行一个在文件系统上进行文本操作的脚本。

该脚本在文本文件(.h、.cpp)上运行。

当脚本运行时,我看到 PF 使用量增加,直到达到为页面文件分配的 VM 数量。

有没有办法在运行期间或之后刷新 VM?

我已经提出了另一个关于它的问题(认为这是不同的问题): Single sed command for multiple substitutions?

0 投票
0 回答
1079 浏览

memory-mapped-files - 内存映射文件和“软”页面错误。不可避免?

我有两个在 Windows XP 下运行的应用程序(进程),它们通过内存映射文件共享数据。尽管我尽一切努力消除每次迭代的内存分配,但每次数据传输我仍然会遇到大约 10 个软页面错误。我已经尝试了 CreateFileMapping() 和 CreateFileView() 中的每个标志,它仍然会发生。我开始怀疑这是否只是内存映射文件的工作方式。

如果有人知道内存映射文件背后的 O/S 实现细节,我将不胜感激对以下理论的评论:如果两个进程共享一个内存映射文件并且一个进程写入它而另一个进程读取它,那么 O/S 标记页面写入无效。当另一个进程去读取现在属于无效页面的内存区域时,这会导致软页面错误(通过设计),并且 O/S 知道重新加载无效页面。此外,软页面错误的数量因此与数据写入的大小成正比。

我的实验似乎证实了上述理论。当我共享数据时,我会写入一个连续的数据块。换句话说,每次都会覆盖整个共享内存区域。如果我使块更大,软页面错误的数量会相应增加。因此,如果我的理论是正确的,那么除了不使用内存映射文件之外,我无法消除软页面错误,因为它们就是这样工作的(使用软页面错误来保持页面一致性)。具有讽刺意味的是,我选择使用内存映射文件而不是 TCP 套接字连接,因为我认为它会更有效。

注意,如果软页面错误是无害的,请注意。我听说在某些时候如果数量过多,系统的性能可能会受到损害。如果软页面错误本质上并没有太大的危害,那么如果有人对每秒多少个“过多”有任何指导方针,我想听听。

谢谢。

0 投票
4 回答
1688 浏览

windows - 如何获得预读字节?

操作系统从磁盘读取的内容比程序实际请求的要多,因为程序将来可能需要附近的信息。在我的应用程序中,当我从磁盘获取项目时,我想显示元素周围的信息间隔。在我请求和显示的信息量与速度之间需要权衡取舍。但是,由于操作系统已经读取了比我请求的更多的内容,因此访问内存中已经存在的这些字节是免费的。我可以使用什么 API 来找出操作系统缓存中的内容?

或者,我可以使用内存映射文件。在这种情况下,问题就归结为找出页面是否交换到磁盘。这可以在任何常见的操作系统中完成吗?

编辑:相关论文http://www.azulsystems.com/events/mspc_2008/2008_MSPC.pdf

0 投票
3 回答
2885 浏览

c# - 在 Windows XP 上,在单个 c: 驱动器上以编程方式将 Pagefile 设置为“No Paging File”

我正在尝试编写一个 C#/.NET 应用程序来优化我们 XP 工作站的硬盘驱动器

  1. 将页面文件设置为“无页面文件”
  2. 重启
  3. 运行碎片整理实用程序以优化数据和应用程序
  4. 创建一个连续的页面文件
  5. 重新启动,从 Sysinternals 运行 pagedefrag

我真的很挣扎#1。我删除以下键:SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles

重新启动后,系统控制面板显示“无页面文件”,但 c:\pagefile.sys 仍然存在并且它正在被 SYSTEM 进程使用,因此我无法删除它,也无法优化 HD。我尝试使用 PendingFileRenamingOperations 并且也爆炸了。我尝试使用 WMI:Win32_PageFileSetting,但这只能让您设置大小(不是零——默认为 2MB)。

当然,如果我执行上述手动步骤,它就可以工作。

我想我需要一个 API 调用来实现这一点。

0 投票
1 回答
2166 浏览

java - JVM 页面错误应该为零,对吧?多高合适?

好的,伙计们,这是另一个“我认为是一个愚蠢的问题”,但为了清楚起见,保证显得愚蠢。

在正确配置的 JVM 的 Windows 任务管理器中,页面错误应该为零,对吗?(或 linux 人的“顶级”)

例如,如果您的 Xmx 显示“4G”并且 JVM 有 4G可用的物理 RAM (例如,总共 8G,剩下 3+G 给操作系统),操作系统不应该进入 pagefile.sys 以进行正常的 jvm 操作。

这就是理论。做法是什么?如果页面错误不为零,那么可接受的数字是多少?

监控工具

监视“页面错误太高”的最佳方法是什么?

谢谢

0 投票
2 回答
391 浏览

sql-server - SQL Server 身份和顺序 GUIDS - 将重用 id 值弄乱页面文件

如果我使用身份顺序 guid并将它们作为主键并存储例如 100 000 行,然后删除其中一行并插入与删除的行具有相同Id值的新行,那么我想我会通过没有在页面文件中正确排序来搞乱“性能” 。它是否正确?如果,有没有办法“刷新”。例如通过运行和/或?DBCC DBREINDEXUPDATE STATISTICS

0 投票
2 回答
971 浏览

c# - 读/写到/从页面文件

我为两个应用程序使用嵌入式数据库,其中一个是服务器,另一个是客户端。客户端应用程序。可以向服务器端发送获取数据请求以检索数据并显示在表中(或其他)。问题是:如何将获取的数据保存(写入)到页面文件中并在需要时从中读取(在 java、Delphi 或C#)?

0 投票
2 回答
819 浏览

linux - 如果需要支持物理页面,如何告诉 Linux 不需要写入 mmap() 的页面来交换?

希望标题清楚。我有一块通过 mmap() 获得的内存。一段时间后,我得出结论,我不再需要这个范围内的数据。但是,我仍然希望保持这个范围。也就是说,我不想调用 mummap()。我正在努力成为一个好公民,而不是让系统交换超出它的需要。

有没有办法告诉 Linux 内核,如果给定的页面是由物理页面支持的,并且如果内核决定它需要那个物理页面,那么不要费心写那个页面来交换?

我想在幕后这个神奇的函数调用会破坏给定虚拟页面和物理页面之间的任何映射(如果存在),而无需先写入交换。