首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

在 Linux on POWER 上利用透明大内存页(7)libhugetlbfs 的应用示例

在 Linux on POWER 上利用透明大内存页(7)libhugetlbfs 的应用示例

libhugetlbfs 库已被用在很多客户生产环境中,帮助跨 POWER 调优工作负载,并可用于带 SLES 10 的 SPECcpu2000 发布。最近,它还成功地用在了具有 RHEL 5 新版本的 SPECompM2001 发布中。此外,在 IBM Linux on POWER wiki(参见 )上还提供了如何调优内存应用程序的实际应用示例。
用 SLES 10 发布        SPECcpu2000为了提供该技术的实际应用示例,IBM 最近在 SPEC.org Web 站点(参见 )上发布了一系列有关 POWER5+ 系统上使用 SLES 10 的 SPECcpu2000 基准。所发布的这些示例充分展示了调用和使用 libhugetlbfs 可以非常容易。比如,在 SPECint2000 运行上,执行体可正常构建。之后,当这些运行就性能进行评测时,通过设置两个可应用的环境变量就可以开启这些执行体的 malloc 备份,如  所示。
清单 18. 在 16MB 大内存页中用 malloc 命令运行 SPECint2000
1
2
3
# export HUGETLB_MORECORE=yes
# export LD_PRELOAD=libhugetlbfs.so
# runspec --config LoP_config_file.cfg  int




对于 SPECcpu2000 Fortran 发布,需要利用常见的重链接可应用程序的方式设置执行体以便用 16MB 页备份        .bss、.data 和        .text 段。在本例中,就是修改组件的链接步骤。在  所示的示例中,显示了针对 179.art 组件所做的更改,正如在 SPEC.org Web        站点所公布的那样(参见 )。
清单 19. SPECfp2000 组件编译/链接标志的示例
1
2
3
4
5
6
7
8
9
179.art=peak=default=default:
notes179_1       = 179.art
notes179_2       =     +FDO -O5
notes179_3       =     -B/usr/share/libhugetlbfs/ -tl -Wl,--hugetlbfs-link=BDT

PASS1_CFLAGS     = -qpdf1 -O5  -B/usr/share/libhugetlbfs/ -tl -Wl,--hugetlbfs-link=BDT
PASS1_LDCFLAGS   = -qpdf1 -O5  -B/usr/share/libhugetlbfs/ -tl -Wl,--hugetlbfs-link=BDT
PASS2_CFLAGS     = -qpdf2 -O5  -B/usr/share/libhugetlbfs/ -tl -Wl,--hugetlbfs-link=BDT
PASS2_LDCFLAGS   = -qpdf2 -O5  -B/usr/share/libhugetlbfs/ -tl -Wl,--hugetlbfs-link=BDT




然后调用此运行,如下所示:
1
2
# export HUGETLB_MORECORE=yes
# runspec --config LoP_config_file.cfg  fp




用 RHEL 5 发布 SPECompM2001 利用 RHEL 5 发布最新的 SPECompM2001 可以在 IBM System p5 560Q 系统完成。结果可以在 SPEC.org Web 站点找到(参见 )。
通过使用 16MB 大内存页备份的 malloc 命令而展现出性能改进的特定组件可以使用正确设置的环境变量来运行。 展示了其中一个组件的调用是如何被修改的。这看起来很容易,不是么?
清单 20. SPECompM2001 组件在 16MB 页中使用 malloc 的例子
1
2
3
4
316.applu_m: -qpdf1/pdf2
             -O4 -q64
             ENV_HUGETLB_MORECORE=yes
             ENV_LD_PRELOAD=libhugetlbfs.so




应用程序调优的例子利用 libhugetlbfs 调优内存应用程序(流)的另一个练习可以在 IBM Linux on POWER wiki 上找到(参见 )。
wiki 中的例子显示了用户可以采用哪些常见的实际步骤来最大化运行 Linux 的系统的内存密集型工作负载的性能。
结束语本文介绍了一个开源社区项目,称为 libhugetlbfs,它现在受 SLES 10 和 RHEL 5 支持。此库为客户应用程序提供了一种更简单的透明访问系统大内存页的方式。在本文中,您了解了如何结合使用 libhugetlbfs 库与 GCC 或针对 Linux 的 IBM XL C/C++ 编译器。libhugetlbfs 库让您可以将大内存页用在程序中的 malloc 命令、.bss 段或执行体中 .bss 段、.data 段和        .text 段的组合中,在某些情况下,这样做可以改善程序性能。您可以很容易地在系统上配置        libhugetlbfs,而且还可以很容易将访问控件包括进来以限制对内存资源的访问。
返回列表