我们有一个客户是做图片识别,在他们在原生系统上软件运行起来非常吃内存,我们也拿到目标设备测试:
纯系统占用大概是3.6G到4.1G内存
软件运行起来大概在13G到15G内存
这样他们跑满业务大概需要19G到20G的内存,后面不得不上2根16G的内存,后面客户找到我们说,能不能帮把系统控制下来,希望在16G内存上把业务跑起来,这样可以节约一根内存的成本。

技术原理

实现的技术原理其实是让操作系统做到极致精减,让进程控制在60到70个,然后调用虚拟内存与内存压缩,禁用系统不用的服务。

  • 算力换空间:电脑内存不够用时,系统把暂时不用的数据压缩打包,仍存在内存里,不存硬盘。要用时瞬间解压,不用频繁读写硬盘拖慢速度,只轻微耗一点 CPU 算力,以此腾出更多可用内存,缓解卡顿。

当前硬件情况

  • 操作系统版本:Windows 10 IoT 企业版 LTSC 2021
测试环境:Windows 10 IoT 企业版 LTSC 2021
测试环境:Windows 10 IoT 企业版 LTSC 2021

硬件平台:N97,8G 内存

  • 测试 DEMO:CMD 窗口是我们自行编写的吃内存测试程序,双击启动即加载 6G 内存,之后每 3 秒多占用 100M,直到加载满 9G。

定制后情况

原生系统直接跑,运行一半会闪退或者跑满卡死(内存不够)

原生系统加载测试程序:CPU 与内存占用均偏高
原生系统加载测试程序:CPU 与内存占用均偏高

简单系统定制+补丁优化后效果,内存控制在3.5G左右

初级系统定制 + 系统补丁后:CPU 与内存占用下降
初级系统定制 + 系统补丁后:CPU 与内存占用下降

深度系统定制+内存压缩后,CPU长期稳定在1%,内存占用压缩到1.3-1.4G

深度定制 + 内存压缩后:内存占用压缩到 1.3–1.4GB
深度定制 + 内存压缩后:内存占用压缩到 1.3–1.4GB

系统进程才63个,线程812个

系统进程 63 个 · 线程 812 个
系统进程 63 个 · 线程 812 个

不启动系统桌面(explorer.exe),内部占用进一步压缩到1G,也就是说Win10系统+一个占用9G的程序一起只用了1G物理内存在正常运行。

不启动系统桌面时,物理内存占用约 1GB
不启动系统桌面时,物理内存占用约 1GB

通过定制系统和内存压缩后,可极大的节约内存。从节约硬件成本来说,是极有意义的定制与优化。原本使用128G内存的设备,现在仅需64G内存就能正常运行,对于大内存设备,越大内存越节约成本,能够大幅度的降本增效。

方案适合场景

当前定制方案特别适合对内存需求极大的场景,牺牲一部分cpu使用率,可以大大压缩内存的实际使用量。特别适合CPU使用率极低,内存占用率极高的场景。