Introduction
IBM® z/OS® Container Extensions (IBM zCX) makes it possible to integrate Linux on IBM Z applications with z/OS. Application developers can develop and data centers can operate popular open source packages, Linux applications, IBM software, and third-party software together with z/OS applications and data. Since the general availability of zCX in the fall of 2019, zCX has received significant extensions and enhancements. This article covers the various scalability, performance, and usability improvements that are available.
Licensing
zCX Trial
You can try zCX using the 90-day trial before deciding whether to purchase a license. The trial provides 90 days of free usage to evaluate zCX from the day the trial begins. The trial extends to all zCX instances running on a sysplex. After 90 elapsed days, you can purchase a license to continue using zCX.
ILMT Support
The IBM License Metric Tool (ILMT) has been enhanced to support the zCX environment. Licensing for IBM Linux on Z software, running in zCX, is the same as Linux on Z software running in traditional IBM Z environments. This is used to validate capacity for licensing of IBM Linux on Z Software procured through IBM Passport Advantage. This enables Passport Advantage customers to determine their full and sub-capacity processor value units (PVU) licensing requirements. zCX will report standard and zIIP capacity and usage metrics to ILMT. This is an optional feature that can be enabled for each individual zCX instance as desired.
Scalability Enhancements
More Containers Per Instance
The maximum number of concurrent containers that can be run in a single zCX instance has been raised to 1000. Running a large number of concurrent containers in a single zCX instance will depend on the workload's resource requirements and how much CPU, memory, and disk space is available. In general, a large number of containers will require a commensurate increase in the resources assigned to the instance.
Raising the Memory Limit
The memory limit for a zCX instance has been raised to 1TB. This means that a single instance can assign up to 1TB of memory to the Linux guest. Note that this memory is independent of memory used for other z/OS purposes. You must make sure that z/OS has enough memory available for normal operations in addition to the memory allocated to zCX. Utilizing large amounts of memory is best combined with the Large Memory Page Support APAR.
Increasing the Maximum Disk Size
Disks assigned to a zCX instance are backed by z/OS VSAM linear datasets (LDS). The VSAM LDS maximum allocation size for zCX instance has been increased to 1TB. This provides the capability to run large data intensive workloads in zCX.
Increasing the Number of Disks Per Instance
In a zCX instance, user data disks are used to store data such as home directory contents and Docker containers. The number of user data disks that you can allocate and associate with a zCX instance has been increased to 245. This means that you can leverage both the large disk size capability and the increased number of disks to run very large workloads in zCX..
Performance Enhancements
Reducing zCX Processing Contention
By reducing the switching between zIIPs and standard processors, this APAR provides significant scaling and zIIP eligibility improvements. Reducing the time spent on standard processors reduces the total cost of ownership. It also reduces contention during virtual CPU and I/O processing. All of these improvements result in much smoother scaling and the ability to reach higher transaction rates.
Using Vector Instructions in Linux
The IBM Z processors support Single Instruction Multiple Data (SIMD) instructions, also known as vector instructions. Vector instructions can dramatically improve the performance of applications that take advantage of them. This APAR allows Linux applications that utilize these instructions to run in the zCX guest.
Speeding Up zCX Network Communications
The ability to move data in and out of a server is a key performance metric. z/OS Communications Server APARs PH16581 and OA58300 make significant improvements in that area. Their support allows inbound traffic via Workload Queueing (IWQ) when using OSA-Express 6S or 7S in QDIO mode. This improves performance and ensures that processing used to route zCX network traffic will run on zIIP processors. These APARs also enhance the blocking and batching of work elements which improves zCX traffic processing.
Large Memory Page Support
This APAR increases the hardware page frame size that can be selected to back the Linux guest storage from 4K to either 2G or 1M. Using a larger frame size significantly reduces both zIIP and GCP utilization. It also reduces the number of required hardware pages, which improves zCX startup and container run-time performance. 2G pages provide the best performance and are recommended for all production environments. However, there are cases where 1M pages are a good choice as well.
Networking Enhancements
zCX IPv6 Support
Support has been added for zCX to use IPv6 networks. Each instance can now have a single IPv6 address in addition to the required IPv4 address. This also allows zCX to send and receive traffic over an IPv6 network in addition to an IPv4 one. These help zCX meet corporate IT policy and IPv6 enablement network requirements.
Usability Enhancements
Consolidated Version Message for zCX Components
zCX consists of three separate components:
- The virtualization layer that hosts the embedded Linux operating system
- The zCX appliance instance which hosts the Linux kernel and Docker engine
- The z/OSMF workflows that perform lifecycle operations on a zCX instance
This APAR adds a new consolidated version message that is displayed during startup of a zCX instance. This message shows the version information for each of the above components. It also displays the version number of the available appliance, which is helpful to identify if an appliance is backlevel. A new console command has been added to display this information from a running zCX instance.
Docker Proxy Server Support
Docker Registries are a common way to store and distribute Docker binary images. A registry is a scalable server-side application that stores and distributes Docker images, while Docker Hub is a public Docker registry that is hosted in the cloud. All Docker engines (including zCX) are configured to pull Docker images from it by default. Many enterprise docker installations may not have direct access to external public Docker registries. With the Docker proxy support, you can now configure the zCX Docker engine to leverage the proxy information to access external public or private docker registries. The support allows you to configure HTTP and HTTPS proxy endpoints with the ability to exclude certain domain names and IP addresses from routing via the proxy server. You also have the ability to optionally provide the private CA certificate for the proxy server to enable TLS authenticated communications.
Resource Shortage z/OS Alerts
A resource monitor has been added to the zCX guest so that console messages are produced when guest resources are constrained. These messages are generated when the Linux guest is constrained on memory or disk space. Depending on the resource consumption level, different messages are generated. By watching for these notifications, the system programmer can know when to add more resources to the zCX instance in order to assure continued availability.
APARs and PTFs
Enhancements |
APARs |
PTFs |
Performance Improvements (zCX and z/OS Communications Server) |
OA58296, OA58300, PH16581 |
UJ02045, UJ01511, UI66733 |
IBM License Metric Tool (ILMT) Support |
OA58598, OA58599, OA58600, OA58621, OA58587, OA58601 |
UJ01574, UJ01575, UJ01577, UJ01576, UJ01572, UJ01571 |
Docker Proxy Support |
OA58236, OA58237, OA58238, OA58267, OA58131 |
UJ01141, UJ01142, UJ01143, UJ01146, UJ01108 |
Private CA certificate support for Docker Proxy |
OA58698, OA58936, OA58949, OA58950 |
UJ02348, UJ02326, UJ02327, UJ02328 |
zCX Trial (90 days) |
OA58969 |
UJ02411 |
IPv6 Support |
OA59508, OA59509, OA59515, OA59516, OA59873 |
UJ04323, UJ04319, UJ04320, UJ04321, UJ90005 |
Vector / SIMD Support |
OA59111 |
UJ03302 |
Performance Improvements - Phase II (Large page frames support to back zCX guest memory) |
OA59865, OA59573 |
UJ03983, UJ03948 |
Consolidated Version Command Support |
OA59835, OA59836, OA59837, OA59838, OA58996 |
UJ03743, UJ03733, UJ03734, UJ03735, UJ03620 |
zCX Resource Shortage z/OS Alerts |
OA60452, OA60513, OA60529, OA60530, OA60303 |
UJ04666, UJ04652, UJ04653, UJ04654, UJ90006 |
zCX Constraints Relief – Guest Memory and Disk Storage |
OA59865, OA59934, OA59943, OA59944, OA59945, OA59864 |
UJ03983, UJ03973, UJ03974, UJ03975, UJ03976, UJ03961 |