Online repair comes to the Linux file-system XFS

Please pull this first batch of new changes for 5.7. There's a lot going on this cycle with cleanups in the log code, the btree code, and the xattr code. We're tightening of metadata validation and online fsck checking, and introducing a common btree rebuilding library so that we can refactor xfs_repair and introduce online repair in a future cycle. We also fixed a few visible bugs -- most notably there's one in getdents that we introduced in 5.6; and a fix for hangs when disabling quotas. This series has been running fstests & other QA in the background for over a week and looks good so far. I just did a test merge and it seems to go in cleanly, so please let me know if you encounter any surprises. I anticipate sending you a second pull request next week. That batch will change how xfs interacts with memory reclaim; how the log batches and throttles log items; how hard writes near ENOSPC will try to squeeze more space out of the filesystem; and hopefully fix the last of the umount hangs after a catastrophic failure. That should ease a lot of problems when running at the limits, but for now I'm leaving that in for-next for another week to make sure we got all the subtleties right.

Over the past few quarters XFS got a lot of polish and keep evolving at a fast pace. I might consider switching from ext4 to XFS once I switch to a new notebook this year. Also ext4 is very mature and performant and I have never lost any data despite several power-offs and hard-resets that happen quite a lot on a Linux desktop.

XFS, Linux, File-system

SEO: nofollow vs ugc vs sponsored

Nearly 15 years ago, the nofollow attribute was introduced as a means to help fight comment spam. It also quickly became one of Google’s recommended methods for flagging advertising-related or sponsored links. The web has evolved since nofollow was introduced in 2005 and it’s time for nofollow to evolve as well. Today, we’re announcing two new link attributes that provide webmasters with additional ways to identify to Google Search the nature of particular links. These, along with nofollow, are summarized below: rel="sponsored": Use the sponsored attribute to identify links on your site that were created as part of advertisements, sponsorships or other compensation agreements. rel="ugc": UGC stands for User Generated Content, and the ugc attribute value is recommended for links within user generated content, such as comments and forum posts. rel="nofollow": Use this attribute for cases where you want to link to a page but don’t want to imply any type of endorsement, including passing along ranking credit to another page.

This is a good approach to enrich the web with semantics even though the ranking implications will keep evolving. One concern is how many sites will actually apply these link relation attribute values when they do not know their implications clearly.

Web, Google, SEO

Shenandoah - a low-pause-time garbage collector proposed for production in Java 15

In JDK 12 and later, Shenandoah is enabled via the -XX:+UnlockExperimentalVMOptions -XX:+UseShenandoahGC options. Making Shenandoah a product feature means that -XX:+UnlockExperimentalVMOptions would no longer be needed. A bunch of related Shenandoah options would turn from "experimental" to "product", subject to review. The default values for the options would not change. It makes this change a rather cosmetic change in flag classes. At the time of its integration into JDK 12, Shenandoah had been already shipping in Red Hat 8u and 11u downstream releases as a supported garbage collector, and used by RHEL and RHEL downstream users. Because of this, Shenandoah 8u and Shenandoah 11u are already non-experimental and thus not affected by this change. Since there are only a few users that run something other than 8u and 11u, we expect the actual impact of this change to be minuscule.

GC1 remains the default general purpose garbage collector in Java 15. However this option is really nice for scenarios where a trade-off between overall throughput and latency needs to be made. Remember engineering is always about making appropriate trade-offs between two desired attributes of which one is more important than the other.

Java, Garbage Collector, Realtime, Java15

After crushing Intel in the server segment, AMD finally crushed Intel in the desktop segment

To put AMD’s Ryzen 4000 in perspective, you have to understand that in AMD’s 50-year history, it has never beaten Intel in laptops. It’s won a few battles in desktop: Athlon, Athlon 64, and the current desktop Ryzen chips. AMD’s fortunes change dramatically with the Ryzen 4000 chips, which are clearly the new leader in performance laptops. Even more astonishing is AMD’s ability to offer so much performance in such tight thermal and power constraints. While a comparably thin Intel-based laptop would have to crank up fans to annoying levels, the Ryzen 9 4900HS can do so with relatively moderate fan noise. Worse news for Intel, AMD’s Ryzen 4000 can spar with laptops that weigh two to even three times as much. This is something we frankly didn’t expect. Ryzen 4000 is without a doubt the most game-changing performance laptop CPU we’ve seen in years.

AMD’s Ryzen 9 4900HS has totally crushed Intel's top line i9 CPUs while having a lower TDP of just 35 watts! However, it might be still too late for AMD as the time of the x64 architecture on the desktop comes to its end and ARM CPUs are pushing the boundaries.

Intel, CPU, AMD

MLIR is probably the most significant addition in LLVM v10

MLIR is intended to be a hybrid IR which can support multiple different requirements in a unified infrastructure. For example, this includes: MLIR is a powerful representation, but it also has non-goals. We do not try to support low level machine code generation algorithms (like register allocation and instruction scheduling). They are a better fit for lower level optimizers (such as LLVM). Also, we do not intend MLIR to be a source language that end-users would themselves write kernels in (analogous to CUDA C++). On the other hand, MLIR provides the backbone for representing any such DSL and integrating it in the ecosystem.

MLIR addresses software fragmentation and serves as a glue between traditional languages that target LLVM - like Kotlin. MLIR opens up the Machine Learning space to languages beyond Python. MLIR is a kind of WASM that opens up the browser runtime to languages beyond JavaScript.

TensorFlow, LLVM, MLIR

Benchmark: GraalVM vs OpenJDK vs Amazon Corretto JVM, featuring Java 8, 11, and 14

When taking the geometric mean of the 32 tests that were carried out, OpenJDK 8 upstream actually came out the best overall followed quite closely by GraalVM 20.0 Java 8. Meanwhile the Java 11 version of GraalVM 20.0 was by far the slowest. On the Amazon Corretto front, version 11 was quite similar to OpenJDK 11 upstream but its Java 8 implementation was coming out similar to that slower Java 11 milestone.

There is little surprise that GraalVM 20.0 Java 8 performed best as Java 8 had a long time to mature, also even further within GraalVM. Still among the newer JVM implementations the reference OpenJDK 14 Java VM performed quite decent.

Java, GraalVM, Benchmark

Nashorn JavaScript engine is being removed in Java 15

Remove the Nashorn JavaScript script engine and APIs, and the jjs tool. The engine, the APIs, and the tool were deprecated for removal in Java 11 with the express intent to remove them in a future release. The Nashorn JavaScript engine was first incorporated into JDK 8 via JEP 174 as a replacement for the Rhino scripting engine. When it was released, it was a complete implementation of the ECMAScript-262 5.1 standard. With the rapid pace at which ECMAScript language constructs, along with APIs, are adapted and modified, we have found Nashorn challenging to maintain.

This does not mean that you will not be able to run JavaScript using Nashorn with Java 15. However it does mean that you will need an extra dependency to do this which is going to be Nashorn itself. Nashorn will be simply removed from the standard Java runtime.

Java, JavaScript

YouTrack vs Jira and why Jira is the Microsoft Teams among issue trackers

Reports generated by YouTrack are more flexible too. For example, you can create a matrix report for multiple projects using any of their issues’ fields for X and Y axes. In Jira you can do it too — if you buy an appropriate plugin. However, sometimes they lack basic information about time tracking and time management. In Jira we have used a plugin called “Tempo” which has given us — both developers and managers — a nice view of time spent on work. Unfortunately, YouTrack’s reports for that are less clear. But there is an issue for that awaited by more people, so hopefully JetBrains will upgrade this part of reports-making in the future.

Just because so many people are using Jira, it tried to satisfy far too many needs over time and ended up not satisfying any particular use case. Whereas YouTrack is sharp, precise and brings pleasure & joy to project and software management.

Issue Tracker, Comparison

Rust-based Redox OS is getting yet another package manger that is capable of atomic updates

It has been a while since the last Redox OS news, and I think it is good to provide an update on how things are progressing. The dynamic linking support in relibc got to the point where rustc could be loaded, but hangs occur after loading the LLVM codegen library. Debugging this issue has been difficult, so I am taking some time to consider other aspects of Redox OS. Recently, I have been working on a new package format, called pkgar.

The only things that make Redox OS special and gives it a chance to compete long-term with Linux is Redox' syscall API & ABI compatibility with Linux.

Linux, Rust, OS

Clear Linux is probably still just Intel's toy Linux

We, Intel, work with many Linux distros pretty intensely on hardware support and performance and many other things. Many of our customers nowadays have Linux distros of their own rather than using a "standard" distro as is. For many reasons, we also build Clear Linux. By knowing what it takes to get features into a Linux distro (our own) it's easier for us to work with others who are/have a distro. We also want to make sure we can do the best performance etc etc... and sometimes that means doing experiments that are only possible if you have your own distro in house. Now on Desktop... based on a lot of history (Moblin/Meego/...) we know that it is very hard to do a "general consumer desktop", and we tried something different, aim JUST at software developers (e.g. advanced technical users not afraid of a command line who write code but also generally have more modern, higher quality hardware) and do a very narrow thing that was hopefully more tractable. Turns out that there is no such thing really, people expect, almost demand, that any obscure piece of hardware "just works" (often stuff we can't even buy anymore to test it etc) and... well we got asked for 15+ different desktop environments etc etc... an infinity of "weird stuff" that has nothing to do with "developer". We have been trying to accommodate those as much as we can, but there are clear limits because we also do not want to just throw junk over the wall. It also means we are likely going to change a bit how we work, rather than "everything" we need to make sure that what we do ship is usable, with a bias to servers and what developers use rather than "random stuff". With the 3rd party repo stuff getting more ready, there's ways where others can provide their own repositories for "weird stuff" without us being a bottleneck.

I do not even question whether it is a good idea to depend on a Linux distribution of a vendor that has absolutely not interest on supporting its competitor's hardware as good as its own... What I question is why should I depend on a Linux distribution that also does not belong to the RPM nor the DEB package manager camp? Clear Linux' package manager might be nice and fast and have many whistles and bells but it will make you invest quite some time as soon as you find something you want to install and that is not provided for their package manager.

Linux, Software Development