PowerPC ppc64p7 subarch support in rpm and yum and in packages
We'd like to officially support the new Power7 optimized ppc64p7 subarch in Fedora.
- Name: Phil Knirsch
- Email: email@example.com
- Targeted release: Fedora 18
- Last updated: (06/27/2012)
- Percentage of completion: 80%
The PowerPC CPU architecture has improved quite drastically over the past several years. As a lot of the hardware out there still use Power4 or Power5 CPUs though we currently don't want to change the minimum architecture for Fedora on PowerPC to Power7 or higher as that would effectively shut out any older Apple hardware or older IBM machines.
So similar to i586, i686 and athlon we want to be introduce a new subarch called ppc64p7 that optimizes code for Power7 or newer PowerPC cpus and offer a 64bit macro called power64 in rpm that can be used to check for all 64bit PowerPC architecures, just like ix86 for Intel.
The performance improvement between Power5 and Power7 can be quite substantial, especially for e.g. C++ code. Overall, a rough 20% improvement can be seen with up to 100% for special cases/projects.
Benefit to Fedora
The benefits are pretty clear: Faster applications for the newers PowerPC architecture while having no downside for any of the existing PowerPC systems and no impact to any other architecture.
All of the work necessary to support ppc64p7 in rpm and yum have already been done upstream and are included in the latest versions released for Fedora 17 and Rawhide.
Package wise we've already identified around 30 packages where we'd want to have ppc64p7 support working properly. Most of them build without any changes and simply need a rebuild for --target ppc64p7. About a dozen packages that are releveant need some minor modifications as they handle CFLAGS on their own and don't use RPM_OPT_FLAGS, so ppc64p7 support needs to be added there. We've already created patches for those and opened bugzillas for each component with those patches attached.
Overall this feature is really only affecting PowerPC, so this change is very isolated and no impact on any other arch is expected.
There are a few tasks that still need to be completed for a full support though:
* koji-shadow should handle extra_arches correctly * pungi & mash should handle ppc64p7 packages correctly * Make sure runtime images for installation don't contain ppc64p7 packages
We're working closely with Dennis Gilmore and David Aquilina from the rel-eng side on those and with Will Woods on the anaconda side to ensure everything is working as expected.
How to test
For any other architecure things should stay exactly as they were, so testing there would involve basically a standard regression test.
For PowerPC cpus there would be 2 separate tests:
* Install on a Power6 or lower machine * Verify installation completed without any problems * After reboot verify with rpm -qa | grep ppc64p7 that no ppc64p7 packages are installed
* Install on a Power 7 or higher machine * Verify installation completed without any problems * After reboot verify with rpm -qa | grep ppc64p7 that ppc64p7 packages are installed where available * Run package specific test suits for each of the optimized packages to ensure no toolchain/optimization errors render the package non functional
* Support for ppc64p7 subarch in rpm & yum (DONE) * Rel-eng tooling can handle ppc64p7 properly (In progress) * Packages that don't use RPM_OPT_FLAGS need modifications (In progress) * Make sure anaconda runtime images for installation don't contain ppc64p7 packages (In progress)
No other external dependencies are known
If anything should go horribly wrong the only thing we need to do is to disable the ppc64p7 building in koji and rebuild all packages that we had as ppc64p7 packages. Any composes after that point will consist of only ppc64 packages thereafter.
No specific documentation for the ppc64p7 subarch is available.