Chapter 37. Popular Unix Platforms in Science

Table of Contents

37.. FreeBSD in Science
37.. Linux in Science
RHEL
Ubuntu
37.. macOS in Science

FreeBSD in Science

The computer field is full of annoying evangelists pushing their favorite operating systems and languages without regard for individual users' needs. I am not one of them. The purpose of this section is not to promote FreeBSD, but to make people aware of its potential advantages. If these advantages make FreeBSD a good fit for your needs, then you should use it. If other factors make a different operating system more suitable for you, then you should use that. My only goal is to help people make informed choices. Most people don't. They are more likely to blindly follow the crown or advice from friends and colleagues, than to properly investigate the alternatives and make a rational choice. This section is here to inform you, not persuade you. I hope you find the information useful.

FreeBSD is a popular platform for scientific computing, for good reasons, though many people are unaware of this. It has a number of features that make it an outstanding platform for scientists.

A minimal FreeBSD installation can be completed in under 5 minutes. This may be all you need for a server installation. Then just configure your security measures, install the packages you need, and get to work.

For desktop PCs, laptops, and workstations, you can install any of the popular desktop environments using the desktop-installer package in the FreeBSD ports system (https://github.com/outpaddling/desktop-installer).

shell-prompt: pkg install desktop-installer
shell-prompt: desktop-installer
    

Unix beginners might prefer GhostBSD, a FreeBSD derivative with a fully graphical installer and systems management tools. (https://www.ghostbsd.org/) GhostBSD provides an experience very similar to Ubuntu Linux.

  • Unparalleled reliability/robustness. Jobs can run for weeks or months without worry of a system crash or freeze. A FreeBSD HPC cluster I built in 2012 never experienced a single compute node crash in more than eight years of service. It experienced many extreme loads during that time. A few head node crashes early on were traced to a Dell firmware bug affecting single-CPU configurations of the dual-socket PowerEdge server. After upgrading the firmware, the head node never crashed again either.

  • FreeBSD is renowned for its network performance and reliability. For this reason, many popular networking devices, including Juniper network products, OPNsense, pfSense, and TrueNAS, are based on FreeBSD. This makes FreeBSD a solid platform for big data processing and HPC clusters, which move huge amounts of data between machines.

  • FreeBSD has a fully-integrated ZFS file system, that can be easily configured during OS installation. Installing FreeBSD to boot from a ZFS RAID is as easy as installing most operating systems to a single disk. If you have a PC with two or more disks and no hardware RAID controller, you can easily configure your disks in any of the standard ZFS RAID levels during the FreeBSD install process. The entire install process will take about five minutes. The screen shots below show the disk configuration steps.

    Figure 37.1. FreeBSD Installer Disk Partition Screen

    FreeBSD Installer Disk Partition Screen

    Figure 37.2. FreeBSD Installer ZFS Options

    FreeBSD Installer ZFS Options

    Figure 37.3. FreeBSD Installer ZFS RAID Level Selection

    FreeBSD Installer ZFS RAID Level Selection

    Figure 37.4. FreeBSD Installer ZFS Disk Selection

    FreeBSD Installer ZFS Disk Selection

    Figure 37.5. FreeBSD Installer ZFS Commit

    FreeBSD Installer ZFS Commit

    A few minutes later...

    Figure 37.6. FreeBSD ZFS Status

    FreeBSD ZFS Status

    Booting from mirrored disks will protect your data from a single disk failure as well as increase performance. You should still back up data off-site to protect against other incidents such as fire, theft, or accidentally file deletion.

    You can also manually configure other options outside the installer as well.

  • The FreeBSD ports system allows users to quickly, easily, and reliably manage over 30,000 software packages. According to repology.org, FreeBSD ports has one of the largest collections, and also one of the highest percentage of packages that are up-to-date (offering the latest release).

    Unlike most competing package systems, FreeBSD ports allows you to build and install any package from source as easily as you would install the precompiled (binary) package. This allows building programs with additional, non-portable optimizations to take better advantage of your high-end CPUs, building with optional features, building with debug flags to help track down bugs in the software, etc.

    # Install the binary packages
    pkg install rna-seq
    
    # Install from source: Take longer, but no more effort from you
    cd /usr/ports/biology/rna-seq && make install
            

    Of the more than 30,000 packages in the collection, more than 2,000 are in the science categories.

    shell-prompt: count-science-ports 
    astro        141
    biology      238
    cad          146
    math        1200
    science      505
    Total       2230
            
  • The CentOS-based Linux compatibility actually makes FreeBSD more suitable for running commercial Linux applications than many Linux distributions. Most commercial Linux software is built on Redhat Enterprise Linux (RHEL), and much of it does not run properly on Linux platforms with newer tools and libraries. FreeBSD's Linux compatibility is based on CentOS, which is RHEL-compatible. FreeBSD users thus have access to newer tools provided by FreeBSD and a RHEL-compatible Linux environment at the same time, with no virtual machine or container overhead.

    FreeBSD's Linux compatibility is not an emulation layer. It is a kernel module that supports Linux system calls that differ from FreeBSD's. There is no additional overhead when running Linux binaries. In fact, Linux binaries sometimes run slightly faster on FreeBSD than they do on Linux.