修改Windows“ Swappiness”


10

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

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

我已经在网上搜索了此内容,但所有答案似乎都是针对* NIX系统的。


出于好奇,将交换率设置为更高或更低的值会更好吗?
2013年

这取决于您拥有多少RAM以及正在使用多少RAM。就我而言,将其设置为0只会交换到磁盘以防止out of memory错误。有关更多@ chipperyman573的信息,请参见AskUbuntu上的答案
rath

1
Windows似乎没有针对内存不足错误的紧急保护。请参阅我的答案中的链接。
wullxz

Answers:


7

在Windows下,有一个称为“页面文件”的文件,系统会交换应用程序以释放RAM。我目前不在Windows机器上,但Adobe 在此处联机的步骤看起来很正确(我认为Win+ Pause是“高级系统设置”的快捷方式)。

尽管可以禁用页面文件,但是对此有些担忧。有关更多信息,请阅读


2
正如您在评论中所说,Windows确实似乎没有针对内存不足错误的保护措施。这使我相信没有“ swappiness”。不过,对于我所学到的有趣的新快捷方式+1,并标记为已接受是因为您发布的链接将我引向了本文。干杯
拉斯

关闭页面文件的人很多。该系统确实在其中扔了一些东西,它将在一段时间内不会被使用,这可能被认为是不必要的。该系统不太可能“耗尽内存”,除非在用户通常知道发生了什么情况的情况下,通常会有大量的缓存可以首先释放(假设已正确释放)。不完全禁用它的原因如果某些程序不存在,它将适合。他们抛弃的错误不会总是有意义的。
Psycogeek

1
我有一台具有8GB RAM的笔记本电脑,并且一直在使用交换功能。没有交换的8GB RAM与4GB的RAM + 4GB的最大交换之间没有区别。总会有一个极限,一旦达到极限,就会看到错误。
Natan

@Natan:我每天要花4 + 4占用8GB的RAM,如果在进行RAM密集型操作时物理用完了,性能会如何?
Mark K Cowan

@MarkKCowan我想拥有128MB和8GB RAM之间是有区别的。当内存已满时,操作系统将开始回收内存,垃圾收集器将执行其工作。在具有8GB容量的台式机中,实际上可以保证将回收足够的容量以继续运行,因为其中大部分是缓存。如果内存不足,交换将总是比回收内存更糟糕,因为磁盘比CPU + RAM慢几个数量级。
Natan 2014年

0

虚拟内存的意义不仅仅在于“应用程序分配RAM,而当物理RAM用尽时,某些内容会被调出到SWAP”。

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

Windows传统上有一个愚蠢的额外习惯,即在闲置一段时间后,它们交换掉整个用户空间应用程序。严格来说,如果没有,请尽可能多地提供RAM,以防万一您想启动另一个饥饿的应用程序。如果您让PC处于运行状态,并且离开了几个小时,则在返回时您会注意到您切换到的所有应用程序都会从​​交换中缓慢地重新加载。在Windows 2000中,这种行为特别痛苦,在更现代的Windows版本中,这种行为逐渐变得不那么明显。在W2k中,关闭交换很容易。Windows 7有时仍然可以像蜜糖一样渗入,有时没有任何特殊原因,Windows 8.1和10明显更好。

还有其他因素可能导致系统在磁盘访问速度缓慢的情况下运行缓慢。在Windows 7中,您永远不会知道系统是不是只是以旧的W2k方式换掉了您的应用程序,还是应该将应用程序启动速度太慢归咎于Antivirus,还是Windows Update会以某种方式在应用程序中执行某些操作?这次的背景知识(已知算法中存在反复性的怪癖,导致挂起,CPU占用率和/或磁盘抖动为100%),或者特别是某些.NET Framework监视任务在WinSXS数据库中丢失了还是什么。有时,在某些Microsoft软件版本/知识中,实际上似乎是在任务管理器中故意“遮盖”了某些Windows本地“后台任务”(特别是Windows Update本地数据库管理),它们的CPU和RAM使用率未显示在总内存消耗中。“合法”活动,但很难与恶意软件rootkit区别开来……只有当崩溃停止并且提示“新更新可用”的提示框立即弹出时,您才知道原因是什么。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.