A Game Changer for ZeroTier on Embedded CPU Devices

Going Faster with Multi-Core Performance

We’re excited to announce the launch of multi-threading for ZeroTier. This new feature is designed to boost performance on power-efficient devices with embedded CPUs, such as multi-core routers, DVR machines used for video security, and Raspberry Pi devices.

Previously, ZeroTier only used a single core on these multi-core devices. This could lead to slower data transfers and issues with video streaming, especially on devices with lower clock-speed cores. With the introduction of multi-threading, customers can see up to a 2x increase in performance on the same hardware. Multi-threading makes it easier to implement ZeroTier across several use cases including video monitoring, SD-WAN, and more.

Use Cases and Business Benefits

This multi-threading enhancement is currently available for Linux-based devices and offers substantial benefits across several key use cases. Organizations in industrial IoT, smart buildings, security, and automotive can use this feature to improve the performance of their ZeroTier deployments, without upgrading hardware.

For example, network administrators and security teams who had trouble with video streaming because of low frame rates or connection issues will now see clearer and more reliable video. Plus, data transfers on ARM-based devices, like those used in autonomous vehicles or industrial robots, will be faster and more efficient.

Adopting the multi-threading feature offers several specific benefits:

  • Improved Performance: Experience clearer video streams and faster file transfers, even on resource-constrained devices.
  • Cost Savings: Continue using your existing hardware without worrying about bandwidth limitations or the need for costly upgrades. For new IoT deployments, you can opt for more affordable hardware without sacrificing performance, thereby reducing overall deployment costs.
  • Better Service for Downstream Customers: Serve more clients with improved reliability and performance, without increasing your operational costs.

ZeroTier Does it Different

ZeroTier has a unique focus on device-centric deployments like automotive and IoT. That’s why we’ve always optimized the ZeroTier agent for use in resource-constrained environments. Unlike other products that rely on high-level languages like GO or JAVA, which increase resource consumption, our approach delivers concurrency without compromising on efficiency. We purpose-built this version of multi-threading to improve performance while honoring our ongoing commitment to providing a lightweight agent with a tight memory footprint.

Enable Multi-Threading Now

To take advantage of this feature, simply activate multi-threading by adding the following settings to local.conf on the device:

{
    "settings":
    {
        "multicoreEnabled": true,
        "concurrency": 2,
        "cpuPinningEnabled": true
    }
}

Concurrency refers to the number of cores that will be used for multi-threading. The concurrency value shouldn’t be more than the total number of cores in the system. Often a value less than the total is best. Two is a good value to start with. 

Pinning keeps a specific thread on a specific core. This can reduce latency of some activities and may lead to better total throughput. Feel free to experiment with different levels of concurrency and whether pinning is enabled. Different settings may create different results on different hardware.