Apple, ARM and open platforms

New Apple M1 based computers are getting reviewed by hardware websites. There is no doubt: it is a big slap in the face of their venerable x86 competitors in terms of performance and efficiency.

A revolution

Is it the beginning of a new era in which our smartphones and personal computers would use the same ARM technology, which has powered smartphones since their beginnings?

Smartphones have taken over our world. They are everywhere, and required by more and more operations : validating banking transactions, payments, private and public transportation, etc.

It is a bigger revolution than the personal computer, which brought Internet and computing to mostly everybody.

History repeats

However there is a major difference in how they get there to what happened with personal computers.

At their beginnings many companies, such as Amiga, Apple or Atari, were competing with different operating systems and processor architectures. Platforms were not compatible with each other, you couldn't run an Amstrad program on an Apple computer. Then the PC platform started to take off.

PC strength was that it is an open platform. An operating system and its software, running on a given PC compatible computer, would run on any other PC computer. Today …

more ...

ARM is the future

ARM processors are everywhere! There are the heart of the smartphones, TVs, Wifi routers, 5G networks, etc.

However in our personal computers, x86 based processor still largely prevail, even if x86 was invented more than fifty years ago. It is also the case in the datacenter world, nicely called cloud nowadays.

Times are changing. Major actors such as Amazon and Apple are embracing ARM to put their dependency on Intel to an end. As ARM only defines the architecture of the CPU, many companies are competing in building ARM powered chips. That allows breaking Intel's near monopoly on personal and datacenter computers.

Are we at the dawn of a new era, where ARM would fully replace the good old x86?

An another precursor has joined the game, as Ezvan.fr was migrated to ARM recently. Faster and cheaper, is there more to ask for?

more ...

BOINC, systemd and Linux process priority, next

In my previous post I believed to have my problem solved, the BOINC daemon was leaving system resources free if needed.

To do so I had configured systemd to allocate the lowest priority to the cgroup containing BOINC compute processes: sudo systemctl set-property boinc.service CPUWeight=1

This attribute is not available in systemd versions before 231, when it replaced the CPUShares attributes.

The equivalent setting for those versions is: systemctl set-property boinc.service CPUShares=2

This change reflects a change in the kernel configuration for cgroups. The cpu.shares attributes was replaced by cpu.weight. This change was not merged into the main Linux branch, as such systemd has to convert the CPUWeight value to its cpu.shares equivalent on my system.

However I noticed that playing videos on my system was having some slow downs. By doing the experiment previously described again, I got different results showing that BOINC was still not releasing all CPU resources when needed.

After reading some documentation as the systemd manual page about resource management and the kernel documentation about cgroups, I was able to understand better the problem.

Cgroups are hierarchically organized. CPU resources defined by a cgroup are shared by cgroups …

more ...

BOINC, systemd and Linux process priority

I've recently started to run BOINC in my computer again. It is a nice way to donate computing capacity to research projects.

BOINC principle is to only use unused ressources of my computer. It does so be giving the lowest priority to computing processes. On Linux this is done by setting the highest nice value to processes launched by BOINC, which is 19. The highest the nice value is, the least the process has priority.

19 is the idle priority, which means it allows using only CPU time which is not used by any process with higher priority. It is equivalent to use only unused resources of the system.

This setup was working fine for long on Linux. But I recently noticed that BOINC seemed to use more resources that what it should, as some applications were slower to run than usual. I tried to verify that. A simple way to do so is try using all computer ressources, and ensure they are available.

To so I launched 8 times (as my computer has 8 logical processing units) a command which uses all available CPU time.

for i in `seq 8`; do sha512sum /dev/zero&;done

By observing CPU using …

more ...