Optimizing plotting on an AMD Ryzen 5950x (or any other 16c/32t CPU)

Thanks, that’s really useful. I only properly started plotting today after adding a 2nd nvme drive. Hoping to be able to catch up fairly quickly

1 Like

Setting the RAM to 2400 solved stability issues. Though def leaving performance on the table.
Here is htop

And plotman

Embarassed to admit… but dont know how to tell how many PPD (plots per day) I’m doing. How you guys getting an accurate read on that?

1 Like

First of all, congrats!! Glad you fixed your stability issue! :beers:

As for “how many plots in a day”, I look at the times and dates on the dump folders – select an entire day across the dump drives, that’s how many plots you made in that day!

4 Likes

That seems a lot simplier than messing around trying to read logs lol. Will do that tnx.

2 Likes

I have to give number of threads like in the first image or second image…ihave to give the total number of threads are single thread

Hi Guys, interesting thread.

Came here as I’m considering a 5950X or 5900 for my next build.
Currently I am running a 5800X with 64Gb 3000mhz ram and 2 gen 4 2 TB SSDs

Having read through this I would say that there is a lot of room for optimisation in your systems.
Running 10 plots in parallel I am able to spit out 32 plots a day with an 8c 16t processor.
Its hitting 50C max.

If I can offer a few suggestions?

  • Linux - If you are already familliar or are willing to deal with the initial learning curve, this will provide your best results.

  • Use plotman or swar to manage your plotting queues. I have found that launching 4 X 4t (6750 mb ram) with a 15 min stagger, then waiting until all of those plots are out of phase 1 and adding another 4 to global limit, doing the same and finally adding another 2, has worked best for me.

  • This is the big one. - Try adding a “staging” drive.
    I’m using a 500gb Samsung 860 evo as my destination drive. I then have crontab calling a bash sh script to check if files are finalised on the destination drive and execute a move to my actual farming hard drives. - This allows your plots to queue up faster without waiting for direct Nvme to Spinning rust transfer and really helps I/O wait times. This netted me around a 25% speed increase.

I would expect with careful queue management and the above steps, that a 5950X or 5900X should be able to hit around 50 plots a day.

Hope this helps someone squeeze out a few more plots.

edit I have just realised that I may well have been replying to a different thread when I wrote this… Too many tabs!!
But its still pretty relevent.
Cheers to OP for good posts and info. Hopfully some of my experiences might help some of you close in on the magic 50!

7 Likes

In theory. Nobody’s been able to prove it so far, though. :wink:

There is a limit to what you can do with parallelism; it depends on the task.

1 Like

Anyone got a powershell script for moving plots from staging to HDD? Thought one of you might be doing it, or spotted a thread thats had one posted?

I just used the old school move command:

move e:\chia-final\*.plot z:\chia-final\

“move all plot files in this drive and folder to that drive and folder”

3 Likes

Linux instructions -
First up Create a bin for your .sh

sudo mkdir /home/YOUR-USERNAME/bin

Then you’ll be wanting a crontab entry similar to this one.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
* * * * * /bin/bash /home/YOUR-USERNAME/bin/plotmove.sh

CD to the bin then create your .sh file

Sudo nano plotmove.sh

This is where things can get a bit complicated.
My script is bodged together from so many forums and threads and adapted. Shoutout to whoever it was who tipped me off on parts of this (possibly floydhwung over on reddit??)

[ $(ls -al /mnt/STAGING-DIRECTORY-NAME | grep plot | wc -l) -gt 0 ] && [ $(ps aux | grep mv | grep -v grep | wc -l) -eq 0 ] && mv /mnt/STAGING-DIRECTORY-NAME/*.plot /mnt/FINAL-FARMING-DIRECTORY-NAME

What this does is check to see if a plot has completed, checks if a move is in progress and if all clear moves it to the final destination directory.

I am currently working on something to check all directories for available space and to move plots to the one with the most available space. But its going to take me some mucking about in python for a bit. I’m no programmer. Just a tinkerer.

Hope this helps.

3 Likes

I’m surprised no one has evidenced it as yet!
I’m fairy certain it can be done though. Possibly careful motherboard selection required.
I think with some more tinkering and optimization I could probably get into the mid-high 30’s with this 5800X. We will see!

1 Like

I’m sure there’s a robocopy (?) script for auto scan / move but can’t seem to dig it up on the forum…

Anyway, my rockets have arrived so will be swapping out the mp510 for them maybe tomorrow / sat. Will also give ‘ploto’ a trial as the auto scan for storage available is very appealing when I work away for 2 weeks every month.

I’ll post plotting results when back up and running. If I can get 28+ on a single gen3 then hoping for good things with a pair of gen4.

1 Like

[ $(ls -al /mnt/STAGING-DIRECTORY-NAME | grep plot | wc -l) -gt 0 ] && [ $(ps aux | grep mv | grep -v grep | wc -l) -eq 0 ] && mv /mnt/STAGING-DIRECTORY-NAME/*.plot /mnt/FINAL-FARMING-DIRECTORY-NAME

I would like to use this approach and I have a 1 TB SSD on hand to use as a staging drive, however I don’t have a single final farming directory. I mounted my drives to /mnt/hdd1 , /mnt/hdd2, etc. Is there a straightforward way to move finished plots in a way that will utilize all my hard drives?

Please do update if you get something working that checks for available space, I would be very interested in that!

@memix the command plotman analyze /yourplotmanlogsdirectory/2021-05-12* will analyze all your logs from 2021-05-12 at once, and the “n” column will be your plots/day.

It’s definitely possible, I have a few Ryzen systems setup including 3900X/5900X/5950X, only my 3900X has been up and left alone for a few days so that I can give some sort of consistent data. It’s getting about 42-43 plots every 24 hours without a staging drive and without a lot of optimizations from me running SWAR. I am getting this number by counting the plots for a day on its various destination drives.

3 Likes

I’m gonna step up to 14 parallel plots and see what happens. So in summary, what I saw on my 5950x (with 6 full-bandwidth destination NVME drives) was:

  • 9 parallel plots at 27k secs each (9 / 6 = 1.5 plots per drive)
  • 12 parallel plots at 30k secs each (12 / 6 = 2 plots per drive)
  • 14 parallel plots at ? secs each (14 / 6 = 2.33 plots per drive)

All plots are 4 thread, 4gb ram – I used to allocate 6gb per plot, but it’s pointless to do so since it barely improves plot time at all.

2 Likes

For that hardware, your times are much higher than I would expect. On my Linux 5950X machine with lower spec temp drives I’m seeing plot times in the 22-23k sec range with 13-14 parallel plots (resulting in a daily plot output in the mid forties).

Some ideas:

  1. Update to the recent 980 Pro firmware which addresses a performance issue (see link below)

  2. Try using the Samsung NVMe driver instead of the default Windows one. Samsung hasn’t yet released a driver for the 980 Pro specifically but their existing driver can work with it (see link below).

  3. Run a manual TRIM on all the SSDs in the “Defragment and optimize drives” control panel (click optimize).

Sources:

4 Likes

Hmm, I’ll look into that. Could be that Windows is indeed 10% slower as prognosticated… nobody’s done side by side benchmarking.

On my son’s 5950x which is only doing 8 in parallel, (to 3 target drives, also 980 pro), the numbers are between 20-21k per plot.

(also, no need to delete your post – reply metadata is suppressed when you are replying to the post directly above you, to reduce noise for readers… most replies are replies to the post above.)

3 Likes

When you guys are giving the times, is this total time or something else from the output?

Either ways, all the info and tips and tricks you guys are providing are much appreciated.

1 Like

Good to know, thanks!

1 Like

It’s the “total time” string in the console output.

I hate to tear down my plotter to nothing (cancel all pending plots, etc) just to load firmware on 980 pros though. It’s a pain.

2 Likes