狭义的虚拟内存是分页文件pagingfile,通过SystemPropertiesPerformance.exe /pagefile命令设置pagingfile大小
最小、最大可以设置成一个数,也要考虑下系统盘剩余空间能不能放得下
一般是设置一个最小、最大范围,
我电脑是64G内存,换算成MB就是64*1024 257=65793
我设置的最小值是物理内存 257MB,最大值比最小值大4G。之所以最小值设置物理内存 257MB,这是微软蓝屏fulldump的要求。
如果比较懒,那就让操作系统自己去把握吧,如下图勾选自动管理
如果已经遭遇虚拟内存瓶颈,比如压缩比较大的文件报无法分配所需内存,eventvwr事件查看器过滤到事件ID 2004 "Windows成功诊断出虚拟内存不足的情况"
遇到上述情况还不想重启,且磁盘空间足够,可以调整paging范围,把最小值设置成比之前的最大值还大的新值,不用重启就能生效,但建议还是要隔段时间重启下服务器,计划任务定时重启机器,可参考https://cloud.tencent.com/developer/article/1941560
下面详细说说windows内存的事情。
windows硬件配置(含CPU、内存、虚拟内存情况)可以用这句命令导出到文件
msinfo32 /nfo C:SYSSUM.NFO /categories systemsummary
可用物理内存=安装的物理内存-为硬件保留的物理内存
广义的虚拟内存(即交换分区)=可用物理内存 分页文件
windows不像linux,linux只有在物理内存用到爆的时候才会用swap(虚拟内存),windows则并不是物理内存用到满才会用虚拟内存,一些业务场景吃pagingfile比吃物理内存厉害,物理内存还没瓶颈时如果pagingfile满了,那系统和业务就会比较卡。参考https://bbs.huaweicloud.com/forum/thread-77940-1-1.html
下面的说明,我是以1台384G内存的黑石机器来截图示例的
上图箭头所指是微软在用词上不严谨,不该是Virtual Memory虚拟内存,应该是PagingFile分页文件。所有windows都是这样,跟云厂商没关系,你去看你windows电脑也是这样的。
msinfo32显示的信息才是准确的,云监控显示的信息也是准确的。
如下图左侧圈出的,总的虚拟内存(即交换分区)=总的物理内存(安装内存刨除为系统保留的内存) 分页文件
云监控对应的2个内存指标,分别对应下图右下的使用中和已提交,分别是物理内存使用量和交换分区使用量(并非pagingfile使用量)
如下图:安装物理内存384GB(为硬件保留1GB)、pagingfile 40GB、物理内存使用量14.1GB、交换分区使用量19GB、交换分区总量423GB
交换分区总量=为硬件保留的物理内存之外的其他物理内存 pagingfile=383 40=423
如果把pagingfilesize设置为0了,msinfo32显示的总的虚拟内存(即交换分区)=总的物理内存 分页文件=总的物理内存 0=总的物理内存
此时,2个内存指标的图像是一样的
搞清楚概念后就会明白,物理内存是交换分区的一部分,因此交换分区监控图像会一直存在
扩展:为硬件保留的内存默认是操作系统自动处理,但可以人为干预使得为硬件保留的内存变大,参考
https://cloud.tencent.com/developer/article/1924872