Skip to content

System Requirements

The following are system requirements for running HSE applications.

Hardware

Hardware requirements are largely dictated by the application embedding HSE and the amount of data stored. The following are general guidelines.

  • Architecture: 64-bit Intel®/AMD (x86_64) or IBM Z® (s390x)
  • Memory: 32 GB or more
  • Block Storage: SSD volumes only; use NVMe for best performance
  • Persistent Memory (optional): must support a DAX-enabled file system

Operating System

HSE should work with most modern Linux® 64-bit operating system distributions. We have run HSE on the following:

  • Red Hat® Enterprise Linux® (RHEL) 8 and 9
  • Ubuntu® 18.04, 20.04, and 22.04
  • Fedora® 35 and 36

File System

HSE requires the following file system features.

  • fallocate(2) with modes zero (0), FALLOC_FL_PUNCH_HOLE, FALLOC_FL_KEEP_SIZE
  • openat(2) with flag O_DIRECT
  • DAX if the file system will host a pmem media class

Several common file systems support these features, including XFS and ext4. For most HSE applications we recommend using XFS.

Info

File systems hosting pmem media classes should be mounted with the option -o dax=always.

Block Storage

If a file system storing a KVDB media class is configured on a logical block device comprising multiple physical block devices, such as when using XFS with LVM, performance can be significantly improved by balancing these physical devices across NUMA nodes. Tools like lstopo(1) can be helpful in creating and verifying a balanced configuration.

For the single logical or physical block device configured with a file system for use with HSE, performance can also be significantly improved by setting the read-ahead to the greater of the device default or 128 KiB. For example:

cat /sys/block/nvme0n1/queue/read_ahead_kb
128

Virtual Memory

HSE performance and quality of service (QoS) can be significantly improved by configuring huge pages and other virtual memory tuning parameters. For most HSE applications we recommend the following settings.

sudo sysctl -w vm.nr_hugepages=256
sudo sysctl -w vm.swappiness=1
sudo sysctl -w vm.dirty_background_ratio=5
sudo sysctl -w vm.dirty_ratio=15