Tag Archives: Phoronix

Clang “Interface Stubs” Merged For Offering Interface Libraries To ELF Shared Objects


In addition to Clang-Scan-Deps being merged a few days ago, another new feature for LLVM’s Clang is called the Clang Interface Stubs and brings a concept from Windows/macOS over to Linux/ELF systems.

Clang Interface Stubs allows generating stub files/libraries containing the mininal information needed to build against that library. The Clang Interface Stubs can be used for limiting access to a library’s internal systems or breaking up build dependencies thanks to the minimal approach.

Back from the RFC mailing a few months ago, the “clang-ifso” tool as it was called at the time explains, “On platforms such as Darwin and Windows, there exist library interface files that appear to the compile-time linker as just another library file but are in-fact only empty listings of symbols to interface functions that were intended for exposure by the library writer. These library interfaces can be used to both limit access to internals of a library at static compile time, and can be used to speedup link time in the case of linking with extremely large dynamic libraries. Aside from providing more controlled API exposure and reduced memory usage in linking, there is also the benefit of having a much smaller distribution size for development SDKs (in the case where you’ve got an SDK with applications that are built and linked on a PC but then deployed to run on a totally different device). Finally, these interface libraries can in many cases be used to break up build dependencies as well if they can be cached or generated quickly in some way prior to building all the different libraries in a build. clang-ifso is a tool that intends to bring the concept of interface libraries to ELF shared objects. We call it ifso as a shorthand for InterFace-Shared-Object: as in, we intend to support ELF by producing a .so that looks just like a regular .so file to the linker but has most of the .text and other contents dropped and has only the intended API interface symbols populated.

Now for the LLVM/Clang 9.0 release due out around September, this initial IFSO / Interface Stubs support is available. It will be interesting to see where this support leads.

Linux 5.3 Could Finally See FSGSBASE – Performance Improvements Back To Ivybridge


The FSGSBASE instruction set has been present on Intel processors going back to Ivy Bridge processors and while there have been Linux kernel patches for this feature going on for years, it looks like with the Linux 5.3 kernel cycle is this support for merging. Making us eager for this support is the prospect of better performance, especially for context switching workloads that already have been suffering as a result of recent CPU mitigations.

The FSGSBASE instructions allow for reading/writing FS/GS BASE from any privilege. But the short story is there should be performance benefits from FSGSBASE in context switching thanks to skipping an MSR write for GSBASE. User-space programs like Java are also expected to benefit in being able to avoid system calls for editing the FS/GS BASE.

Among the reasons the code has been delayed in previous years is that user-space can do stupid stuff, “The major disadvantage is that user code can use the new instructions. Now userspace is going to do totally stupid shite like writing some nonzero value to GS and then doing WRGSBASE or like linking some idiotic library that uses WRGSBASE into a perfectly innocent program like dosemu2 and resulting in utterly nonsensical descriptor state.

Considering all the performance hits we’ve seen the past year and a half from the likes of Meltdown and Zombieload, hearing of better context switching performance on an instruction set present since Ivybridge is certainly promising.

The FSGSBASE patches have been revised over the years on the mailing list while now the patches landed in WIP.x86/cpu maintained by Thomas Gleixner. Given this milestone, it’s looking quite likely we’ll see this x86 CPU improvement land with the upcoming Linux 5.3 merge window — barring any last minute objections. That next cycle is kicking off in early July.

Those wishing to learn more about the technical details can see the new documentation.

Linux 5.2-rc5 Released As The End Of The Cycle Is A Few Weeks Away


With Linux 5.2-rc5 providing no upsets and the release candidate smaller than the one last week, things are looking good for seeing the stable Linux 5.2 kernel release happen in early July.

Linus Torvalds noted that with Linux 5.2-rc5, the kernel changes are indeed calming down and was smaller than RC4. While additional changes are pending, he noted “it all looks quite small and nothing seems to be particularly scary-looking.”

So overall, Linux 5.2-rc5 should be a normal release for this stage. More commentary in the release announcement.

If not already familiar with the changes coming in this next stable kernel update, see our Linux 5.2 feature overview.

100+ Benchmarks Between Clear Linux vs. Arch-Based Manjaro Linux – Summer 2019 Tests


For those wondering how Intel’s performance-optimized Clear Linux is comparing to the Arch-based Manjaro Linux distribution, here are a number of benchmarks on the same Intel Core i7 8700K in seeing how these rolling-release distros are competing for summer 2019.

More than 100 benchmarks were run on Clear Linux and Manjaro Linux using their latest releases for providing the very latest packages.

The same Intel Core i7 8700K system with 16GB of RAM and NVMe solid-state storage was used as a good example distribution for comparing these distros. Some Debian Buster tests on the i7-8700K are also coming in shortly for adding to the comparison.

Of 119 tests carried out on both Clear Linux and Manjaro, Clear Linux won 90 of them or 75.6%. If taking the geometric mean of those 100+ tests, Clear Linux came out to an average of being 7% faster than this easy-to-use Arch Linux platform.

The other motivation for doing a quick two-way comparison was for working on some new pts_Graph improvements for the Phoronix Test Suite… Such as this new display:

(This display is obviously only showing the test results with a measurable difference between these two Linux operating systems. Feedback on this new two-way graphic display is certainly welcome by commenting on this article in the forums… More graphing work underway for Phoronix Test Suite 9.0.)

Those wanting to dig through all these data points in full between Clear Linux and Manjaro can find them via the OpenBenchmarking.org result file.

FreeBSD 11.3 Release Candidate Brings Different Fixes

BSD --

FreeBSD 11.3 is lining up for release in July while this weekend the first release candidate is available for testing.

Following the weekly betas the past few weeks, the first RC is out. FreeBSD 11.3 has brought Bhyve updates, the latest CPU vulnerability mitigations like Zombieload/MDS, driver updates, hardware support improvements, and a random collection of other fixes/enhancements for those still on the FreeBSD 11 series.

With Friday’s FreeBSD 11.3-RC1 release there is a fix to the Mellanox driver, an ipfilter fix, miscellaneous USB fixes, ZFSboot fixes, a system panic has been resolved, and other fixes.

If all goes well FreeBSD 11.3 will be out by mid-July (9 July is their current target) while this weekend you can help ensure it’s a successful milestone by testing RC1.