Plotman: Let's share settings

You must leave plotman running to trigger new jobs….

Get out.

So running plotman plot doesn’t keep it running in the background? I thought interactive mode was just for checking. That’s not how I recall my initial use of it working. I ran it and had 6 going on at once at the appropriate timings.

(You must also re-start it if you want it to pick up config changes)

Oh yeah, definitely restarting when I make changes.

Correct afaik. It’s not a daemon. I don’t use “plotman plot” though. You could confirm on keybase. Sounds like some docs could be clarified if this is the case.

@roybot i’m just scanning keybase, maybe plotman plot stays running. Seems like it should.

This confused me

So running plotman plot doesn’t keep it running in the background?

because it isn’t in the background.

That being said, it seems like most people are running plotman interactive (including vocal devs) so I’d suggest you give that a try instead

The plotman docs on Github have been lacking. I’ve been adding stuff to them as I’ve learned about it. Clearly I have a lot more to learn.

1 Like

Just to add here, it seems quitting plotman interactive by pressing ‘q’, and then resubmitting the “plotman interactive” command is sufficient to reload the config. Existing plot jobs do not need to be killed. Existing plot jobs will keep the config settings that were applied when they were started, and new jobs will take the new config settings (at least based on what shows up in htop).

Glad to hear you got things sorted out roybot

1 Like

Hi all,

How do I setup plotman for my specs

i7 16threads
2x2tb nvme sabrent
64gb ram

I was thinking 6 plots staggered by 45mins to each nvme
so 12 jobs in total.

How should I setup plotmans config?

tmpdir_stagger_phase_major: 6
tmpdir_stagger_phase_minor: 1
# Optional: default is 1
tmpdir_stagger_phase_limit: 12

Anyone using Plotman on Windows? Any tips on running it and which build to use? Waiting for a motherboard to come in for 5950x which will be a Linux build, but I’m experimenting/starting on a Windows rig at the moment.

Hello everyone!
I am looking for the optimal setting for my system.
my system: AMD 3900x , 64 Gb ddr4 3600mhz ram, two nvme ssd drive for plotting (2Tb + 1Tb),
my primary setting is this:

    tmp_overrides:
            "/media/chia/New Volume1":
                    tmpdir_max_jobs: 4
            "/media/chia/New Volume2":
                    tmpdir_max_jobs: 8                        

scheduling:

    tmpdir_stagger_phase_major: 2
    tmpdir_stagger_phase_minor: 1
    tmpdir_stagger_phase_limit: 8

    # Don't run more than this many jobs at a time on a single temp dir.
    tmpdir_max_jobs: 8

    # Don't run more than this many jobs at a time in total.
    global_max_jobs: 12

    # Don't run any jobs (across all temp dirs) more often than this, in minutes.
    global_stagger_m: 25

    # How often the daemon wakes to consider starting a new plot job, in seconds.
    polling_time_s: 20

plotting:
k: 32
e: False # Use -e plotting option
n_threads: 12 # Threads per job
n_buckets: 128 # Number of buckets to split data into
job_buffer: 5500 # Per job memory

Thread so a max of 4. Above that it doesn’t really help. NVMe (flash) drive flow down when you fill them up too much. I would do 3 for 1TB and 7 for 8TB.

You’d then set the stagger phase limit to 7. Global max should be 10. But that looks solid.

1 Like

Correct me if I’m wrong, Plotman is for linux.

1 Like

I’m using a X3750 M4 IBM server with 32 cores and 64 threads, 64GB RAM DDR3
HD 3x2TB NVME 3.0 1x1TB NVME3.0 on PCIe riser card.
The board has 128 PCIe Lanes so I assume I don’t have to worry about the bandwidth on these HDs.

I’m currently running Max 24 jobs 7+7+7+3, My CPU only peak at around 60% and RAM is about 80% peaked at about 58GB. Power consumption is about average 470WH.

Keep in mind my CPUs are not modern, they are 4 x E5-4650 @ 2.4GHz 8 cores each, and that’s why I’m trying different value with the threads, currently at 12. I dont really notice any difference between 8-12, they seem about 18 hour’s per plot at 24 plots parallel.

Please let me know if you guys have any suggestion, should I add more ram? or my CPUs are exhausting due to number of parallels going on (but they won’t peak with 9 plots within stage 2.1).

Thank you guys…

scheduling:

tmpdir_stagger_phase_major: 2
tmpdir_stagger_phase_minor: 1
tmpdir_stagger_phase_limit: 3
tmpdir_max_jobs: 7
global_max_jobs: 24
global_stagger_m: 30
polling_time_s: 20

plotting:

k: 32
e: False             # Use -e plotting option
n_threads: 12         # Threads per job
n_buckets: 128       # Number of buckets to split data into
job_buffer: 3800     # Per job memory

Someone took a stab at making it work on Windows but when I tried it, it wasn’t monitoring processes correctly on my machine, so I gave up. Last time I looked it had not received an update in a couple of weeks. Someone else may have had better success on their Windows install than I did.

I resorted to writing my own plotter utility scripts in PowerShell.

2 Likes

Okay all! I understand the scheduling settings now.

“# Run a job on a particular temp dir only if the number of existing jobs
# before tmpdir_stagger_phase_major tmpdir_stagger_phase_minor
# is less than tmpdir_stagger_phase_limit.
# Phase major corresponds to the plot phase, phase minor corresponds to
# the table or table pair in sequence, phase limit corresponds to
# the number of plots allowed before [phase major, phase minor]
tmpdir_stagger_phase_major: 2
tmpdir_stagger_phase_minor: 1
# Optional: default is 1
tmpdir_stagger_phase_limit: 1”

So this is based totally on how many temp drives you have… So if you only have 1 temp drive like me, just create more folders on that drive depending on how many you want to run in parallel. In my case, I wanted to run 4 at time with 4 threads each and 6gb of ram…

Do this:

    # One or more directories to use as tmp dirs for plotting.  The
    # scheduler will use all of them and distribute jobs among them.
    # It assumes that IO is independent for each one (i.e., that each
    # one is on a different physical device).
    # If multiple directories share a common prefix, reports will
    # abbreviate and show just the uniquely identifying suffix.
   tmp:
            - /media/Test/tmp1
            - /media/Test/tmp2
            - /media/Test/tmp3
            - /media/Test/tmp4
    # Optional: Allows overriding some characteristics of certain tmp
    # directories. This contains a map of tmp directory names to
    # attributes. If a tmp directory and attribute is not listed here,
    # it uses the default attribute setting from the main configuration.
    #

Comment out this section

    # Currently support override parameters:
    #     - tmpdir_max_jobs
    # tmp_overrides:
            # In this example, /mnt/tmp/00 is larger than the other tmp
            # dirs and it can hold more plots than the default.
            # "/media/chiadsk3/Test":
            # tmpdir_max_jobs: 8

scheduling:
# Run a job on a particular temp dir only if the number of existing jobs
# before tmpdir_stagger_phase_major tmpdir_stagger_phase_minor
# is less than tmpdir_stagger_phase_limit.
# Phase major corresponds to the plot phase, phase minor corresponds to
# the table or table pair in sequence, phase limit corresponds to
# the number of plots allowed before [phase major, phase minor]
tmpdir_stagger_phase_major: 2
tmpdir_stagger_phase_minor: 1
# Optional: default is 1
tmpdir_stagger_phase_limit: 1

    # Don't run more than this many jobs at a time on a single temp dir.
    tmpdir_max_jobs: 8

    # Don't run more than this many jobs at a time in total.
    global_max_jobs: 8

    # Don't run any jobs (across all temp dirs) more often than this, in minutes.
    global_stagger_m: 15

    # How often the daemon wakes to consider starting a new plot job, in seconds.
    polling_time_s: 20

plotting:
k: 32
e: False # Use -e plotting option
n_threads: 4 # Threads per job
n_buckets: 128 # Number of buckets to split data into
job_buffer: 4000 # Per job memory

And that will work perfectly!

So did I understand this correctly, if you set phase limit to 6 it will start new plots even if the older one hasn’t completed phase 1 (as set in phase major and minor)? And how is this setting working out for you?

Yeah, if you have phase limit set to 1 and major/minor set to 2:1 it will only have 1 plot running per temp dir that will be in a phase less than 2:1.

Hey guys,

Im still struggling to understand the scheduling section of plotman , mostly the max_jobs , global max_jobs thus i put 9 for both. Should there be a difference with these variables (Specs Posted Below). Any help will be appreciated :smiley:

My settings are

tmpdir_stagger_phase_major: 1

tmpdir_stagger_phase_minor: 5

Optional: default is 1

mpdir_stagger_phase_limit: 1

Don't run more than this many jobs at a time on a single temp dir.

tmpdir_max_jobs: 9

Don't run more than this many jobs at a time in total.

global_max_jobs: 9

Don't run any jobs (across all temp dirs) more often than this, in minutes.

global_stagger_m: 30

How often the daemon wakes to consider starting a new plot job, in seconds.

polling_time_s: 15

Specs:

CPU: Ryzen 3900x 12C/24T

RAM: 32GB 3200

NVME : 2x 2TB EVO PLUS Raid 0

HDD: 8*18TB HDD

In your setting 1:5 limit 1. What it means is From Phase 1, Step 1 - 5, only allow one at a time. tmpdir_max_jobs and global_max_jobs should use the same number because you have RAID 0 drive. I would set it at 14 (Or 15, try it 14 would be better as it is a little more under your total storage). global_stagger_m: 30 mean you going to wait for 30 minutes before you start a new job. So if your job still stuck at 1:4, even you hit the time limit, it won’t start. Set mpdir_stagger_phase_limit to 4 as you have quite the CPU thread. Ram would be at 4000. Thread 4 per job.

1 Like