关于Windows内存的几个概念澄清

2022-02-20 22:36:20 浏览数 (1)

狭义的虚拟内存是分页文件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

0 人点赞