Features/Power7Subarch

From FedoraProject

< Features(Difference between revisions)
Jump to: navigation, search
(Current status)
 
(14 intermediate revisions by 4 users not shown)
Line 11: Line 11:
  
 
== Owner ==
 
== Owner ==
* Name: [[pknirsch| Phil Knirsch]]
+
* Name: [[User:pknirsch| Phil Knirsch]], [[User:dwa| David Aquilina]]
* Email: pknirsch@redhat.com
+
* Email: pknirsch@redhat.com, dwa@redhat.com
  
 
== Current status ==
 
== Current status ==
 
* Targeted release: [[Releases/18 | Fedora 18 ]]  
 
* Targeted release: [[Releases/18 | Fedora 18 ]]  
* Last updated: (06/27/2012)
+
* Last updated: (Oct-24-2012)
* Percentage of completion: 80%
+
* Percentage of completion: 100%
 +
** There are a couple bugs with p7 optimizations in individual packages, but they don't prevent implementing the feature. rpm & yum implement handle it correctly, p7 packages are being built, and p7 packages are being included appropriately in the compose.
  
 
== Detailed Description ==
 
== Detailed Description ==
 
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.
 
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.
+
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 (additional ppc64-based subarchitectures are likely in the future) and utilize the %{power64} architecture macro provided in rpm 4.10 that can be used to check for all 64bit PowerPC architectures, 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.
 
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.
Line 28: Line 29:
 
== Benefit to Fedora ==
 
== Benefit to Fedora ==
 
<!-- What is the benefit to the platform?  If this is a major capability update, what has changed?  If this is a new feature, what capabilities does it bring? Why will Fedora become a better distribution or project because of this feature?-->
 
<!-- What is the benefit to the platform?  If this is a major capability update, what has changed?  If this is a new feature, what capabilities does it bring? Why will Fedora become a better distribution or project because of this feature?-->
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.
+
The benefits are pretty clear: Faster applications for the newer PowerPC architecture while having no downside for any of the existing PowerPC systems and no impact to any other architecture.
  
 
== Scope ==
 
== Scope ==
Line 34: Line 35:
 
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.
 
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.
+
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 relevant 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.
 
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:
 
There are a few tasks that still need to be completed for a full support though:
  * Need to make sure koji can handle and build both ppc64 and ppc64p7 packages
+
  * koji-shadow should handle extra_arches correctly
  * Ensure rel-eng tooling works correctly
+
  * mash should handle ppc64p7 packages correctly
  * Make sure images for installation don't contain ppc64p7 packages
+
  * Make sure runtime images for installation don't contain ppc64p7 packages
 +
** Initial test indicates pungi already works as hoped for and only uses ppc64 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.
 
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 ==
 
== 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 any other architecture 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:
 
For PowerPC cpus there would be 2 separate tests:
Line 63: Line 65:
 
  * Rel-eng tooling can handle ppc64p7 properly (In progress)
 
  * Rel-eng tooling can handle ppc64p7 properly (In progress)
 
  * Packages that don't use RPM_OPT_FLAGS need modifications (In progress)
 
  * Packages that don't use RPM_OPT_FLAGS need modifications (In progress)
  * Make sure images for installation don't contain ppc64p7 packages (In progress)
+
  * Make sure anaconda runtime images for installation don't contain ppc64p7 packages (In progress)
  
 
No other external dependencies are known
 
No other external dependencies are known
  
 
== Contingency Plan ==
 
== Contingency Plan ==
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.
+
Disable building of further ppc64p7 packages and exclude any already-built ones from composes & mashes.
  
 
== Documentation ==
 
== Documentation ==
Line 74: Line 76:
  
 
== Release notes ==
 
== Release notes ==
<!-- Those are probably PowerPC arch specific only, which we'll include in the separate release notes and wiki for the PowerPC release --!>
+
<!-- Those are probably PowerPC arch specific only, which we'll include in the separate release notes and wiki for the PowerPC release ?-->
Fedora 18 now contains full support for the new ppc64p7 subarch for PowerPC. A selected number of packages that showed a large benefit for optimization on Power7 or newer cpus have been included in the release and will be installed and updated automatically in case your hardware supports it as ppc64p7 packages.
+
Fedora 18 for Power now contains full support for the new ppc64p7 subarchitecture for PowerPC. A selected number of packages that showed a large benefit for optimization on Power7 CPUs have been included in the release and will be installed automatically on Power7 (or later) hardware.
 +
 
 +
[[Category:FeatureAcceptedF18]]

Latest revision as of 18:45, 24 October 2012


Contents

[edit] PowerPC ppc64p7 subarch support in rpm and yum and in packages

[edit] Summary

We'd like to officially support the new Power7 optimized ppc64p7 subarch in Fedora.

[edit] Owner

[edit] Current status

  • Targeted release: Fedora 18
  • Last updated: (Oct-24-2012)
  • Percentage of completion: 100%
    • There are a couple bugs with p7 optimizations in individual packages, but they don't prevent implementing the feature. rpm & yum implement handle it correctly, p7 packages are being built, and p7 packages are being included appropriately in the compose.

[edit] Detailed Description

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 (additional ppc64-based subarchitectures are likely in the future) and utilize the %{power64} architecture macro provided in rpm 4.10 that can be used to check for all 64bit PowerPC architectures, 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.

[edit] Benefit to Fedora

The benefits are pretty clear: Faster applications for the newer PowerPC architecture while having no downside for any of the existing PowerPC systems and no impact to any other architecture.

[edit] Scope

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 relevant 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
* mash should handle ppc64p7 packages correctly
* Make sure runtime images for installation don't contain ppc64p7 packages
** Initial test indicates pungi already works as hoped for and only uses ppc64 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.

[edit] How to test

For any other architecture 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

[edit] Dependencies

* 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

[edit] Contingency Plan

Disable building of further ppc64p7 packages and exclude any already-built ones from composes & mashes.

[edit] Documentation

No specific documentation for the ppc64p7 subarch is available.

[edit] Release notes

Fedora 18 for Power now contains full support for the new ppc64p7 subarchitecture for PowerPC. A selected number of packages that showed a large benefit for optimization on Power7 CPUs have been included in the release and will be installed automatically on Power7 (or later) hardware.