Designing a new FoundationDB server

I looked, but was unable to find, guidance regarding the best way to divide a machine’s resources for best performance of FoundationDB.

I have a machine with 12 cores X 2 threads, 128GB RAM, 1 2TB NVMe and 4x 8TB SSD volumes and I’m trying to find the best way to divide those resources. Does anyone have advice on this topic or perhaps a link to documentation that I missed?

My current cluster has 2 x 8TB volumes combined into one large logical volume, and it performs well, but I’m thinking this is not ideal. My intention is to migrate to these new boxes, 1 at a time add new - then remove the old.

Any help will be appreciated.

So, this is what I did. I put 2 server agents and 1 transaction (class) agent on each disk and allocated 8GB RAM for each of the server agents. I guess we’ll see how well this works.

The docs say 1 service per core, and I’m not sure if the term core also means thread. I read it literally so have 12 cores and 12 fdb processes.

Core means processor core, and core = fdbserver process, since it is single threaded.

I would

  • put the transaction log on the NVMe exclusively
  • point 1 or 2 storage processes to the same SSD, so 4 SSD means 4-8 storage processes. If they are slow, then probably just one per disk
  • never put a transaction log on a disk that is shared by another process
  • so far it is 5-9 processes, so just use the rest for stateless processes.

Thank you for the reply. I’m going to move the transaction logs to NVMe.