: 推 louis0407 : 2048~2048是哪边的推荐啊? 很少看到讲这个 07/17 09:10
2048 是个 magic 数字,有几十年的历史了吧,设成固定大小是更久远的 95 时代就有
了。会定成 2048 固定大小也有磁盘对齐和避免档案破碎降低效能的意思。因为虚拟记
忆体空间 page 大小一般也是 4 KB 所以只要是 4 的倍数就 OK。
32-bit Windows 的默认虚拟内存空间是 Low 2 GB for process (user-mode)、High
2 GB for System (kernel)。如果开启 4GT 就变 Low 3 GB、High 1 GB。所以 32-bit
Windows 的 Kernel Memory Dump 最大也是 2 GB。连 FAT16 档案最大也是 2 GB。
很多与 Windows 内存相关的数据都会出现 2 GB 这个魔术数字,但好像没看过官方
有任何声明指出分页档设成 2 GB 会爆击就是了。太大没意义、小太不够用,要设成
固定值就找个整数倍的比较舒服。
Windows XP RAM 小于 1 GB 时的最小默认分页档大小是 1.5 ×RAM;
Windows XP RAM 大于 1 GB 和 Windows Vista & 7 的最小默认分页档是 1 ×RAM;
Windows 10 的最小默认分页档是基于分页档的使用历史;
默认最大分页档大小基本上是 3 ×RAM or 4 GB 取最大者、Windows 10 也略有不同,
与 crash dump 的需求在此忽略。
典型上建议分页档大小为 RAM 的 1.5 或 2 倍。一些 M$ Server Performance Tuning
课程或文件多半也会告诉你分页档大小至少要设为等于或大于实体 RAM 大小。这牵涉
到部分的程式或服务必需要有分页档,及 Windows 内存管理的内存回收问题。
Process 只能存取虚拟内存位置,其对应到实际内存位置时通常不会分配到连续的
页面空间。虚拟地址空间也有因保留等与可能的碎片化问题。一般来说当实际使用与分
配的内存量很高时,分页大小不足会导致更多的内存回收及更高的 CPU 使用率(
处理内存分配问题)。
但随着时代改变电脑上插的 RAM 更多了,或许用不完内存就没这么多问题了!?现
在基本上是拥有的 RAM 越多所需的分页档大小就越小,但这还是得看实际上使用的记
忆体大小依个案来决定。
近年的 M$ 的工程师有建议依实际使用状况去设定,执行[效能监视器]主要针对
Memory \ Committed Bytes 以 weeks 为时间来观察实际使用状况找出最大值。一般个
人用不想这么麻烦可以开[工作管理员]随便观察下瞬间值。
[工作管理员][效能]分页中的[内存]页面
[使用中(已压缩)]为实际分配使用中的大小,Win 10 会在 CPU 闲置时对
使用率低的内存分页进行压缩进一步减轻分页档需求
[己认可]=Committed Bytes / Committed Limit
[已快取]=快取资料,其占的空间可随时依需求清出供使用
Memory\Committed Bytes=已提交的虚拟内存量
Memory\Committed Limit=在不扩张分页档下可提交的虚拟内存量=RAM + Page File
Memory\% Committed Bytes In Use=上述两值相除得出的使用率
[使用中]与[已认可]的大小不相同主要还是要看已认可。[已认可]可简单视为虚
拟内存总使用量。
在系统高负载尖峰状态、高内存使用率下,也就是 Max Committed Bytes 值就是参
考点。如果电脑实际 RAM 的大小超过 Committed Bytes 最大值且有余裕就不需要设定
太大的分页档,留有应付突发状况的容量大小就可行。
但由于分页档大小对于内存管理效能有着一定的作用,且[可用的]内存容量也影
响到可供快取使用的大小。有充足的分页档容量系统就能将使用率低的内存分页丢到
分页档。在磁盘性能、分页档大小还会影响 CPU 使用率、可快取容量等怎么样才是最
佳平衡不见得统统都设个 2048 就是最佳化就是了。
但不管怎设应该也不会在数位域直接影响到声音就是了。硬盘进入省电、怠速这卡读取
的会有严重的顿卡声不会只是感受不同,且播放中的相关程序怎么说也不太可能被丢到
分页档里。有什么影响的话多半也就是 CPU 使用率与磁盘机吃电不同的影响使电源回
路、EMI/RF 噪声造成的影响了吧。
就跟 Audio Latency 一样,基本上低 Latency 会有更频繁的 CPU 唤醒,除了 CPU 功
耗会更高,路上碰到红灯跟撞车的机会只会更大。M$ 的 WASAPI 官方文件就声明低
Latency 会让发生 glitches 的风险更大。
如果真的在不同 Latency 有不同感受的话,至少希望使用 WASAPI 时 buffer 大小设
定为 0、1、2、3 ms 这些数字时是有着相同的感受,不然大概可能就只能说是心灵不
够坚强了。