Linux on Power is a fully tested and supported platform for Streams. However, there are considerations for applications that port from x86 to Linux on Power.
This is true for Streams and for any other Linux application. The key considerations are listed below:
- RHEL 6 Big Endian (Streams Version 3 or Version 4)
- RHEL 7 Little Endian or Big Endian (Streams Version 4) Support for Linux on Power Little Endian is added for Streams version 4.1
Note: SLES is not supported.
Power8 is supported beginning in Streams 3.2.1. To use Power8 8-way Hardware Multithreading, RHEL 7 and Streams Version 4 or later is required. When running on Power8 with Streams 3.2.1, RHEL 6 is required and only 4-way Hardware Multithreading is supported.
Linux on Power Advanced Toolchain
Streams for Linux on Power has some unique compiler considerations driven by the use of the “Advance Toolchain” (aka “AT”) used to leverage Linux on Power-unique performance optimizations above what is included in the default Linux distro gcc compiler and libraries.
- For Streams 4.1.0 on RHEL 7 Little Endian, AT version 8 RPMs are required for IBM Streams on Power Systems installations:
- For Streams 4.0.0 or 4.1.0 on RHEL 6 or RHEL 7 Big Endian, AT version 7 RPMs are required for Streams on Power Systems installations:
- For Streams 3.2.1 on RHEL 6 Big Endian, AT version 5 RPMs are required for Streams on Power Systems installations:
- The AT RPMs are not included with the product and must be downloaded from an external non-IBM site. For RHEL 6: ftp://ftp.unicamp.br/pub/linuxpatch/toolchain/at/redhat/RHEL6/and for RHEL 7 ftp://ftp.unicamp.br/pub/linuxpatch/toolchain/at/redhat/RHEL7/
- The Streams product installation package includes RPM “ibm-power-at-repo”. Installing this RPM sets up a Yum repository for the unicamp.br site
- AT includes built-in Decimal Floating Point. The libdecNumber package is not used for Linux on Power.
- The AT gcc version is newer than the gcc version in the RHEL distros. Stricter syntax checking in the new version may flag additional “fpermissive” errors when recompiling operators written in C++
- Streams SPL compiler automatically uses the AT gcc compiler. You should build any toolkits or operators using the AT compiler too
- Streams on Power Systems derives the SPL::rstring type from type __gnu_cxx::__versa_string versus x86 where SPL::rstring is derived from std::string
- See this technote
Streams Best Practices for Performance
There is also a technote for Streams Best Practices for Performance (applies to any platform, not just Streams on Power Systems).
Linux on Power support by dependent software packages
There are Streams applications that leverage additional software packages that have not ported to Linux on Power. These use-cases typically involve specific Streams toolkits and adapters.
Some Streams toolkits and adapters are not supported for Linux on Power due to missing requisite supporting software:
- Database toolkit:
The vendors that provide these Databases have not provided native client versions for Linux on Power: Aster, HP Vertica, solidDB and Teradata.
- Messaging Toolkit:
The XMSSource and XMSSink operators are not supported for Linux on Power.
- Text Toolkit:
The sentiment extractors in the Text Toolkit are not supported for Linux on Power Little Endian
- LLM transport
The LLM transport mechanism is not supported on Linus for Power Little Endian
We have also seen examples where complex Streams applications embed 3rd party software. When those applications were ported, the client discovered that the vendor supplying that 3rd party software did not have a Linux on Power version.
Note: check any client pre-requisites to ensure Linux on Power is supported
“Big Endian” and “Little Endian” refer to the byte order used to store numerical values in computer memory. Starting with Version 4.1 Streams has versions that support either Little or Big Endian for Linux on Power. Little Endian is the strategic direction for Linux on Power, therefore new deployments of Streams for Linux on Power should use the Little Endian version. However, if the Big Endian version of Streams on Power will be used, consideration should be given if a Streams application includes custom operators that work with integer values placed into memory structures exchanged between BE and LE hosts. For more information see this Linux on Power Community blog post.