Tag Archives: Desktop Linux

Highly Threaded Linux Software Running Under CFS Quotas See Big Performance Fix


Thanks to a Linux kernel fix that is likely to be back-ported to the various stable series, highly threaded software running under CFS quotas for enforcing CPU limits are about to be much faster. At least in a synthetic test case, the kernel fix yields a 30x improvement in performance.

Spotted by the Kubernetes community but affecting others with highly threaded workloads and making use of a CFS quota to restricted shared CPU resources, it turns out that highly-threaded applications are routinely not getting “their fair share” of the CPU, leading to lower than expected performance and higher latency.

This has been a known bug for more than one year and a kernel bug report on unexpected CFS throttling since late 2017. The issue is believed to be recently fixed up for mainline Linux 5.4 and pending for back-ports after the patch was volleyed around the kernel mailing list for a few months.

There is the fix that is a few dozen lines of code that removes the expiration of CPU-local slices:

It has been observed, that highly-threaded, non-cpu-bound applications running under cpu.cfs_quota_us constraints can hit a high percentage of periods throttled while simultaneously not consuming the allocated amount of quota. This use case is typical of user-interactive non-cpu bound applications, such as those running in kubernetes or mesos when run on multiple cpu cores.

This greatly improves performance of high-thread-count, non-cpu bound applications with low cfs_quota_us allocation on high-core-count machines. In the case of an artificial testcase (10ms/100ms of quota on 80 CPU machine), this commit resulted in almost 30x performance improvement, while still maintaining correct cpu quota restrictions.

Thanks to Phoronix reader Mark for pointing out this recent kernel change.

Python 3.8 Released With Assignment Expressions, Runtime Audit Hooks


Python 3.8.0 is out today as the latest major release for this popular programming language.

Python 3.8 brings support to the Python syntax for assignment expressions, positional-only parameters, a parallel file-system cache for compiled bytecode files, runtime audit hooks, Pickle protocol 5 support and its ability to handle out-of-band buffers, many module improvements like a shared memory multi-processing module, Vectorcall as a fast calling protocol for CPython, and various performance improvements.

More details on Python 3.8 via today’s release announcement. More details on the many changes to Python 3.8 via the what’s new page.

Linux 5.4-rc3 Released Ahead Of Official Kernel Debut In November


Linus Torvalds has just issued the third weekly release candidate of the forthcoming Linux 5.4 kernel that should debut as stable before the end of November.

In his release announcement, Linus Torvalds commented of Linux 5.4-rc3, “Things continue to look fairly normal, with rc3 being larger than rc2, as people are starting to find more regressions, but 5.4 so far remains on the smaller side of recent releases. The diffstat looks fairly flat too, although we had a couple of staging drivers being removed here that show up as spikes. Drivers in general account for about two thirds of the diff, and it’s not just those staging drivers, it’s other small noise all over the place: usb, drm, iio, rdma..

See our Linux 5.4 feature overview if not aware of the wide range of kernel changes that span this cycle from Microsoft exFAT support through a lot of new graphics hardware support to other hardware support additions.

Linux 5.4 is shaping up to be a great kernel to end out 2019 while Linux 5.5 will open following that but not debut as stable until well into Q1’2020.

More Linux 5.4 kernel benchmarks are forthcoming on Phoronix.

OpenSUSE’s OBS Can Now Spin Windows Subsystem for Linux Images


The openSUSE’s Open Build Service (OBS) has been picking up the ability to build Windows Subsystem for Linux (WSL) images for those wishing to craft their own WSL distribution or just rebuild openSUSE from source as a reproducible/verifiable build.

The complexity with spinning openSUSE WSL images in OBS is the appx files that need to be assembled, which they have relied upon using Microsoft Visual Studio from a Windows machine. But now in making use of the MinGW cross-toolchain they are generating the necessary appx files directly on Linux.

SUSE engineers have advanced the state far enough along that openSUSE Leap 15.2 Alpha and openSUSE Tumbleweed can be built on OBS for this Microsoft Linux compatibility layer. However, in building the WSL images yourself, the files are not signed by Microsoft and thus require a few extra steps to run from a Windows 10 PC.

More details on this accomplishment via lizards.opensuse.org.

GNU Binutils 2.33.1 Released With Support For Newer Arm Cortex CPUs, SVE2/TME/MVE

GNU --

GNU Binutils 2.33 was tagged in Git two weeks ago but seemingly without any release announcement while now Binutils 2.33.1 has been released.

The GNU Binutils 2.33(.1) release brings BFloat16 support (BF16), many ARMv8 architecture updates, eBPF support for the GNU toolchain to complement the GCC 10 compiler support for this alternative now to using LLVM, support for the new CTF (Compact Type Format) debug format, and other work accumulated in recent months.

Arm support has been a big update for the 2.33 cycle. In addition to the Arm Transactional Memory (TME) there is also Arm Scalable Vector Extension 2 (SVE2) and M Mainline and M-profile Vector Extension (MVE) handling. Newly supported Arm CPUs include the Cortex-A76AE, Cortex-A77 and Cortex-M35P processors and the AArch64 Cortex-A34, Cortex-A65, Cortex-A65AE, Cortex-A76AE, and Cortex-A77. Arm BF16 support complements the Intel BFloat16 type support.

The Binutils 2.33.1 release announcement can be read on the Binutils list.