跳过导航链接 | |
退出打印视图 | |
Oracle Solaris Studio 12.3:OpenMP API 用户指南 Oracle Solaris Studio 12.3 Information Library (简体中文) |
Oracle Solaris 支持无需进行硬件升级即可提高 OpenMP 程序性能的特性,其中包括内存定位优化 (Memory Placement Optimization, MPO) 和多页大小支持 (Multiple Page Size Support, MPSS) 等。
MPO 使 OS 可以将页面分配到访问这些页面的处理器附近。SunFire E20K 和 SunFire E25K 系统在相同的 UniBoard 内(与不同的 UniBoard 之间相比)有不同的内存延迟。称为初次接触的缺省 MPO 策略在包含第一次接触内存的处理器的 UniBoard 上分配内存。对于大部分数据访问是针对每个处理器(处于初次接触定位状态)的局部内存的应用程序,初次接触策略可以显著提高该应用程序的性能。与内存平均分布在系统上的随机内存定位策略相比,此策略即可以降低应用程序的内存延迟,又能提高带宽,从而获得更高的性能。
通过 MPSS 功能,程序可以对虚拟内存的不同区域使用不同的页面大小。缺省 Oracle Solaris 页面大小相对较小(在 UltraSPARC 处理器上为 8 KB,在 AMD64 Opteron 处理器上为 4 KB)。通过使用较大的页面大小,过多发生 TLB 未命中情况的应用程序可以提高性能。
使用 Oracle Solaris Studio 性能分析器可以测量 TLB 未命中次数。
使用以下 Oracle Solaris OS 命令可以获取特定平台的缺省页面大小:/usr/bin/pagesize。在此命令中使用 -a 选项可列出所有受支持的页面大小。(有关详细信息,请参见 pagesize(1) 手册页。)
三种可更改应用程序的缺省页面大小的方法为:
使用 Oracle Solaris OS 命令 ppgsz(1)。
使用 -xpagesize、-xpagesize_heap 和 -xpagesize_stack 选项编译应用程序。有关详细信息,请参见编译器手册页。
使用 MPSS 特有的环境变量。有关详细信息,请参见 mpss.so.1(1) 手册页。