New Release: LLVM 9.0.0 with IBM z15 Support

LLVM 9.0.0 has been released on September 19. Support for the new IBM z15, referred to as arch13 for now till the alias z15 gets added in a future release, is detailed among others in the release notes as follows:
  • Support for the arch13 architecture has been added. When using the -march=arch13 option, the compiler will generate code making use of new instructions introduced with the vector enhancement facility 2 and the miscellaneous instruction extension facility 2. The -mtune=arch13 option enables arch13 specific instruction scheduling and tuning without making use of new instructions. 
  • Builtins for the new vector instructions have been added and can be enabled using the -mzvector option. Support for these builtins is indicated by the compiler predefining the __VEC__ macro to the value 10303.
  • The compiler now supports and automatically generates alignment hints on vector load and store instructions. 
  • Various code-gen improvements, in particular related to improved instruction selection and register allocation.

IBM Z at GNU Tools Cauldron 2019

The annual gathering of GCC, Glibc, GDB, and Binutils developers was held in Montreal, September 12-15. Three developers from the Böblingen Linux on Z team joined 3 days packed with discussions and presentations. The full agenda and presentation slides can be found here.
Andreas Krebbel gave a talk about the IBM z15 support in the GNU Toolchain. The new machine was announced just a couple of hours before the conference opening event, so he had the chance to introduce the new mainframe to the toolchain crowd for the first time, receiving a round of spontaneous applause for our new boxes (see here).
Andreas Arnez gave another talk (see here) about challenges we are still facing with debugger support on IBM Z. There was a lively discussion with the top GDB guys resulting in a couple of good ideas about how to proceed.

The remaining videos can be found here.

HOWTO: Using Pauseless Garbage Collection

The question how to verify that the pauseless garbage collection feature as introduced with IBM z14 is in place and being used comes up on a regular basis.
Therefore, here are instructions on how to do just that.
  • Verify that the hardware support is in place:
    Pauseless garbage collection is available with IBM z14 or later. In Linux, run the following command to verify that the hardware support is available:
       $ cat /proc/cpuinfo | grep -e "^features"
       features        : esan3 zarch stfle msa [...] vx vxd vxe gs sie

    Make sure that gs is listed, indicating the hardware support.
    In case gs is not listed:
    1. If Linux runs under a hypervisor (z/VM or KVM), verify that the hypervisor supports pauseless garbage collection.
    2. Verify that the Linux distribution you are running supports pauseless garbage collection, too.
  • Download and install IBM Java 8 SR5 or later. You can get it here. Alternatively, any other Java version will do, too, as long as it is based on OpenJ9.
  • Run the following command:
       $ java -Xgc:concurrentScavenge -verbose:gc -version 2>&1 | \
                 grep -i concurrentScavenger
       <attribute name="concurrentScavenger" value="enabled, with H/W assistance" />

    Note that both, enablement of concurrentScavenger as well as H/W assistance must be listed to take full advantage of the feature. If hardware assistance is not available, you might take a performance hit.
You are all set now! To make use of pauseless garbage collection, simply add the option  -Xgc:concurrentScavenge on the Java command line.

IBM z15 announced

Today, IBM announced the new IBM Z models:
Furthermore, check the updated IBM Z tested platforms matrix here.
We will look at features in support of the new IBM Z model in a separate blog entry soon.

EPEL-8.0 supports IBM Z

The Extra Packages for Enterprise Linux (EPEL) repository now supports Red Hat Enterprise Linux 8 (RHEL 8), including the IBM Z/s390x platform. See the announcement here, and the list of available packages here.
To install, simply run
   $ yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Note: As of this writing, the RHEL 8.1 beta releases do not work with EPEL yet, due to a bug. However, the RHEL 8 release was found to work with EPEL just fine.

Popular Posts