修改 Windows “Swappiness”

修改 Windows “Swappiness”

Windows 7 中是否有可修改的“swappiness”等效项?

我的系统有 8GB 的​​ RAM,足以满足我的日常使用。我想修改交换行为,即 *NIX 系统所称的交换性并将其设置为 0,就像我在 Ubuntu 机器上所做的那样。

我已经在网上搜索过这个问题但所有的答案似乎都是针对 *NIX 系统的。

答案1

在 Windows 下,有一种称为“页面文件”的东西,系统会在其中交换应用程序以释放 RAM。我目前没有使用 Windows 计算机,但 Adob​​e 在网上发布的步骤这里看起来正确(我认为Win+Pause是“高级系统设置”的快捷方式)。

尽管可以禁用页面文件,但这样做还是存在一些问题。有关更多信息,请阅读

答案2

虚拟内存不只是“应用程序分配 RAM,当物理 RAM 耗尽时,某些内容会被调出到 SWAP”。

在 Linux(可能还有 UNIX)中,系统会尝试将最近读取的页面保存在 RAM 中:执行的程序、加载的数据、最近写入的数据(也已在磁盘上)等。这样,如果再次执行同一个程序,就不必从磁盘重新加载。当某个程序要求为其虚拟地址空间分配更多内存时,首先会重新利用剩余的磁盘缓冲区(无需访问磁盘)。如果这还不够,一些正在运行的应用程序的页面(最近没有访问过)实际上会被交换出去。在 Linux 上,通常根本不会发生交换。一旦您的系统开始交换,您会注意到驱动器活动增加(并且速度缓慢),您会说“哦,这他妈的是什么鬼”,因为这可能意味着某个应用程序正在泄漏内存,或者引擎盖下的某些东西已经开始失控。

Windows 传统上有一个愚蠢的额外习惯,即在用户空间应用程序处于不活动状态一段时间后,它们会交换整个用户空间应用程序。严格地说,不加宽恕,只是为了尽可能多地提供 RAM,“以防万一”你想启动另一个耗电应用程序。如果你让你的电脑运行,然后你离开几个小时,当你回来时,你会注意到你切换到的任何应用程序,它都会从交换中缓慢地重新加载。这种行为在 Windows 2000 中尤其痛苦,在更现代的 Windows 版本中逐渐变得不那么明显。在 W2k 中,关闭交换是一件轻而易举的事。Windows 7 有时仍然会毫无原因地像蜂蜜一样渗出,Windows 8.1 和 10 明显变得更好……但仍然没有可调节的“交换性”旋钮,也没有可调节的交换算法参数。

还有其他因素可能导致系统磁盘访问缓慢。在 Windows 7 中,您永远不知道系统是否以老式的 W2k 方式替换了您的应用程序,或者您是否应该将应用程序启动速度如此缓慢归咎于防病毒软件,或者这次是 Windows Update 在后台执行了某些操作(已知其算法中存在往复怪癖,导致 CPU 消耗 100% 和/或磁盘抖动),或者具体是某些 .NET Framework 清洁任务在 WinSXS 数据库中丢失了,或者是什么原因。有时/在某些 Microsoft 软件版本/化身中,实际上似乎某些 Windows 原生“后台任务”(特别是 Windows Update 本地数据库管理)在任务管理器中被故意“隐藏”,它们的 CPU 和 RAM 使用率不会显示在总内存消耗中。这是“合法”活动,但很难与恶意软件 rootkit 区分开来...只有当攻击停止并且立即弹出“有新更新可用”的气球时,您才知道原因是什么。

至少最近的 Windows 版本可以告诉您每个进程的磁盘 IO 活动,并且现在可以单独报告各个服务(而不是单个 SVCHOST.EXE 进程)。

相关内容