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.
- 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.