unRAID Tuning

To have predictable performance across the many tasks performed by the NAS, it is possible to do CPU pinning. This effectively blocks off parts of the CPU processing power for certain tasks, meaning Plex can do it’s thing without being bothered by SABnzbd unpacking, for instance.

But to do this most efficiently, we need to know our CPU thread pairings. A hyperthreaded core has two threads per core; not one core with an extra thread. A subtle distinction, maybe.

To find CPU tread pairings, go to Tools → System Devices in the unRAID web interface.

For my dual-octocore 2450Ls, I get the following:

CPU Thread Pairings

Pair  1: cpu  0 / cpu 16
Pair  2: cpu  1 / cpu 17
Pair  3: cpu  2 / cpu 18
Pair  4: cpu  3 / cpu 19
Pair  5: cpu  4 / cpu 20
Pair  6: cpu  5 / cpu 21
Pair  7: cpu  6 / cpu 22
Pair  8: cpu  7 / cpu 23
Pair  9: cpu  8 / cpu 24
Pair 10: cpu  9 / cpu 25
Pair 11: cpu 10 / cpu 26
Pair 12: cpu 11 / cpu 27
Pair 13: cpu 12 / cpu 28
Pair 14: cpu 13 / cpu 29
Pair 15: cpu 14 / cpu 30
Pair 16: cpu 15 / cpu 31

With pairs 1-8 being the first CPU, and pairs 9-15 the second.

This means that to isolate, say, Plex, to cores 3,4,5; id need to pin virtual CPUs 3,19; 4,20; 5,21.

Planning it out

Context matters. This server is:

  • A basic NAS/media server
  • A digital PVR
  • A Plex server
  • A minecraft server
  • my heavy word-crunching rig