现状及目标
DellR920服务器,虚拟化VMWARE VSPHERE 5.5系统,Guest系统Windows Server 2012 R2。部署软件ARCGIS 10。影像图切图测试:原有切图耗时70小时,现在耗时17小时。依然有继续优化的空间。调试目标:
1. 验证虚拟化环境下的最佳切图参数配置,出具虚拟化环境下ArcGIS10的最佳性能配置方法。
2. 验证SSD应用的有效性,分别测试SSD SRT技术、切图缓存技术、ESXi主机缓存技术、SAS 12GB规格模式下的最优化性能配比,得出结论为切图及R920服务器环境下的最佳SSD配置优化方法。
3. 验证ARCGIS系统的最佳优化方法。验证ARCGIS优化调试最佳经验。
4. 再次缩短优化时间,将切图性能通过不同的技术手段尝试来试图达到最短时间。
调优内容
A. 虚拟化
1. VSPHERE SERVER版本选择为VSPHERE5.5 Updata 2 with VMtools。
2. 当主机物理内存不足的情况下,使用ESXi 主机缓存技术。
3. 硬件优化
4. 虚拟机配置
5. VMFS文件系统优化,启用SAS及RAID卡的AlwaysWrite Back 写缓冲功能。由于切图是一个持续写操作,因此该操作是必需项。
B. 操作系统Windows 2012 R2
1. 修改注册表,改变TCP网络协议栈的性能。
2. 启用Windows 2012的默认CPU性能的MAX值。Windows 2012为节电考虑会关闭部分CPU核心。
3. 优化page file,建议设置为最小值=物理内存*2+50M,最大值=物理内存*4+50M,可以参考MS官方文档:http://support.microsoft.com/kb/2860880
4. IO优化,注册表修改Windows2012的默认IO请求数。
5. NTFS文件系统优化
C. 固态硬盘优化
基于SSD的优化就是解决erase-before-write产生的写入放大的问题,不同类型的IO分离,减少写操作带来的性能影响。
1. 将sequential logging修改为In-page logging,避免对相同位置的反复擦写。
2. 通过缓存写入的方式将大量的in-place update随机写入合并为少量顺序写入。
3. 利用SSD随机读写能力高的特点,减少写增加读,从而达到整体性能的提升。
4. 控制面板-管理工具-服务里,禁用Superfetch、Disk Defragmenter和Windows Search服务:对于SSD而言由于存储方式的改变,原有的磁盘碎片清理变得多余,甚至是有害的,因此我们需要禁用磁盘碎片清理,而针对传统机械硬盘的Superfetch预读取和Windows Search引索,同样现在也没有必要可以禁用。
5. 利用读写速度更快的内存来作为SSD的高速缓存使用。其具体原理是,系统读写SSD时会把数据先存放在由内存虚拟的缓存中。部分常用的数据就可以在内存中反复读写,从而减少对SSD的读写次数。这样做的好处首先是读写速度更快,其次是可以延长SSD的使用寿命。
D. ARCGIS优化
1. Maplex高级注记。使用Maplex高级注记功能编辑的地图文档,可能会导致切图效率的低下。判断是否是Maplex导致的切图速度慢,最简单的方法就是关闭Maplex引擎之后,进行切图,并将单位时间内生成切片文件的大小与原来做一个比对,如果速度相差悬殊,那么可以尝试将地图文档中除当前切图比例尺之外的其他图层先删除掉,再分级进行切图。
2. 发布文件的格式。很多时候我们做切图,都是在服务器上进行的,引用ESRI售后技术工程师的说法,在多核服务器上通过mxd发布的服务可能会存在异常,esri承认是bug,推荐使用基于msd的地图服务。所以在服务器上做切片,一定要将地图文档保存为msd格式发布,再进行切图。
3. 最大实例数的设置。一般来说,我们都会讲切图服务的实例数设置为CPU核心数+1,因为有一个SOC进程是专门用来做回收的,并不参与实际工作,所以这样设置可以发挥出切片服务器的最大性能。但是我们在实际的操作过程中,发现这种方式在某些型号的服务器上会导致SOC进程创建后又不断回收,最终只有一个进程在切图的情况。这时我们就只能通过不断尝试设置不同的实例数,从而找到一个合适的值。
4. 切图方式。我么都知道,进行切图有两种方式,一种是直接在地图服务属性中执行更新切片,或者通过ArcToolbox工具中提供的服务器工具进行切图。原理上来说,这两种方式都是调用的同一个GP过程,没有什么区别,但是在实际使用中,我们通过服务属性更新切片时常常会遇到ArcMap程序异常关闭的情况,所以还是推荐使用工具进行切图。
5. 紧凑&松散。ArcGIS10中推出了一种新的缓存格式,将原来独立的缓存图片,保存成bundle格式二进制文件,每个bundle文件存储 128*128个缓存图片。相比成千上万的tile文件,这样做的好处是易于缓存管理,减少磁盘空间占用,提高缓存读取效率等等。所以我们在切图过程中也应使用紧凑格式来创建切片。
6. 图片格式。不同的图片格式,直接影响缓存文件的大小,一般来说,系统默认是采用PNG32来保存tile文件的,但如果我们想缩小一些占用空间,可以考虑使用JPG或PNG8、PNG24等格式。使用JPG虽然压缩比是最大的,但是创建出来的切片文件噪点严重,所以不推荐使用。通过多次尝试,PNG8格式不仅可以大大压缩缓存文件的大小(大概是PNG32格式的60%),而且切片的效果相差也不大,所以是PNG32格式很好的替代选择。
下一步工作
1. 更换SAS12GB规格接口进行eMLC颗粒的测试。
升级固件到上图最新版本的主控芯片固件。如图2015年6月3日更新的固件,版本A3AE,A00。
- NAND: 24nm eMLC
- Interface: SAS 12Gb/s
- Form Factor: 2.5” SFF x 7mm High (15mm for 1.6TB model)
- Performance
- Sequential Read (Sustained): 900MB/s
- Sequential Write (Sustained): 400MB/s
- Random Read 4k (IOPS): 120,000
- Random Write 4k (IOPS): 30,000
2. 采用ARCGIS上述优化方式进行切图优化。
3. 尝试多种不同的场景和测试目标来进行切图,测试其稳定性和速度。