{"id":8351,"date":"2015-08-14T12:54:45","date_gmt":"2015-08-14T09:54:45","guid":{"rendered":"http:\/\/blog.altoros.com\/?p=8351"},"modified":"2021-03-29T21:42:31","modified_gmt":"2021-03-29T18:42:31","slug":"porting-cloud-foundry-to-ibm-power-processors","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/","title":{"rendered":"Porting Cloud Foundry to IBM POWER Processors"},"content":{"rendered":"<p>IBM POWER microprocessors are extensively used to run mission-critical workloads for the world\u2019s largest financial companies, but they are little known inside the Cloud Foundry community. IBM and Altoros are working to change that by bringing Cloud Foundry to the POWER8 architecture. This post sheds some light on the current progress and describes the issues that we had to overcome. It also features a short demo of a Cloud Foundry app running on ppc64le architecture.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#What_is_Power_Architecture\" >What is Power Architecture?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#What_has_been_done_so_far\" >What has been done so far<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#Issues_and_solutions\" >Issues and solutions<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#Demo_running_and_scaling_CF_apps_on_IBM_Power\" >Demo: running and scaling CF apps on IBM Power<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#Whats_next\" >What\u2019s next?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#Further_reading\" >Further reading<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"What_is_Power_Architecture\"><\/span>What is Power Architecture?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Power Architecture is an RISC (Reduced Instruction Set Computing) microprocessor architecture for a line of high-performance servers by IBM. The Power platform delivers <a href=\"https:\/\/www.hpcwire.com\/2015\/06\/09\/ibm-power8-outperforms-x86-on-stac-benchmarks\/\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">superior<\/a> security, workload density, and sustained utilization compared to commodity x86 systems. According to results <a href=\"https:\/\/stacresearch.com\/spring2015LON\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">shared<\/a> at the STAC Summit on June 4, 2015, an IBM POWER8-based server delivered more than twice the performance of a best-in-class x86 counterpart when running a set of standard financial industry benchmarks.<\/p>\n<p>POWER8 systems can run up to eight threads on a single core. Their memory bandwidth provides almost three times the speed of a typical x86 processor. They also feature a large internal L3 cache. All of these enable POWER8 to deliver dramatically higher performance for data and compute intensive applications. The Power Systems line of servers is also expanding to include smaller scale-out systems, which provide the same performance and security advantages as the large systems, but at a smaller scale.<\/p>\n<p>Despite these strengths, the platform hasn\u2019t received much attention from the Cloud Foundry community. So, at the moment IBM and Altoros are working to enable CF on POWER8, a new server-oriented processor architecture. The work is still in progress, but we have already achieved some tangible results, which are described below.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"What_has_been_done_so_far\"><\/span>What has been done so far<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>At this moment, we have developed an automated way to create stemcells, build BOSH and CF releases, and, finally, install BOSH and CF over OpenStack with Ubuntu VMs on IBM Power Systems. All this work was done inside of Oregon State University\u2019s OpenStack <a href=\"https:\/\/osuosl.org\/services\/powerdev\/request_hosting\/\" target=\"_blank\" rel=\"noopener noreferrer\">environment<\/a> based on POWER.<\/p>\n<p>The project is implemented as a set of Ansible playbooks that can be used to build BOSH releases with binaries and create a BOSH OpenStack Ubuntu 14.04 stemcell that supports the Power architecture. You can <a href=\"https:\/\/github.com\/Altoros\/power-bosh-jumpbox-bootstrap\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">find it<\/a> in our GitHub organization. To help you easily deploy MicroBOSH and CF, we also created a <a href=\"https:\/\/github.com\/Altoros\/ibm-power-bosh-workspace\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">project<\/a> with a BOSH workspace that contains templates for manifests and instructions on how to use it. <\/p>\n<p><center><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/ibm-power-cf1_v2.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/ibm-power-cf1_v2.png\" alt=\"ibm-power-cf1_v2\" width=\"640\" class=\"aligncenter size-full wp-image-24288\" \/><\/a><\/center><\/p>\n<p>These two projects provide proof of concept for running Cloud Foundry on top of IBM Power servers and may be interesting to those who utilize BOSH and CF on a daily basis. They help to quickly install all the software necessary to run a jumpbox. There are some similar projects, such as the <a href=\"https:\/\/github.com\/cloudfoundry-community\/jumpbox-boshrelease\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">BOSH release<\/a> for a jumpbox, but we believe that it is easier to run Ansible playbooks on a clean system. Below, I describe some of the issues that we encountered when porting CF to IBM\u2019s Power architecture, as well as the workarounds that we found for them.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Issues_and_solutions\"><\/span>Issues and solutions<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Changing build configuration<\/strong><\/p>\n<p>A common issue encountered when trying to get BOSH and CF clusters to run under Ubuntu on Power is related building dependent open-source projects. Many OSS packages (e.g., <a href=\"https:\/\/www.sqlite.org\/2015\/sqlite-autoconf-3081101.tar.gz\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">SQLite<\/a>) include a script file called <em>config.guess<\/em>, which is part of the standard <a href=\"http:\/\/www.gnu.org\/savannah-checkouts\/gnu\/autoconf\/manual\/autoconf-2.70\/autoconf.html#Introduction\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">GNU Build System<\/a>. This file is used to determine the platform and architecture type of the build. Since Ubuntu Little Endian (LE) is a new platform on Power, many dated <em>config.guess<\/em> files are unable to correctly determine the platform type. This results in failed builds with the following error:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">configure: error: cannot guess build type; you must specify one.<\/pre>\n<p>One possible workaround is to specify the build platform (ppc64le) in the configure command line with the <em>&#8211;build<\/em> parameter, e.g.:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">.\/configure --build=ppc64le<\/pre>\n<p>Another way is to update the <em>config.guess<\/em> file to the latest version, like this:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">curl &quot;http:\/\/git.savannah.gnu.org\/gitweb\/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD&quot; &gt; config.guess<\/pre>\n<p>You can <a href=\"https:\/\/github.com\/Altoros\/power-bosh-jumpbox-bootstrap\/blob\/master\/roles\/binaries-builder\/files\/scripts\/helpers.sh#L33\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">find<\/a> the updated script that performs these operations in an Ansible playbooks role called binary builder. We are already working to ensure that an updated <em>config.guess<\/em> file is used for as many source code packages utilized by BOSH as possible (see the pull requests <a href=\"https:\/\/github.com\/cloudfoundry\/bosh\/pull\/898\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">here<\/a> and <a href=\"https:\/\/github.com\/cloudfoundry-attic\/cf-release\/pull\/751\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">here<\/a>).<\/p>\n<p>&nbsp;<br \/>\n<strong>Golang support<\/strong><\/p>\n<p>Most Cloud Foundry components use Go as the implementation language. Currently, the native Go compiler from Google doesn\u2019t support the Power architecture. There are <a href=\"https:\/\/groups.google.com\/forum\/#%21msg\/golang-dev\/2ZUi792oztM\/Q0rg_DkF5HMJ\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">plans<\/a> for such support in future releases, but the transition to a new version of Go may take some time, like it <a href=\"https:\/\/github.com\/cloudfoundry\/bosh-agent\/issues\/11\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">was<\/a> with the transition from Go 1.3 to Go 1.4.<\/p>\n<p>We found that the GCC frontend for the Go language <a href=\"https:\/\/gcc.gnu.org\/frontends.html\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">satisfies<\/a> all the requirements and <em>gccgo<\/em> <a href=\"https:\/\/golang.org\/doc\/go1.4#gccgo\" target=\"_blank\" rel=\"noopener noreferrer\">supports<\/a> versions 1.3 and 1.4 of the Go spec. Still, an issue surfaced when <em>gccgo<\/em> was used to run some of the BOSH components, e.g., BOSH Agent and <em>bosh-init<\/em>. <\/p>\n<p>The order in which the parameters of a function return statement are evaluated is not fully defined in the Go specification. This can result in unexpected behavior when a function returns a variable whose value is calculated through a closure in function execution that follows this variable in the return statement. This issue is described in more detail <a href=\"https:\/\/code.google.com\/p\/go\/issues\/detail?id=8698&amp;thanks=8698&amp;ts=1410376474\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">here<\/a>. To solve this, we had to update function calls in the <a href=\"https:\/\/github.com\/cloudfoundry\/bosh-agent\/commit\/26fe4b08f1fb9ac6c5fbee4fcd139c1167c3c39b\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">BOSH Agent<\/a> and <a href=\"https:\/\/github.com\/cloudfoundry-attic\/bosh-init\/pull\/35\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">bosh-init<\/a> components in a few places.<\/p>\n<p>One more feature that we have discovered while using the GCC Go frontend is that it does not compile binaries statically by default. The resulting binary depends on the libgo.so library. This behaviour can be easily changed by <a href=\"https:\/\/github.com\/Altoros\/cf-release\/blob\/power-207\/packages\/dea_logging_agent\/packaging#L6\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">specifying<\/a> a couple of additional build options (<code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">-gccgoflags -static-libgo<\/code>) for the Go compiler.<\/p>\n<p>&nbsp;<br \/>\n<strong>Ruby gems compilation<\/strong><\/p>\n<p>Lots of BOSH and CF components are written in Ruby and take advantage of Ruby gems. These include BOSH Director, CF Cloud Controller, DEAs, Warden, etc. However, Ruby gems with native extensions may not install easily under Ubuntu on Power. Many of the root causes are similar to the issue described in the &#8220;Changing Build Configuration&#8221; section. The latest versions of many Ruby gems have already been fixed and CF BOSH releases have been updated to include the latest gems, but there are still some that may not install smoothly.<\/p>\n<p>A good example is the <em>nokogiri<\/em> gem that uses outdated versions of the <em>libxml<\/em> and <em>libxslt<\/em> libraries. The libraries also have an incorrect build configuration (an outdated <em>config.guess<\/em> file). During <em>nokogiri<\/em> installation, <em>libxml<\/em> and <em>libxslt<\/em> are fetched and built, which causes an error.<\/p>\n<p>There are a couple of solutions for this. It is possible to put correct versions of these libraries inside a gem file. After some experiments, we created a <a href=\"https:\/\/github.com\/Altoros\/power-bosh-jumpbox-bootstrap\/blob\/93cbbac2eab15f83b60aff18bd540d92145602af\/roles\/binaries-builder\/files\/scripts\/cf-release\/dea_next_gems.sh\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">script<\/a> that can build this kind of <em>nokogiri<\/em> .gem file. Another way is to make <em>bundler<\/em> use system libraries when installing Ruby gems. Since the BOSH stemcell already includes <em>libxml<\/em> and <em>libxslt<\/em>, we decided to simply <a href=\"https:\/\/github.com\/Altoros\/bosh\/blob\/power-2915\/release\/packages\/director\/packaging#L26\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">link<\/a> with the system libraries. As a result, we did not have to update any of the Ruby gems.<\/p>\n<p>&nbsp;<br \/>\n<strong>Generating <em>rootfs<\/em><\/strong><\/p>\n<p>All Cloud Foundry apps run within Warden containers inside Droplet Execution Agent (DEA) virtual machines. The root file system employed for Warden containers under Ubuntu on Power needs to be different from the root filesystem for Ubuntu on Intel x86.<\/p>\n<p>The root file system is packaged in a tarball in the Cloud Foundry BOSH release. So, we had to create a container root filesystem for Ubuntu on Power with this <a href=\"https:\/\/github.com\/Altoros\/power-bosh-jumpbox-bootstrap\/blob\/master\/roles\/binaries-builder\/files\/scripts\/cf-release\/rootfs.sh\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">script<\/a>. To run applications under the Ubuntu on Power root file system, we added a new stack (<em>trustyppc64le<\/em>), pointing to this new <em>rootfs<\/em>, to the Cloud Controller and DEA components.<\/p>\n<p>&nbsp;<br \/>\n<strong>The stemcell builder<\/strong><\/p>\n<p>Stemcells are basically images used by BOSH to run jobs. A stemcell contains an operating system with all the necessary software, as well as an embedded BOSH Agent that allows BOSH to control VMs created based on the stemcell image. From the very beginning, we decided to support bosh-init as a MicroBOSH deployment method. This was done not only because <em>bosh-init<\/em> is likely to be the future standard. In fact, it also eases stemcell builder development and increases its speed.<\/p>\n<p>The old way, implemented as a <a href=\"https:\/\/github.com\/cloudfoundry\/bosh\/tree\/master\/bosh_cli_plugin_micro\" target=\"_blank\" rel=\"noopener noreferrer\">BOSH CLI plug-in<\/a>, implied that stemcells have to include a built-in MicroBOSH release. This resulted in an additional special <a href=\"https:\/\/github.com\/cloudfoundry\/bosh\/blob\/master\/stemcell_builder\/stages\/bosh_micro_go\/apply.sh#L19\" target=\"_blank\" rel=\"noopener noreferrer\">stage<\/a> in the process of building a MicroBOSH release by the stemcell generator. So we patched the existing stemcell builder. At the time this was written, the latest version that our stemcell builder <a href=\"https:\/\/github.com\/Altoros\/bosh\/tree\/power-3033-stemcell\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">supported<\/a> was 3033.<\/p>\n<p>&nbsp;<br \/>\n<strong>Buildpacks<\/strong><\/p>\n<p>Cloud Foundry apps require buildpacks to work under different runtimes. At the moment, Cloud Foundry buildpacks (e.g., the Node.js buildpack) only include executables for x86 systems. So, we are in the process of modifying the buildpacks to include executables for Ubuntu LE on Power.<\/p>\n<p>The first buildpack that we have <a href=\"https:\/\/github.com\/Altoros\/ruby-buildpack\/tree\/power\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">updated<\/a> was for Ruby. BOSH buildpacks use the buildpack-packager gem to fetch dependencies. Standard buildpacks\u2014e.g., for Ruby, Node.js, and Go\u2014use scripts from the <em><a href=\"https:\/\/github.com\/cloudfoundry\/compile-extensions\" target=\"_blank\" rel=\"noopener noreferrer\">compile-extensions<\/a><\/em> project to select, fetch, and cache binaries for the required stack.<\/p>\n<p>Our branch of the Ruby buildpack <a href=\"https:\/\/github.com\/Altoros\/ruby-buildpack\/tree\/power\/power\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">contains<\/a> scripts for both building and uploading the required binaries to S3. At the same time, we are going to add Power support to <em><a href=\"https:\/\/github.com\/cloudfoundry\/binary-builder\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">binary-builder<\/a><\/em>, a project that is used by the community to build binaries. At this point, we can demonstrate apps running with custom buildpacks for Ruby, Node.js, or Golang deployment.<\/p>\n<p>&nbsp;<br \/>\n<strong>BOSH Agent<\/strong><\/p>\n<p>Once started, BOSH Agent begins reading settings and handling such resources as disks and networks. You can learn more about this process from this <a href=\"https:\/\/www.altoros.com\/blog\/how-to-add-bosh-support-to-a-custom-cloud-part-2-external-bosh-cpis\/\">blog post<\/a>. On OpenStack, when a VM doesn\u2019t have an ephemeral disk, BOSH Agent makes partitions for a data drive and swap disk on the root device. In its current implementation, BOSH Agent <a href=\"https:\/\/github.com\/cloudfoundry\/bosh-agent\/blob\/585d2cc3a47129aa875738f09a26101ec6e0b1d1\/platform\/linux_platform.go#L839-L841\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">expects<\/a> the root filesystem to be mounted to the first partition (e.g., <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">\/dev\/vda1<\/code>). Power systems <a href=\"https:\/\/github.com\/Altoros\/bosh\/blob\/power-3033-stemcell\/stemcell_builder\/stages\/image_create\/apply.sh#L12-L17\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">need<\/a> to have a PReP boot partition as the first partition and this means that the root file system has to be mounted as the second partition (e.g., <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">\/dev\/vda2<\/code>).<\/p>\n<p>To fix this and enable BOSH Agent to work with OpenStack flavors that only have a root disk, we needed to <a href=\"https:\/\/github.com\/hashmap\/bosh-agent\/tree\/d22a45109f3362fc5ddde7a5cb52dd6727090879\" target=\"\u201d_blank\u201d\" rel=\"noopener noreferrer\">patch<\/a> BOSH Agent. These changes have not been merged to the BOSH repository yet, but we are moving in that direction.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Demo_running_and_scaling_CF_apps_on_IBM_Power\"><\/span>Demo: running and scaling CF apps on IBM Power<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>This video demonstrates a development milestone that has been reached, with a Ruby app pushed and scaled in Cloud Foundry running on IBM&#8217;s POWER architecture.<\/p>\n<p><center><iframe loading=\"lazy\" width=\"480\" height=\"360\" src=\"https:\/\/www.youtube.com\/embed\/OEsEiyRrtvg\" frameborder=\"0\" allowfullscreen><\/iframe><\/center><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Whats_next\"><\/span>What\u2019s next?<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Although Power Systems are only starting to gain popularity, they can be a good choice for running large Cloud Foundry clusters and\/or heavily loaded applications. Our next steps will include merging the necessary changes to the repositories of the Cloud Foundry community and setting up a test environment for the CI process. If you have any questions, you are welcome to leave a comment below.<\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Further_reading\"><\/span>Further reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/tensorflow-and-openpower-driving-faster-cancer-recognition-and-diagnosis\/\">TensorFlow and OpenPOWER Driving Faster Cancer Recognition and Diagnosis<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/prototype-tensorflow-as-a-service-on-openpower-machines\/\">Prototype: TensorFlow-as-a-Service on OpenPOWER Machines<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/creating-a-bosh-release-for-admin-ui-a-monitoring-tool-for-cloud-foundry\/\">Creating a BOSH Release for Admin UI, a Monitoring Tool for Cloud Foundry<\/a><\/li>\n<\/ul>\n<hr\/>\n<p><center><small>Special thanks to <a href=\"https:\/\/www.linkedin.com\/in\/ipoddar\/\" target=\"_blank\" rel=\"noopener noreferrer\">Indrajit Poddar<\/a>, <a href=\"https:\/\/www.linkedin.com\/in\/alisespence\/\" target=\"_blank\" rel=\"noopener noreferrer\">Alise Spence<\/a>, <a href=\"https:\/\/www.linkedin.com\/in\/hashmap\/?ppe=1\" target=\"_blank\" rel=\"noopener noreferrer\">Alexey Miroshkin<\/a>, and <a href=\"https:\/\/www.linkedin.com\/in\/yulia-gaponenko-83a926113\/?ppe=1\" target=\"_blank\" rel=\"noopener noreferrer\">Yulia Gaponenko<\/a> of IBM<br \/>\nfor their assistance in creating this post.<\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>IBM POWER microprocessors are extensively used to run mission-critical workloads for the world\u2019s largest financial companies, but they are little known inside the Cloud Foundry community. IBM and Altoros are working to change that by bringing Cloud Foundry to the POWER8 architecture. This post sheds some light on the current [&#8230;]<\/p>\n","protected":false},"author":35,"featured_media":19010,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[873,206],"class_list":["post-8351","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-cloud-native","tag-oss-cloud-foundry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Porting Cloud Foundry to IBM POWER Processors | Altoros<\/title>\n<meta name=\"description\" content=\"Featuring a demo of a CF app on the ppc64le architecture, this blog post explains how to tweak build configuration, compile Ruby gems, modify buildpacks, etc.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Porting Cloud Foundry to IBM POWER Processors | Altoros\" \/>\n<meta property=\"og:description\" content=\"IBM POWER microprocessors are extensively used to run mission-critical workloads for the world\u2019s largest financial companies, but they are little known inside the Cloud Foundry community. IBM and Altoros are working to change that by bringing Cloud Foundry to the POWER8 architecture. This post sheds some light on the current [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2015-08-14T09:54:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-03-29T18:42:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Porting-Cloud-Foundry-to-IBM-POWER-Processors.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"360\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Alexander Lomov\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Alexander Lomov\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/\",\"name\":\"Porting Cloud Foundry to IBM POWER Processors | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Porting-Cloud-Foundry-to-IBM-POWER-Processors.gif\",\"datePublished\":\"2015-08-14T09:54:45+00:00\",\"dateModified\":\"2021-03-29T18:42:31+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/32bad30d8a66fbba345c09f5ce9503a6\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Porting-Cloud-Foundry-to-IBM-POWER-Processors.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Porting-Cloud-Foundry-to-IBM-POWER-Processors.gif\",\"width\":640,\"height\":360},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Porting Cloud Foundry to IBM POWER Processors\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/32bad30d8a66fbba345c09f5ce9503a6\",\"name\":\"Alexander Lomov\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/Alexander-Lomov-150x150.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/Alexander-Lomov-150x150.jpg\",\"caption\":\"Alexander Lomov\"},\"description\":\"Alexander Lomov is a Cloud Foundry Engineer at Altoros. With extensive experience in Ruby, Go, and Python, he was involved in development of BOSH CPIs and other Cloud Foundry-related projects for Canonical, IBM, and other companies. Alexander is a frequent speaker at various events\/meetups, mostly sharing his experience with Cloud Foundry. You may also know him as the author of several blog posts about Cloud Foundry internals.\",\"sameAs\":[\"http:\/\/altoros.com\"],\"url\":\"https:\/\/www.altoros.com\/blog\/author\/alexander-lomov\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Porting Cloud Foundry to IBM POWER Processors | Altoros","description":"Featuring a demo of a CF app on the ppc64le architecture, this blog post explains how to tweak build configuration, compile Ruby gems, modify buildpacks, etc.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/","og_locale":"en_US","og_type":"article","og_title":"Porting Cloud Foundry to IBM POWER Processors | Altoros","og_description":"IBM POWER microprocessors are extensively used to run mission-critical workloads for the world\u2019s largest financial companies, but they are little known inside the Cloud Foundry community. IBM and Altoros are working to change that by bringing Cloud Foundry to the POWER8 architecture. This post sheds some light on the current [...]","og_url":"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/","og_site_name":"Altoros","article_published_time":"2015-08-14T09:54:45+00:00","article_modified_time":"2021-03-29T18:42:31+00:00","og_image":[{"width":640,"height":360,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Porting-Cloud-Foundry-to-IBM-POWER-Processors.gif","type":"image\/gif"}],"author":"Alexander Lomov","twitter_misc":{"Written by":"Alexander Lomov","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/","url":"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/","name":"Porting Cloud Foundry to IBM POWER Processors | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Porting-Cloud-Foundry-to-IBM-POWER-Processors.gif","datePublished":"2015-08-14T09:54:45+00:00","dateModified":"2021-03-29T18:42:31+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/32bad30d8a66fbba345c09f5ce9503a6"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Porting-Cloud-Foundry-to-IBM-POWER-Processors.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2015\/08\/Porting-Cloud-Foundry-to-IBM-POWER-Processors.gif","width":640,"height":360},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/porting-cloud-foundry-to-ibm-power-processors\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Porting Cloud Foundry to IBM POWER Processors"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/32bad30d8a66fbba345c09f5ce9503a6","name":"Alexander Lomov","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/Alexander-Lomov-150x150.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/12\/Alexander-Lomov-150x150.jpg","caption":"Alexander Lomov"},"description":"Alexander Lomov is a Cloud Foundry Engineer at Altoros. With extensive experience in Ruby, Go, and Python, he was involved in development of BOSH CPIs and other Cloud Foundry-related projects for Canonical, IBM, and other companies. Alexander is a frequent speaker at various events\/meetups, mostly sharing his experience with Cloud Foundry. You may also know him as the author of several blog posts about Cloud Foundry internals.","sameAs":["http:\/\/altoros.com"],"url":"https:\/\/www.altoros.com\/blog\/author\/alexander-lomov\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/8351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/35"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=8351"}],"version-history":[{"count":23,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/8351\/revisions"}],"predecessor-version":[{"id":60836,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/8351\/revisions\/60836"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/19010"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=8351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=8351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=8351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}