unity-cache-server-cache-modules

Cache Modules

  Unity-cache-server v6的缓存服务器支持两种缓存机制:

  • cache_fs,基于文件系统的缓存
  • 完全内存(RAM)支持的缓存

  cache server默认使用cache_fs即文件系统缓存模式,适用于大多数的应用程序。RAM缓存模式提供最佳性能,但Server需要足够的物理RAM用于缓存,通常需要的内存大小至少为项目Library文件夹的2-3倍。

  两个模式的配置文件信息都在config/defalult.yml中进行配置。

cache_fs

  一个简单且高效的文件系统缓存模式。

用法

--cache-module cache_fs

命令

命令 默认值 描述
cachePath .cache_fs 缓存路径
cleanupOptions.expireTimeSpan P30D ASP.NET.aspx)或IOS 8601格式时间跨度。在此时间范围内没有访问过的缓存文件会被清理。相关次序时间语法的更多信息,请参阅Moment.js文档。
cleanupOptions.maxCacheSize 0 磁盘缓存的最大size(以字节为单位)。使磁盘利用率低于该阈值,清理脚本会考虑要删除的文件,这些文件是最近最少使用的顺序。将值设置为0来禁用清除功能。

注意

  • cache_fs向后兼容v5.x Cache Server目录
  • 支持工作线程,使用--workers命令
  • 运行清理脚本时,expireTimeSpan的值用来确定要删除的文件。如果maxCacheSize指定,则脚本会检查惠存是否超过该值。超过该值脚本将清理最近最少使用的文件,直到缓存不再超过maxCacheSize。

cache_ram

  高性能,完全内存的LRU缓存。

用法

--cache-module cache_ram

命令

命令 默认值 描述
pageSize 100000000 缓存页面大小(以字节为单位)
maxPageCount 10 在缓存中分配的最大页面数。
minFreeBlockSize 1024 页面内最小分配单元(以字节为单位)。可以给较小的项目指定较低的值。
cachePath .cache_ram 缓存目录的路径,脏内存页面会定期保存到磁盘的此目录下,并在启动时加载。
persistence true 将页面文件保存和加载到磁盘。如果为false,缓存会在退出时被清理。
persistenceOptions.autosave true 设置为true时将自动保存更改,false为禁用。
persistenceOptions.autosaveInterval 10000 保存页面更改的频率(以毫秒为单位)

注意

  • 不支持工作线程

对比

  cache_ram是高性能缓存模式,但是需要内存要大于项目Library文件夹的2-3倍,对于大一点的项目就需要很大的物理内存。而cache_fs在实际测试中,并不逊色于cache_ram模式,当然仅仅是针对我的机器。并且用作server的mac mini还是一块1T的机械硬盘,如果更换上SSD可能会更快一些。所以两种模式,个人更推荐使用cache_fs。

  作为测试的资源Assets文件夹3.86G,Library文件夹2.65G,机器Server是mac mini,i5、8G内存、1T机械硬盘。客户端是mac mini,i5、16G内存、240GSSD。测试结果仅供参考,因为客户端mini 12年的比较老,跑unity还是有点卡,所以部分记录时间只能用大概范围,因为有时候导入的时候会卡死。

比较项目 cache_fs cache_ram
导入缓存结果(从客户端导本地缓存结果) 3min+ 2min+
重新压缩贴图导入server 26min+ 26min+
不适用cache server压缩贴图 21min+ 21min+
客户端导入server缓存结果 117s -

总结

  测试结果可能会因为机器的缘故略有不同,但是在对比下,cache_fs是server比较好的选择,虽然两种模式都不需要多好的cpu,但是cache_fs模式只需要一块够大的ssd,通常情况240G的SSD已经完全够用了,价格也不贵。但是使用cache_ram在我测试的情况下并没有好多少,首先门槛就要内存至少是project下library大小的2-3倍。

  综上,使用cache_fs已经能达到很好的效果了。比不适用cache server快了几乎10倍,而且还是在server使用的是机械硬盘的情况,换上ssd应该会更快一点。

  另外,关于cache的清理、镜像、高可靠性的相关内容,参考unity-cache-server官方文档。