-
Notifications
You must be signed in to change notification settings - Fork 70
MadMax
The Madmax plotter is a pipelined multi-threaded implementation that is very fast at sequential plot creation. The goal with Madmax is to use as much of your CPU and disk resources as possible to create a single plot quickly, then move on to the next. This is the opposite of the stock Chia plotter, which really requires many parallel plotting jobs to be efficient.
Machinaris uses an enhanced Plotman plotting manager to interface with both plotting backends: chia
and madmax
. NOTE: Machinaris provides a full WebUI with plotting management, monitoring and remote control. If you only need MadMax at the commandline in a Docker container, checkout the great image by delucca instead.
Here is a good starting point for Plotman config when using madmax
. Start with a single Madmax plot allowed at one time, dial up threads and buckets to match your hardware:
# Learn more about Plotman at https://github.com/ericaltendorf/plotman
# https://github.com/ericaltendorf/plotman/wiki/Configuration#versions
version: [2]
logging:
# DO NOT CHANGE THIS IN-CONTAINER PATH USED BY MACHINARIS!
plots: /root/.chia/plotman/logs
user_interface:
use_stty_size: False
commands:
interactive:
autostart_plotting: False
autostart_archiving: False
# Where to plot and log.
directories:
# 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.
# REMEMBER ALL PATHS ARE IN-CONTAINER, THEY MAP TO HOST PATHS
tmp:
- /plotting
# Optional: tmp2 directory. If specified, will be passed to
# the chia and madmax plotters as the '-2' param.
#tmp2: /plotting2
# One or more directories; the scheduler will use all of them.
# These again are presumed to be on independent physical devices,
# so writes (plot jobs) and reads (archivals) can be scheduled
# to minimize IO contention.
# REMEMBER ALL PATHS ARE IN-CONTAINER, THEY MAP TO HOST PATHS
dst:
- /plots
# See: https://github.com/guydavis/machinaris/wiki/Plotman#archiving
#archiving:
#target: rsyncd
#env:
#site_root: /mnt/disks
#user: root
#host: aragorn
#rsync_port: 12000
#site: disks
# Plotting scheduling parameters
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: 4
tmpdir_stagger_phase_minor: 0
# 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.
# Increase for staggered plotting by chia, leave at 1 for madmax sequential plotting
tmpdir_max_jobs: 1
# Don't run more than this many jobs at a time in total.
# Increase for staggered plotting by chia, leave at 1 for madmax sequential plotting
global_max_jobs: 1
# 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: 20
# 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.
#
# Currently support override parameters:
# - tmpdir_max_jobs
#tmp_overrides:
# In this example, /plotting3 is larger than the other tmp
# dirs and it can hold more plots than the default.
#/plotting3:
# tmpdir_max_jobs: 5
# Configure the plotter. See: https://github.com/guydavis/machinaris/wiki/Plotman#plotting
plotting:
# See Keys page, for 'Farmer public key' value
farmer_pk: REPLACE_WITH_THE_REAL_VALUE
# See 'Settings | Pools' page, for 'P2 singleton address' value
pool_contract_address: REPLACE_WITH_THE_REAL_VALUE
# If you enable 'chia', plot in *parallel* with higher tmpdir_max_jobs and global_max_jobs
# If you enable 'madmax', plot in *sequence* with very low tmpdir_max_jobs and global_max_jobs
type: madmax
# The chia plotter: https://github.com/Chia-Network/chia-blockchain
chia:
k: 32 # k-size of plot, leave at 32 most of the time
e: False # Disable bitfield back sorting (default is True)
n_threads: 2 # Threads per job
n_buckets: 128 # Number of buckets to split data into
job_buffer: 3389 # Per job memory
# The madmax plotter: https://github.com/madMAx43v3r/chia-plotter
madmax:
n_threads: 4 # Default is 4, SLOWLY crank up if you have many cores
n_buckets: 256 # Default is 256
n_buckets3: 256 # Default is 256
n_rmulti2: 1 # Default is 1
WARNING: Do not try to run madmax
with as many concurrent plots (tmpdir_max_jobs
and global_max_jobs
) as the official chia
plotter. Your computer will explode!
CHIA NETWORK INC, CHIA™, the CHIA BLOCKCHAIN™, the CHIA PROTOCOL™, CHIALISP™ and the “leaf Logo” (including the leaf logo alone when it refers to or indicates Chia), are trademarks or registered trademarks of Chia Network, Inc., a Delaware corporation. There is no affiliation between the Machinaris project and the main Chia Network project.