Feature: Docker Image

This PR adds a Docker Image to improve portability. We can use that image for both Windows and Linux machines.
How it works
You can test a preview generated image with the following command on your machine:
docker run \
  -v <path-to-your-tmp-dir>:/mnt/harvester \
  -v <path-to-your-final-dir>:/mnt/farm \
  odelucca/chia-plotter \
    -t /mnt/harvester/ \
    -d /mnt/farm/ \
    -p <pool-key> \
    -f <farm-key>

Of course, you can provide whatever arguments you want after the image name.
Also, you can make an alias, like:
alias chia-plotter="docker run \
  -v <path-to-your-tmp-dir>:/mnt/harvester \
  -v <path-to-your-final-dir>:/mnt/farm \
  odelucca/chia-plotter"

And call it with:
chia-plotter <args>

I've run a few tests, and it seems that it has a small performance cost. I was not able to define the exact percentage of the performance decrease yet, but still I think that is a pretty good alternative for running the plotter in Windows machines.
Future improvements
I see two important future improvements, they are:

We need to host this image in a proper Docker repository
We could create a simple script (maybe inside the plotter itself?) where it could identify the remaining farm disk storage and automatically work to fill it up. By doing so, we could simply launch new containers for each harvester memory / rig

I did a few tests here, it seems that running in Docker is 5% slower.
I think that is a pretty good trade-off for anyone that cannot compile for whatever reason (Windows machines, for example)

5% slower is quite good

compared to WSL

can you add instructions to the readme?

Sure! I'll do it later today and then comment back here in the PR 🙂
Regaeding performance, the 5% impact is on a Linux machine. I don't have a proper Windows to test it, it would be nice to do the same test in Windows too!

@madMAx43v3r do you have a Dockerhub account to host the stable image?
I don't know if you are familiar with Docker, but you can build that image and them host it on your Docker account with the following commands:
docker login # It will login to your Docker account
docker build -t <your-username>/chia-plotter .
docker push <your-username>/chia-plotter

Or should I left the image generated under my own account in the README?

Yeah let's use your account & image

docker does not seem to use both cpus

docker does not seem to use both cpus

Did you added the -r flag to your command? Like this:
docker run \
  -v <path-to-your-tmp-dir>:/mnt/harvester \
  -v <path-to-your-final-dir>:/mnt/farm \
  odelucca/chia-plotter \
    -t /mnt/harvester/ \
    -d /mnt/farm/ \
    -p <pool-key> \
    -f <farm-key> \
    -r <number-of-cores>

If you added the -r flag, you should check if Docker has a default CPU/memory constraint in Windows. Some users say it has. You probably can configure those constraints either in your Docker config, or in the run command directly. I know that:
docker run \
  -v <path-to-your-tmp-dir>:/mnt/harvester \
  -v <path-to-your-final-dir>:/mnt/farm \
  -m 8000 \
  odelucca/chia-plotter \
    -t /mnt/harvester/ \
    -d /mnt/farm/ \
    -p <pool-key> \
    -f <farm-key>

Would limit your container to 5gb RAM (with the -m flag)

@madMAx43v3r I've added the README section. Could you merge please? :)

docker does not seem to use both cpus

Did you added the -r flag to your command? Like this:
docker run \
  -v <path-to-your-tmp-dir>:/mnt/harvester \
  -v <path-to-your-final-dir>:/mnt/farm \
  odelucca/chia-plotter \
    -t /mnt/harvester/ \
    -d /mnt/farm/ \
    -p <pool-key> \
    -f <farm-key> \
    -r <number-of-cores>

I have done this and also manually added a global wslconfig to provide 32 vcpu and 64gb ram. Still processing under 1 cpu.

any plans to add this to unraid's CA?

Is this image up on dockerhub yet anywhere? I'm trying to build it locally (on a windows host) from the HEAD of your branch, but keep running into the following error:
#10 0.968 CMake Error at CMakeLists.txt:5 (add_subdirectory):
#10 0.968   The source directory
#10 0.968
#10 0.968     /root/lib/bls-signatures
#10 0.968
#10 0.968   does not contain a CMakeLists.txt file.
#10 0.968
#10 0.968
#10 0.970 -- Looking for pthread.h
#10 1.039 -- Looking for pthread.h - found
#10 1.040 -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
#10 1.108 -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
#10 1.110 -- Found Threads: TRUE
#10 1.112 -- Configuring incomplete, errors occurred!
#10 1.112 See also "/root/build/CMakeFiles/CMakeOutput.log".
#10 1.118 make: *** No targets specified and no makefile found.  Stop.
executor failed running [/bin/sh -c /bin/sh ./make_devel.sh]: exit code: 2

Is this image up on dockerhub yet anywhere? I'm trying to build it locally to test it (on a windows host) from the HEAD of your branch, but keep running into the following error:

0.968 CMake Error at CMakeLists.txt:5 (add_subdirectory):
0.968   The source directory
0.968
0.968     /root/lib/bls-signatures
0.968
0.968   does not contain a CMakeLists.txt file.
0.968
0.968
0.970 -- Looking for pthread.h
1.039 -- Looking for pthread.h - found
1.040 -- Performing Test CMAKE_HAVE_LIBC_PTHREAD
1.108 -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
1.110 -- Found Threads: TRUE
1.112 -- Configuring incomplete, errors occurred!
1.112 See also "/root/build/CMakeFiles/CMakeOutput.log".
1.118 make: *** No targets specified and no makefile found.  Stop.
executor failed running [/bin/sh -c /bin/sh ./make_devel.sh]: exit code: 2

Yes, it is: odelucca/chia-plotter

Did some digging docket wont make full use of dual cpu setups, as wsl2 only passes 1 socket over. Also the wslconfig cant overide it. So a dedicated windows version is the way to go.

@delucca ok - super nitpicky haha - but there is an r missing at the end of Docker on line 179 of the Readme

Thanks! Going to fix that

Did some digging docker wont make full use of dual cpu setups, as wsl2 only passes 1 socket over. Also the wslconfig cant overide it. So a dedicated windows version is the way to go.

Could you please give it a try with the command I've just added to the README? Something like this:
docker run \
  -v <path-to-your-tmp-dir>:/mnt/harvester \
  -v <path-to-your-final-dir>:/mnt/farm \
  -m 8000 \
  --cpus 8 \
  odelucca/chia-plotter \
    -t /mnt/harvester/ \
    -d /mnt/farm/ \
    -p <pool-key> \
    -f <farm-key> \
    -r 8

If you added the -r flag, you should check if Docker has a default CPU/memory constraint in Windows. Some users say it has. You probably can configure those constraints either in your Docker config, or in the run command directly. I know that:
docker run \
  -v <path-to-your-tmp-dir>:/mnt/harvester \
  -v <path-to-your-final-dir>:/mnt/farm \
  -m 8000 \
  odelucca/chia-plotter \
    -t /mnt/harvester/ \
    -d /mnt/farm/ \
    -p <pool-key> \
    -f <farm-key>

Would limit your container to 5gb RAM (with the -m flag)

thanks for this @delucca and @madMAx43v3r ! i managed to make it run during my first try. using docker for windows v20.10.6
also, i believe docker containers by default will use unlimited memory and cpu: https://docs.docker.com/config/containers/resource_constraints/
so for me i didnt add it (the -m and cpu constraints), and just allowed the container to use all of the host's resources, which is still fine as of speaking. plotting is still ongoing as im typing now.

Did some digging docker wont make full use of dual cpu setups, as wsl2 only passes 1 socket over. Also the wslconfig cant overide it. So a dedicated windows version is the way to go.

Docker don't use WSL, it uses HyperV.
You can configure Docker CPU limit by following this article: https://www.thorsten-hans.com/docker-container-cpu-limits-explained/

by default it will install using WSL2 backend, I'll have to re-install docker using hyper-v backend

Did some digging docker wont make full use of dual cpu setups, as wsl2 only passes 1 socket over. Also the wslconfig cant overide it. So a dedicated windows version is the way to go.

Docker don't use WSL, it uses HyperV.
You can configure Docker CPU limit by following this article: https://www.thorsten-hans.com/docker-container-cpu-limits-explained/

by default it will install using WSL2 backend, I'll have to re-install docker using hyper-v backend

Oh, I see 🤔
I don't have too much experience with Docker in Windows, but I know that you can change the VM driver pretty easily, even with CLI commands while running the container.
Where you able to make it run with multiple CPU cores?

I'm not who you asked, but wanted to chime in that it has fully maxed my 8700k with 1 instance. Once the plot finishes successfully I'll cut over to my 5950x and report back again.

 Once the plot finishes successfully I'll cut over to my 5950x and report back again.

Thanks! :)

sorry! Complete flow command diagram example

Complete flow command diagram example

Complete flow command diagram example

Sorry, I was not able to understand what you said. Do you want a more detailed example in the README.md file?

odelucca/chia-plotter
where?

odelucca/chia-plotter
where?

You don't need to get those files. Since you're using Docker, you need to follow these steps:
1. Install Docker
Follow this guide to install Docker in windows: https://docs.docker.com/docker-for-windows/install/
2. Open a terminal
Press Windows Key + R, type cmd and then press Enter
3. Run Docker container
In the shell that opened, paste the following command and them press Enter.  Also the wslconfig cant overide it. So a dedicated windows version is the way to go.

Docker don't use WSL, it uses HyperV.
You can configure Docker CPU limit by following this article: https://www.thorsten-hans.com/docker-container-cpu-limits-explained/

by default it will install using WSL2 backend, I'll have to re-install docker using hyper-v backend

Oh, I see 🤔
I don't have too much experience with Docker in Windows, but I know that you can change the VM driver pretty easily, even with CLI commands while running the container.
Where you able to make it run with multiple CPU cores?

running with hyperv backend now, no difference. I have used the --cpu 32 and -r32, also specified cpu resources on docker desktop, but still only using 1 cpu of the 2.

Did some digging docker wont make full use of dual cpu setups, as wsl2 only passes 1 socket over. Also the wslconfig cant overide it. So a dedicated windows version is the way to go.

Docker don't use WSL, it uses HyperV.
You can configure Docker CPU limit by following this article: https://www.thorsten-hans.com/docker-container-cpu-limits-explained/

by default it will install using WSL2 backend, I'll have to re-install docker using hyper-v backend

Oh, I see thinking
I don't have too much experience with Docker in Windows, but I know that you can change the VM driver pretty easily, even with CLI commands while running the container.
Where you able to make it run with multiple CPU cores?

running with hyperv backend now, no difference. I have used the --cpu 32 and -r32, also specified cpu resources on docker desktop, but still only using 1 cpu of the 2. Infact performance is worst than wsl2. Table 1 in wsl2 took ~105sec, 270sec with hyperv.

🤔
That is pretty strange. You might have a hard constraint in your OS directly.
I've tested that in a friend's Windows machine and it works. Also, other users are already reporting that they're being able to plot with all their CPUs using the method I've mentioned.
If you don't want to wait for a Windows binary, I suggest you check Docker documentation to understand what could be forcing this 1 CPU constraint on your machine. It seems that may be a missing config!
Sorry to not be able to help you more, if I were able to replicate your issue I could do more

@NikXO6 one last thing, you're considering only the CPU usage as your metric to define if the plotter is using all cores?
I question that because that is not the correct way to do so. For example, I have a Ryzen 5900X with 970 EVO. In Linux, even if I set for it to use all cores, the plotter never uses 100% of my CPU, because my bottleneck is my SSD memory

So, you should install a proper software to monitor CPU core usage per process. I have no idea what kind of software there is for Windows.
Also, if you use more cores to a given process that can't use 100% of your CPU, the usage of that process would be smaller.
So, for example:
If you have 4 cores, you basically have 4 CPUs. So, if you use only 1 core for that process, it could use 100% of that core.
But, on the other hand, if you use 4 cores for that same process, it would use 25% of each core, instead of 100% of one, if your bottleneck is elsewhere.

You could test that in 2 different ways:

You could force the plotting to use only 1 core and check the % usage per core and see the % usage of that core. Them, you could stop that process and start a new one with 2 cores. After that, you should see a smaller %, but in 2 different cores
You could find a proper Windows program that can define the amount of cores in a given process. But I don't know if there is any!

The bottom line is, you can't state that the program is not using all your cores based only on the % usage of your CPU, since your bottleneck could be elsewhere.
Like I've said, my 5900X is not being used 100% since my bottleneck is in my NVMe memory.

You could test that in 2 different ways:

You could force the plotting to use only 1 core and check the % usage per core and see the % usage of that core. Them, you could stop that process and start a new one with 2 cores. After that, you should see a smaller %, but in 2 different cores
You could find a proper Windows program that can define the amount of cores in a given process. But I don't know if there is any!

Have done this, I started with 4 threads and went up to 32. I could visually see each thread being utilized until 24 threads, with is 1 cpu, adding more threads did not load the 2nd cpu. I am using a ram disk atm.

You could test that in 2 different ways:

You could force the plotting to use only 1 core and check the % usage per core and see the % usage of that core. Them, you could stop that process and start a new one with 2 cores. After that, you should see a smaller %, but in 2 different cores
You could find a proper Windows program that can define the amount of cores in a given process. But I don't know if there is any!

Have done this, I started with 4 threads and went up to 32. I could visually see each thread being utilized until 24 threads, which is 1 cpu, adding more threads did not load the 2nd cpu. I am using a ram disk atm.

You tried that after using the --cpus flag in your Docker run command?

I can't test this personally - but do you believe docker cannot use two physical CPUs, or a single container can't? Might be worth trying two in parallel.
I understand that's largely what his plotter is meant to avoid, but 2 is still better than 12!

You could test that in 2 different ways:

You could force the plotting to use only 1 core and check the % usage per core and see the % usage of that core. Them, you could stop that process and start a new one with 2 cores. After that, you should see a smaller %, but in 2 different cores
You could find a proper Windows program that can define the amount of cores in a given process. But I don't know if there is any!

Have done this, I started with 4 threads and went up to 32. I could visually see each thread being utilized until 24 threads, which is 1 cpu, adding more threads did not load the 2nd cpu. I am using a ram disk atm.

You tried that after using the --cpus flag in your Docker run command?
Also, which CPU is yours? Your CPU have 24 threads per core? 😮

dual e5-2697v2

I can't test this personally - but do you believe docker cannot use two physical CPUs, or a single container can't? Might be worth trying two in parallel.
I understand that's largely what his plotter is meant to avoid, but 2 is still better than 12!

I'm not 100% sure in Windows, but some users have reported that it is working by using all cores.
In Linux I know that Docker can use 100% of CPU power, since I manage cluster using Kuberntes that basically uses Docker and you can manage the amount of resources you want per container

dual e5-2697v2

You don't have 24 threads per core, you have 2 threads per core, a total of 24 threads: https://ark.intel.com/content/www/us/en/ark/products/75283/intel-xeon-processor-e5-2697-v2-30m-cache-2-70-ghz.html
Maybe that

So, your CPU have 12 cores and 24 threads (2 threads per core).
Can you share a print of where you're evaluating the core usage? Maybe I can explain to you how to analyze the data

In any case, @madMAx43v3r can explain better, but I think the -r flag relates to physical cores not threads. So, the maximum number you could use is 12

In any case, @madMAx43v3r can explain better, but I think the -r flag relates to physical cores not threads. So, the maximum number you could use is 12

In total is have 24 core

In any case, @madMAx43v3r can explain better, but I think the -r flag relates to physical cores not threads. So, the maximum number you could use is 12

In total is have 24 core(48 threads)

Your CPU have 24 threads, like the official Intel doc: https://ark.intel.com/content/www/us/en/ark/products/75283/intel-xeon-processor-e5-2697-v2-30m-cache-2-70-ghz.html

In any case, @madMAx43v3r can explain better, but I think the -r flag relates to physical cores not threads. So, the maximum number you could use is 12

In total is have 24 core(48 threads)

Unless you have 2 of that CPU. Do you have 2 CPUs in your rig?

If yuo have a multi-CPU rig, you should follow this: https://docs.docker.com/desktop/multi-arch/

I do have multiple CPUs, thats the problem

I do have multiple CPUs, thats the problem

Sorry, I missed that. Usually when people say 2 CPU they mean 2 cores hahaha

Well, I'm not 100% sure regarding docker multiple CPU support. I suggest you open a question inside the Docker community regarding that. Probably you need to configure that specifically to support your multiple CPU arch

In any case. This problem is not related to this plotter. If you could run a Docker container with your both physical CPUs you can run this too

In any case. This problem is not related to this plotter. If you could run a Docker container with your both physical CPUs you can run this too

Yes, that why I mentioned earlier that WSL2 lacks multi-cpu support

You need to use odelucca/chia-plotter not -odelucca/chiaplotter (you added an unnecessary -)

In any case. This problem is not related to this plotter. If you could run a Docker container with your both physical CPUs you can run this too

Yes, that why I mentioned earlier that WSL2 lacks multi-cpu support. Anyways I'll keep digging and update here.

Cool, let me know you learn anything new!
I'm going to dig a little too

You need to use odelucca/chia-plotter not -odelucca/chiaplotter (you added an unnecessary -)

<-m 8000m> not -m 8000

You need to use odelucca/chia-plotter not -odelucca/chiaplotter (you added an unnecessary -)

<-m 8000m> not -m 8000

Use this command:
docker run -v N:/mnt/harvester -v E:/mnt/farm -m 1200 --cpus 12 odelucca/chia-plotter -t /mnt/harvester -d /mnt/farmer -p <your pool key> -f <your-farm-key>

In any case. This problem is not related to this plotter. If you could run a Docker container with your both physical CPUs you can run this too

Yes, that why I mentioned earlier that WSL2 lacks multi-cpu support. Anyways I'll keep digging and update here.

Everywhere I look it seems that Docker is agnostic for multi-CPU computers. In a nutshell, it uses all CPU power is available for you.
The only place I can think of you should tweak is in the HypverV configs directly. That could only be related to how HyperV handles multi-CPU

@NikXO6 try setting the --cpuset-cpus to 0-1 it seems that this is an option for Docker

Unable to find image 'odelucca/chia-plotter:latest' locally
latest: Pulling from odelucca/chia-plotter
540db60ca938: Pull complete
b4276492a2b1: Pull complete
2d20cf037a64: Downloading [===========================================>       ]  49.37MB/56.36MB
c2c836524c7d: Download complete
Loading.......................

Unable to find image 'odelucca/chia-plotter:latest' locally
latest: Pulling from odelucca/chia-plotter
540db60ca938: Pull complete
b4276492a2b1: Pull complete
2d20cf037a64: Downloading [===========================================> ] 49.37MB/56.36MB
c2c836524c7d: Download complete
Loading.......................

Yep, it is working. In the first run you need to download the Docker image. Just wait

It would be cool if it could use variables to hold the argument details. Unraid has a built in docker template that you can edit and manage commands easily but adding actual arguments is much harder.

It would be cool if it could use variables to hold the argument details. Unraid has a built in docker template that you can edit and manage commands easily but adding actual arguments is much harder.

Nice idea!
My first option was using environment variables for that, but in the end I gave up that and focused on providing a simple Docker image. But we could do something like that pretty easily!

Run the exact command I sent you (just changing the farm and pool keys). You're changing the -t and -d arguments and that is breaking your command.
Also, don't add a space in the -f command

It would be cool if it could use variables to hold the argument details. Unraid has a built in docker template that you can edit and manage commands easily but adding actual arguments is much harder.

Nice idea!
My first option was using environment variables for that, but in the end I gave up that and focused on providing a simple Docker image. But we could do something like that pretty easily!

Yeah I didn't think it would be that hard to do but would make usage on unraid much much easier. Same for portainer I am guessing (they use a similar management setup).
I was trying to just run the docker in -it mode to mess around with it but it shuts down after starting without the arguments in place. Not a big deal but I like poking around inside the container before setting it free lol. Makes debugging easier as well.

Now if we could get this integrated into the https://github.com/users/guydavis/packages/container/package/machinaris docker so we have a gui to manage it, it would be darn near perfect lol.

Now if we could get this integrated into the https://github.com/users/guydavis/packages/container/package/machinaris docker so we have a webgui to manage it, it would be darn near perfect lol.

I'm going to play a little bit with that image, but it probably not be that easy, since probably machinaris checks the chia default plotter processes directly.
But, I'll give it a try.

NO！！！

Now if we could get this integrated into the https://github.com/users/guydavis/packages/container/package/machinaris docker so we have a webgui to manage it, it would be darn near perfect lol.

I'm going to play a little bit with that image, but it probably not be that easy, since probably machinaris checks the chia default plotter processes directly.
But, I'll give it a try.

He has been pretty active on the unraid forums and added a lot of features so far, if this pans out he just might be open to working with you.
I know that you can run plotman by itself inside that docker by inputting the keys. So seems like this should be able to be combined into that workflow.
Heck if it was combined with plotman then it would get pulled into that docker with a simple update come to think of it.

NO！！！

Try this instead:
docker run -v N:\:/mnt/harvester -v E:\:/mnt/farm -m 1200 --cpus 12 odelucca/chia-plotter -t /mnt/harvester -d /mnt/farmer -p <your pool key> -f <your-farm-key> -r 12

And please be polite. We are helping each other here 🤦🏻 no one is earning nothing to do this kkkk

Now if we could get this integrated into the https://github.com/users/guydavis/packages/container/package/machinaris docker so we have a webgui to manage it, it would be darn near perfect lol.

I'm going to play a little bit with that image, but it probably not be that easy, since probably machinaris checks the chia default plotter processes directly.
But, I'll give it a try.

He has been pretty active on the unraid forums and added a lot of features so far, if this pans out he just might be open to working with you.
I know that you can run plotman by itself inside that docker by inputting the keys. So seems like this should be able to be combined into that workflow.
Heck if it was combined with plotman then it would get pulled into that docker with a simple update come to think of it. So getting it integrated with plotman might be the better solution.
Just random ideas for a GUI lover like myself lol.

I'm using this guy: https:/farmr.net
It would be awesome if swar or plotman integrated with this plotter.

PS C:\Users\Administrator> docker run -v N::/mnt/harvester -v E::/mnt/farm -m 8000m --cpus 12 odelucca/chia-plotter -t /mnt/harvester -d /mnt/farmer -p aafaa8e9535f970dcccb141657d83a95a25b0b5b9cb681a35eb55d8131033c2c9914ce4bc9afefc15f0ed16d749ae8ad -f 8d67544f9196786fc19e3b7830a2f44e6d0f679b385809b5f4905d335ec78aa860457d0ae69c9ac31d0d786d6ce20644 -r 12
Invalid : /mnt/harvester (needs trailing '/' or '')
excuseme

PS C:\Users\Administrator> docker run -v N::/mnt/harvester -v E::/mnt/farm -m 8000m --cpus 12 odelucca/chia-plotter -t /mnt/harvester -d /mnt/farmer -p  -f  -r 12
Invalid : /mnt/harvester (needs trailing '/' or '')

PS C:\Users\Administrator> docker run -v N::/mnt/harvester -v E::/mnt/farm -m 8000m --cpus 12 odelucca/chia-plotter -t /mnt/harvester -d /mnt/farmer -p  -f  -r 12
Invalid : /mnt/harvester (needs trailing '/' or '')
excuseme

Sorry, I forgot the trailing slash. Try this:
docker run -v N:\:/mnt/harvester -v E:\:/mnt/farm -m 8000m --cpus 12 odelucca/chia-plotter -t /mnt/harvester/ -d /mnt/farmer/ -p  -f  -r 12

Also it should be n:/mnt not n::/ (same with e::/) - I'd expect that to
fail or use problems eventually.
On Thu, Jun 10, 2021 at 1:49 PM Daniel De Lucca @.***>
wrote:

PS C:\Users\Administrator> docker run -v N::/mnt/harvester -v E::/mnt/farm
-m 8000m --cpus 12 odelucca/chia-plotter -t /mnt/harvester -d /mnt/farmer
-p -f -r 12
Invalid : /mnt/harvester (needs trailing '/' or '')
excuseme
Sorry, I forgot the trailing slash. Try this:
docker run -v N::/mnt/harvester -v E::/mnt/farm -m 8000m --cpus 12 odelucca/chia-plotter -t /mnt/harvester/ -d /mnt/farmer/ -p  -f  -r 12
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/madMAx43v3r/chia-plotter/pull/102#issuecomment-858836784,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABDAJZS33EGU6G7YK2J4MDTSD3MNANCNFSM46NEAUDA
.

PS C:\Users\Administrator> docker run -v N::/mnt/harvester -v E::/mnt/farm -m 8000m --cpus 12 odelucca/chia-plotter -t /mnt/harvester -d /mnt/farmer -p  -f  -r 12
Invalid : /mnt/harvester (needs trailing '/' or '')

docker run -v N:/mnt/harvester -v E:/mnt/farm -m 8000m --cpus 12 odelucca/chia-plotter -t /mnt/harvester/ -d /mnt/farmer/ -p  -f  -r 12

apologies for the question, running a 3990x 64 core, dont seem to be able to utilise more than a few cores, and or, unable to utilise more cores with multiple instances running, eg, 8 using 8 cores only seems to use the same cpu as 1 8 core. any thoughts?

apologies for the question, running a 3990x 64 core, dont seem to be able to utilise more than a few cores, and or, unable to utilise more cores with multiple instances running, eg, 8 using 8 cores only seems to use the same cpu as 1 8 core. any thoughts?

How are you measuring how many cores the plotter is using? By the % of the CPU usage?

I use process lasso, if i open 1 docker command then cpu uses around 8-14%, if i open a further instance, either 1 or 6 etc then cpu usage doesn't change, but each process slows down. It wont use above approx 6/8 cores. the normal chia plotter if you set threads to 4 for example and open 10 then you will use 40 threads.
I have never used docker prior to today so there may be something I am doing wrong but not sure what

the docker process seems to run inside the top app the vmmem, this doesn't change no matter what threads i set, or how many instances i open.

I use process lasso, if i open 1 docker command then cpu uses around 8-14%, if i open a further instance, either 1 or 6 etc then cpu usage doesn't change, but each process slows down. It wont use above approx 6/8 cores. the normal chia plotter if you set threads to 4 for example and open 10 then you will use 40 threads.
I have never used docker prior to today so there may be something I am doing wrong but not sure what

While executing docker run command you can set the --cpus property to the exact amount of CPU you want (it should be all your cores by default in Docker). You can do the same thing regarding RAM with the -m property.
In this PR you can check some comments above, I've explained how to do that.
In any case, as I've said to other users, you should not consider the CPU usage as your primary metric to define whether the application is using all cores or not.
I'll give you an example:
Consider that you have only 4 cores and that launching the program in only a single core consumes 100% of that core. So, if you launch that program in a single core, you will see that core at 100% and all your other cores at 0%, right? If you check the % used of your CPU you will see that it is using 25%
If you scale the number of cores of that same program to use all 4 cores, all your 4 CPUs would be using 25% of their power, and your % used of your CPU will still be 25%
Can you see? The % used of your CPU has nothing to do with the amount of cores used.

The scenario you're describing means that your bottleneck is elsewhere, maybe in your NVMe memory.

I'll give you my example:
I have a 5900X with a 970EVO NVMe
I'm running the plotter with all my 12 cores. But my CPU usage is ~15%
This happens because the bottleneck of my system is in my memory. My CPU is WAY faster than my memory, so it will never use 100% of it since my memory is the bottleneck.

It's not nvme, I have a 9300 max 12.8tb drive on here, it can run 40 normal chia plotting instances without getting to 50%

Check the CPU Threads in your screenshot, it tells you the amount of threads used by that process

As you can see, the vmmem process is using 130 threads. How many threads your CPU have?

I have tried anything between 8 and 64 cores setting cores as you have kindly shown in posts above, it makes no difference

9300 max

9300 max is a type of NVMe memory

I have tried anything between 8 and 64 cores setting cores as you have kindly shown in posts above, it makes no difference

So, check the print you made from your monitor software. As you can see there you're already using all the threads. If your CPU is not hitting higher usage % it means your bottleneck is elsewhere

the threads number there is not related to cores used

the threads number there is not related to cores used

What is the model of your CPU?

amd 3990x 64/128 threadripper, I can run 40 chia plotting instances on this machine in parallel (normal chia plotter) and can hit 100% cpu usage

if I open 20 of the docker instances it just doesn't use any more cpu, it's like it will only use 8 cores and wont scale properly

I see.
Well, there are a few things you could try:
First, you could check your docker configs and confirm that docker is not contained to use only 8 cores (I doubt that this would be the issue, but, you should try it)
But, as far as I know, this plotter is optimized to fast serial plotting. The system you're using seems to be designed to compensate the low throughput of your NVMe with a huge amount of parallel plotting. I don't see a way for you to achieve the same result with this plotter. This is designed for more balanced systems, but @madMAx43v3r could confirm what I'm saying

I don't know your plotting speed with the default chia-plotter, but with the details you gave me I image that your machine spends a lot of hours to plot a single plot, and you compensated that with 40 parallel plots

The nvme on this rig is about the best you can get, it not the nvme. This single nvme gets 10TB per day with the normal plotter

The nvme on this rig is about the best you can get, it not the nvme. This single nvme gets 10TB per day with the normal plotter

I know that it is the best you can get, but your CPU is WAY faster than any NVMe

It doesn't matter the speed, brand or whatever. You would never achieve a scenario where you can hit 100% usage of your CPU, since your CPU is way faster than your memory (or any memory)

What is the average time to plot a k32 plot with your system and the normal chia plotter?
And what is the time to plot that same plot with this plotter?

Sure, I have tried explicitly setting with a wslconfig file to use 64 cores and all memory but it wont increase.

Sure, I have tried explicitly setting with a wslconfig file to use 64 cores and all memory but it wont increase.

Well, if you're running 40 parallel plots and getting 10TB per day it seems that you're making 12h per plot more or less, right? (with the normal plotter)

What is the average time to plot a k32 plot with your system and the normal chia plotter?
And what is the time to plot that same plot with this plotter?

Around 6-8 hours for 1 plot doing 30/40 in parallel

What is the average time to plot a k32 plot with your system and the normal chia plotter?
And what is the time to plot that same plot with this plotter?

Around 6-8 hours for 1 plot doing 30/40 in parallel

And with this plotter? You know the elapsed time?

I haven't finished a plot yet as I cant get it to use all cores on a single plot

I haven't finished a plot yet as I cant get it to use all cores on a single plot

That's the point. You're already using it. The problem is that this plotter is not optimized for parallel plotting.

PS C:\Users\Administrator> docker run -v N::/mnt/harvester -v E::/mnt/farm -m 8000m --cpus 12 odelucca/chia-plotter -t /mnt/harvester/ -d /mnt/farm/ -p xxxxxxxxxxx-f xxxxxxxxxxxx -r 12
Final Directory: /mnt/farm/
Number of Plots: 1
Process ID: 1
Number of Threads: 12
Number of Buckets: 2^7 (128)
Pool Public Key:   xxxxxxxxxxxxxxxxx
Farmer Public Key: xxxxxxxxxxxxxxxxx
Working Directory:   /mnt/harvester/
Working Directory 2: /mnt/harvester/
Plot Name: plot-k32-2021-06-10-18-12-18730e5ee57fcb842820d6e2c337fc1179a9d8183f03f8e1aab11c3c5274f626
[P1] Table 1 took 140.945 sec
[P1] Table 2 took 771.07 sec, found<PHONE_NUMBER> matches
[P1] Table 3 took 994.483 sec, found<PHONE_NUMBER> matches
[P1] Table 4 took 1199.64 sec, found<PHONE_NUMBER> matches
[P1] Table 5 took 1161.99 sec, found<PHONE_NUMBER> matches
[P1] Table 6 took 1037.3 sec, found<PHONE_NUMBER> matches
[P1] Table 7 took 741.772 sec, found<PHONE_NUMBER> matches
Phase 1 took 6048.19 sec
[P2] max_table_size =<PHONE_NUMBER>
[P2] Table 7 scan took 138.975 sec
[P2] Table 7 rewrite took 332.978 sec, dropped 0 entries (0 %)
[P2] Table 6 scan took 136.21 sec
[P2] Table 6 rewrite took 323.182 sec, dropped 581301096 entries (13.5348 %)
[P2] Table 5 scan took 130.578 sec
[P2] Table 5 rewrite took 319.152 sec, dropped 761944890 entries (17.7408 %)
[P2] Table 4 scan took 138.267 sec
[P2] Table 4 rewrite took 321.124 sec, dropped 828842498 entries (19.2981 %)
[P2] Table 3 scan took 130.047 sec
[P2] Table 3 rewrite took 308.125 sec, dropped 855063270 entries (19.9085 %)
[P2] Table 2 scan took 129.171 sec
[P2] Table 2 rewrite took 291.442 sec, dropped 865556179 entries (20.1527 %)
Phase 2 took 2704.51 sec
Wrote plot header with 268 bytes
[P3-1] Table 2 took 344.348 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 2 took 413.961 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 3 took 400.209 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 3 took 425.636 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 4 took 410.315 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 4 took 434.67 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 5 took 417.601 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 5 took 436.829 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 6 took 433.309 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 6 took 457.615 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 7 took 394.888 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 7 took 533.215 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
Phase 3 took 5105.23 sec, wrote<PHONE_NUMBER>1 entries to final plot
[P4] Starting to write C1 and C3 tables
[P4] Finished writing C1 and C3 tables
[P4] Writing C2 table
[P4] Finished writing C2 table
Phase 4 took 850.827 sec, final plot size is<PHONE_NUMBER>62 bytes
Total plot creation time was 14708.9 sec
Started copy to /mnt/farm/plot-k32-2021-06-10-18-12-18730e5ee57fcb842820d6e2c337fc1179a9d8183f03f8e1aab11c3c5274f626.plot
Copy to /mnt/farm/plot-k32-2021-06-10-18-12-18730e5ee57fcb842820d6e2c337fc1179a9d8183f03f8e1aab11c3c5274f626.plot finished, took 1571.36 sec, 66.0514 MB/s avg.
PS C:\Users\Administrator
X5650,4.0GHz  Threads: 12  sata:480m/s
Total plot creation time was 14708.9 sec

No but the point it you can use more than 1 core in stage 2-4 right, thats what makes it so fast, for some reason I cant get the docker program to utilise the hardware

@scerbera Your system is designed entirely for parallel plotting, and this plotter optimized the hardware usage of a single process. So, it will achieve the maximum efficiency it can on a single plotting process.
The default Chia plotter is way slower, and by being slower it open some opportunities for your hardware to paralelize the work. This plotter wont. Even if you launch 100 Docker processes, only a single one would be able to use your NVMe memory each time

Because when they use it optimizes to have the fastest time possible at that plot, but your system is designed to perform well in  parallel, which is not the case for this plotter.

PS C:\Users\Administrator> docker run -v N::/mnt/harvester -v E::/mnt/farm -m 8000m --cpus 12 odelucca/chia-plotter -t /mnt/harvester/ -d /mnt/farm/ -p xxxxxxxxxxx-f xxxxxxxxxxxx -r 12
Final Directory: /mnt/farm/
Number of Plots: 1
Process ID: 1
Number of Threads: 12
Number of Buckets: 2^7 (128)
Pool Public Key: xxxxxxxxxxxxxxxxx
Farmer Public Key: xxxxxxxxxxxxxxxxx
Working Directory: /mnt/harvester/
Working Directory 2: /mnt/harvester/
Plot Name: plot-k32-2021-06-10-18-12-18730e5ee57fcb842820d6e2c337fc1179a9d8183f03f8e1aab11c3c5274f626
[P1] Table 1 took 140.945 sec
[P1] Table 2 took 771.07 sec, found<PHONE_NUMBER> matches
[P1] Table 3 took 994.483 sec, found<PHONE_NUMBER> matches
[P1] Table 4 took 1199.64 sec, found<PHONE_NUMBER> matches
[P1] Table 5 took 1161.99 sec, found<PHONE_NUMBER> matches
[P1] Table 6 took 1037.3 sec, found<PHONE_NUMBER> matches
[P1] Table 7 took 741.772 sec, found<PHONE_NUMBER> matches
Phase 1 took 6048.19 sec
[P2] max_table_size =<PHONE_NUMBER>
[P2] Table 7 scan took 138.975 sec
[P2] Table 7 rewrite took 332.978 sec, dropped 0 entries (0 %)
[P2] Table 6 scan took 136.21 sec
[P2] Table 6 rewrite took 323.182 sec, dropped 581301096 entries (13.5348 %)
[P2] Table 5 scan took 130.578 sec
[P2] Table 5 rewrite took 319.152 sec, dropped 761944890 entries (17.7408 %)
[P2] Table 4 scan took 138.267 sec
[P2] Table 4 rewrite took 321.124 sec, dropped 828842498 entries (19.2981 %)
[P2] Table 3 scan took 130.047 sec
[P2] Table 3 rewrite took 308.125 sec, dropped 855063270 entries (19.9085 %)
[P2] Table 2 scan took 129.171 sec
[P2] Table 2 rewrite took 291.442 sec, dropped 865556179 entries (20.1527 %)
Phase 2 took 2704.51 sec
Wrote plot header with 268 bytes
[P3-1] Table 2 took 344.348 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 2 took 413.961 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 3 took 400.209 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 3 took 425.636 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 4 took 410.315 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 4 took 434.67 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 5 took 417.601 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 5 took 436.829 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 6 took 433.309 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 6 took 457.615 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 7 took 394.888 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 7 took 533.215 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
Phase 3 took 5105.23 sec, wrote<PHONE_NUMBER>1 entries to final plot
[P4] Starting to write C1 and C3 tables
[P4] Finished writing C1 and C3 tables
[P4] Writing C2 table
[P4] Finished writing C2 table
Phase 4 took 850.827 sec, final plot size is<PHONE_NUMBER>62 bytes
Total plot creation time was 14708.9 sec
Started copy to /mnt/farm/plot-k32-2021-06-10-18-12-18730e5ee57fcb842820d6e2c337fc1179a9d8183f03f8e1aab11c3c5274f626.plot
Copy to /mnt/farm/plot-k32-2021-06-10-18-12-18730e5ee57fcb842820d6e2c337fc1179a9d8183f03f8e1aab11c3c5274f626.plot finished, took 1571.36 sec, 66.0514 MB/s avg.
PS C:\Users\Administrator
X5650,4.0GHz Threads: 12 sata:480m/s
Total plot creation time was 14708.9 sec

Pretty cool :) Do you know your previous trimmings?

@scerbera Your system is designed entirely for parallel plotting, and this plotter optimized the hardware usage of a single process. So, it will achieve the maximum efficiency it can on a single plotting process.
The default Chia plotter is way slower, and by being slower it open some opportunities for your hardware to paralelize the work. This plotter wont. Even if you launch 100 Docker processes, only a single one would be able to use your NVMe memory each time

I cant get the docker to use even 5% of the nvme speed.

The problem is that your system is designed to compensate the IO bound of the original plotter with a huge amount of parallel process. That would not work with this plotter

Think that way.
Your CPU is fast. REALLY fast.
A NVMe memory (NO MATTER THE MEMORY) is WAY slower than your CPU
It doesn't matter if your CPU can run at 100 miles per hour. If the NVMe memory can only run at 20 miles per hour your CPU would run that way.
In the original plotter, you created a structure where you compensate that problem by attaching your CPU to 40 processes. So, on each process your CPU would be slow, but you compensate with the quantity.
This plotter is different. This plotter increases the speed of your NVMe so it can follow an optimal rate like your CPU

The users that are being able to achieve plotting in 10 minutes, 15 minutes. They're not using 12 tb of NVMe with a threadripper. They're using a threadripper with 128GB of RAM and using that ram as their plotting memory

Yeah, i have tried to use a ram disk, it still goes the same speed as with nvme. I am saying that it is something in the docker setup preventing it working

Yeah, i have tried to use a ram disk, it still goes the same speed as with nvme. I am saying that it is something in the docker setup preventing it working

How are you measuring the speed of the RAM and NVMe?
It is absolutely impossible that your RAM to achieve the same speed as a NVMe

The first thing i tried was a ramdisk, tried with 8/16/32/64 threads, each time the docker process would only use around 8% of the cpu

PS C:\Users\Administrator> docker run -v N::/mnt/harvester -v E::/mnt/farm -m 8000m --cpus 12 odelucca/chia-plotter -t /mnt/harvester/ -d /mnt/farm/ -p xxxxxxxxxxx-f xxxxxxxxxxxx -r 12
Final Directory: /mnt/farm/
Number of Plots: 1
Process ID: 1
Number of Threads: 12
Number of Buckets: 2^7 (128)
Pool Public Key: xxxxxxxxxxxxxxxxx
Farmer Public Key: xxxxxxxxxxxxxxxxx
Working Directory: /mnt/harvester/
Working Directory 2: /mnt/harvester/
Plot Name: plot-k32-2021-06-10-18-12-18730e5ee57fcb842820d6e2c337fc1179a9d8183f03f8e1aab11c3c5274f626
[P1] Table 1 took 140.945 sec
[P1] Table 2 took 771.07 sec, found<PHONE_NUMBER> matches
[P1] Table 3 took 994.483 sec, found<PHONE_NUMBER> matches
[P1] Table 4 took 1199.64 sec, found<PHONE_NUMBER> matches
[P1] Table 5 took 1161.99 sec, found<PHONE_NUMBER> matches
[P1] Table 6 took 1037.3 sec, found<PHONE_NUMBER> matches
[P1] Table 7 took 741.772 sec, found<PHONE_NUMBER> matches
Phase 1 took 6048.19 sec
[P2] max_table_size =<PHONE_NUMBER>
[P2] Table 7 scan took 138.975 sec
[P2] Table 7 rewrite took 332.978 sec, dropped 0 entries (0 %)
[P2] Table 6 scan took 136.21 sec
[P2] Table 6 rewrite took 323.182 sec, dropped 581301096 entries (13.5348 %)
[P2] Table 5 scan took 130.578 sec
[P2] Table 5 rewrite took 319.152 sec, dropped 761944890 entries (17.7408 %)
[P2] Table 4 scan took 138.267 sec
[P2] Table 4 rewrite took 321.124 sec, dropped 828842498 entries (19.2981 %)
[P2] Table 3 scan took 130.047 sec
[P2] Table 3 rewrite took 308.125 sec, dropped 855063270 entries (19.9085 %)
[P2] Table 2 scan took 129.171 sec
[P2] Table 2 rewrite took 291.442 sec, dropped 865556179 entries (20.1527 %)
Phase 2 took 2704.51 sec
Wrote plot header with 268 bytes
[P3-1] Table 2 took 344.348 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 2 took 413.961 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 3 took 400.209 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 3 took 425.636 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 4 took 410.315 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 4 took 434.67 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 5 took 417.601 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 5 took 436.829 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 6 took 433.309 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 6 took 457.615 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 7 took 394.888 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 7 took 533.215 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
Phase 3 took 5105.23 sec, wrote<PHONE_NUMBER>1 entries to final plot
[P4] Starting to write C1 and C3 tables
[P4] Finished writing C1 and C3 tables
[P4] Writing C2 table
[P4] Finished writing C2 table
Phase 4 took 850.827 sec, final plot size is<PHONE_NUMBER>62 bytes
Total plot creation time was 14708.9 sec
Started copy to /mnt/farm/plot-k32-2021-06-10-18-12-18730e5ee57fcb842820d6e2c337fc1179a9d8183f03f8e1aab11c3c5274f626.plot
Copy to /mnt/farm/plot-k32-2021-06-10-18-12-18730e5ee57fcb842820d6e2c337fc1179a9d8183f03f8e1aab11c3c5274f626.plot finished, took 1571.36 sec, 66.0514 MB/s avg.
PS C:\Users\Administrator
X5650,4.0GHz Threads: 12 sata:480m/s
Total plot creation time was 14708.9 sec

Pretty cool :) Do you know your previous trimmings?

nvme Previous 8.5 hours . I tried it with 970 EVO NVME and now

The first thing i tried was a ramdisk, tried with 8/16/32/64 threads, each time the docker process would only use around 8% of the cpu

As I've said, % of CPU used is not equal as amount of threads used.

Docker isn't the issue. Docker is used by absolutely every big website you use on the internet. They're all hosted under Docker containers. I train deep neural networks all the time inside Docker containers.
As I've said before, Docker don't limit your hardware usage unless you specifically tell it to do so. You're blaming Docker but the reality is that your system is not designed for fast serial plotting. It is designed for intensive parallel plotting.

And, to be honest, I don't think you should try to change! I truly don't think that you would be able to achieve more than 10TB per day with this kind of plotting strategy

PS C:\Users\Administrator> docker run -v N::/mnt/harvester -v E::/mnt/farm -m 8000m --cpus 12 odelucca/chia-plotter -t /mnt/harvester/ -d /mnt/farm/ -p xxxxxxxxxxx-f xxxxxxxxxxxx -r 12
Final Directory: /mnt/farm/
Number of Plots: 1
Process ID: 1
Number of Threads: 12
Number of Buckets: 2^7 (128)
Pool Public Key: xxxxxxxxxxxxxxxxx
Farmer Public Key: xxxxxxxxxxxxxxxxx
Working Directory: /mnt/harvester/
Working Directory 2: /mnt/harvester/
Plot Name: plot-k32-2021-06-10-18-12-18730e5ee57fcb842820d6e2c337fc1179a9d8183f03f8e1aab11c3c5274f626
[P1] Table 1 took 140.945 sec
[P1] Table 2 took 771.07 sec, found<PHONE_NUMBER> matches
[P1] Table 3 took 994.483 sec, found<PHONE_NUMBER> matches
[P1] Table 4 took 1199.64 sec, found<PHONE_NUMBER> matches
[P1] Table 5 took 1161.99 sec, found<PHONE_NUMBER> matches
[P1] Table 6 took 1037.3 sec, found<PHONE_NUMBER> matches
[P1] Table 7 took 741.772 sec, found<PHONE_NUMBER> matches
Phase 1 took 6048.19 sec
[P2] max_table_size =<PHONE_NUMBER>
[P2] Table 7 scan took 138.975 sec
[P2] Table 7 rewrite took 332.978 sec, dropped 0 entries (0 %)
[P2] Table 6 scan took 136.21 sec
[P2] Table 6 rewrite took 323.182 sec, dropped 581301096 entries (13.5348 %)
[P2] Table 5 scan took 130.578 sec
[P2] Table 5 rewrite took 319.152 sec, dropped 761944890 entries (17.7408 %)
[P2] Table 4 scan took 138.267 sec
[P2] Table 4 rewrite took 321.124 sec, dropped 828842498 entries (19.2981 %)
[P2] Table 3 scan took 130.047 sec
[P2] Table 3 rewrite took 308.125 sec, dropped 855063270 entries (19.9085 %)
[P2] Table 2 scan took 129.171 sec
[P2] Table 2 rewrite took 291.442 sec, dropped 865556179 entries (20.1527 %)
Phase 2 took 2704.51 sec
Wrote plot header with 268 bytes
[P3-1] Table 2 took 344.348 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 2 took 413.961 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 3 took 400.209 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 3 took 425.636 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 4 took 410.315 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 4 took 434.67 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 5 took 417.601 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 5 took 436.829 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 6 took 433.309 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 6 took 457.615 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 7 took 394.888 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 7 took 533.215 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
Phase 3 took 5105.23 sec, wrote<PHONE_NUMBER>1 entries to final plot
[P4] Starting to write C1 and C3 tables
[P4] Finished writing C1 and C3 tables
[P4] Writing C2 table
[P4] Finished writing C2 table
Phase 4 took 850.827 sec, final plot size is<PHONE_NUMBER>62 bytes
Total plot creation time was 14708.9 sec
Started copy to /mnt/farm/plot-k32-2021-06-10-18-12-18730e5ee57fcb842820d6e2c337fc1179a9d8183f03f8e1aab11c3c5274f626.plot
Copy to /mnt/farm/plot-k32-2021-06-10-18-12-18730e5ee57fcb842820d6e2c337fc1179a9d8183f03f8e1aab11c3c5274f626.plot finished, took 1571.36 sec, 66.0514 MB/s avg.
PS C:\Users\Administrator
X5650,4.0GHz Threads: 12 sata:480m/s
Total plot creation time was 14708.9 sec

Pretty cool :) Do you know your previous trimmings?

nvme Previous 8.5 hours . I tried it with 970 EVO NVME and now

Almost 60% improvement. Pretty cool!

I appreciate your time here. But there is no reason why this should not be able to run using 32 cpu threads for example, right?

I appreciate your time here. But there is no reason why this should not be able to run using 32 cpu threads for example, right?

I've already said that you're already using all your cores. Just check the screenshot you shared. It explicitly says that the process is using 130 threads.
It is impossible to run 130 threads without using all your cores. Each core has 2 threads.

Your screenshot says exactly that:
CPU Affinity (cores being used): 0-63
Threads: 130
Each CPU has 2 threads, it is impossible to launch 130 threads without using all cores.
The problem is that the launched threads are waiting for your NVMe memory to finish whatever another thread is doing. That's why your CPU usage is low.

I appreciate your time here. But there is no reason why this should not be able to run using 32 cpu threads for example, right?

I've already said that you're already using all your cores. Just check the screenshot you shared. It explicitly says that the process is using 130 threads.
It is impossible to run 130 threads without using all your cores. Each core has 2 threads.

process lasso is pretty good at telling you whats going on, honestly that 130 number isn't relevant here, explorer is using 178 threads, another process is using 400

If you want to test it you can. Do you have a spare NVMe memory? Just plug it in your PC and launch 2 Docker processes. One In each memory.
You should see 2x the CPU usage

I appreciate your time here. But there is no reason why this should not be able to run using 32 cpu threads for example, right?

I've already said that you're already using all your cores. Just check the screenshot you shared. It explicitly says that the process is using 130 threads.
It is impossible to run 130 threads without using all your cores. Each core has 2 threads.

process lasso is pretty good at telling you whats going on, honestly that 130 number isn't relevant here, explorer is using 178 threads, another process is using 400

Well, if you're using a software that is telling you that a given process is using 400 threads while your CPU has only 128 threads, well. I don't know why you're using it. It is clearly buggy

There is no other concept for Thread that isn't a CPU thread. That is exactly what the word thread means

right now my nvme is running at 250/300mb/s, this drive can run at 3500mb/s 24hours a day. I have other nvme on here i will open a new docker using that also

right now my nvme is running at 250/300mb/s, this drive can run at 3500mb/s 24hours a day. I have other nvme on here i will open a new docker using that also

3500mb/s is a sequential read figure, NOT a random read/write figure. The random figure (what this plotter does) will be considerably slower.

right now my nvme is running at 250/300mb/s, this drive can run at 3500mb/s 24hours a day. I have other nvme on here i will open a new docker using that also

The 3500mb/s speed is for serial writing, only in specific benchmark scenarios.
While doing random writing that number decreases, a LOT
A since you're launching parallel plots, your writes would never be serial.

right now my nvme is running at 250/300mb/s, this drive can run at 3500mb/s 24hours a day. I have other nvme on here i will open a new docker using that also

3500mb/s is a sequential read figure, NOT a random read/write figure. The random figure (what this plotter does) will be considerably slower.

Exactly.
I've done some testings a few weeks ago. A 980EVO (fastest in the market) sometimes reaches 500mb/s while doing random writings.
Those speeds are just for marketing purposes. You can only achieve those in very specific benchmark scenarios.

Ok, I tried that, there is no change at all. now that bandwidth is being spread between multiple drives.

This is my laptop ssd - 1800mb/s sequential reads but only 42mb/s 4kb random reads.

Ok, I tried that, there is no change at all. now that bandwidth is being spread between multiple drives.

My suggestion for you is: keep using the default plotter. It is optimized for parallel plotting and your system performs EXTREMELY well in it.
If you want to try this plotter, I suggest building a more balanced system, maybe invest in more RAM and try to achieve the 10-20min mark :)

Ok, I tried that, there is no change at all. now that bandwidth is being spread between multiple drives.

My suggestion for you is: keep using the default plotter. It is optimized for parallel plotting and your system performs EXTREMELY well in it.
If you want to try this plotter, I suggest building a more balanced system, maybe invest in more RAM and try to achieve the 10-20min mark :)

Exactly. Pechy's optimised chia plotter (https://github.com/pechy/chiapos) would be best for you because it does parallelise well.

This is an enterprise drive, it can run at those speeds all day doing random writes, the bigger the queue depth the faster it gets. I'd really like to get to the bottom of why this isnt working.  I was hoping not to have to put linux on these as I'm not so familiar.

What drive do you have?

No SSD can achieve 3500mbps with random writings. It doesn't matter if it is M2, U2, or whatever.
Even if you were able to achieve the 15minute mark, the maximum amount you could plot a day would be 96 plots, which is less than you can do with your parallel setup

What drive do you have?

micron 9300 max 12.8tb

https://www.tweaktown.com/articles/8976/micron-9300-series-enterprise-ssd-review/index.html
Random write of 300mbps

The exact amount that you've reported.

No SSD can achieve 3500mbps with random writings. It doesn't matter if it is M2, U2, or whatever.
Even if you were able to achieve the 15minute mark, the maximum amount you could plot a day would be 96 plots, which is less than you can do with your parallel setup

this rig does 100 a day only using 60% cpu, that is the reason for running many plots with the normal chia plotter, you are limited as it is only single threaded in stage 2-4 making it impossible to balance plots in stage 1, by running 8 threads through all stages I think id' see 14tb a day

as I've said. Your setup is optimized to parallel plot, and that is amazing. My suggestion is: stop blaming Docker and keep at the optimal structure of your setup.
Even if you do some magic and achieve the 15min, you would still plot less than with parallel plot

And, as I've said, this plotter is optimized for serial plotting!
You would waster 12TB of NVMe by plotting in serial?

and with a single NVMe memory, if you launch 200 processes that would be 200 processes competing in the same bottleneck

And, as I've said, this plotter is optimized for serial plotting!
You would waster 12TB of NVMe by plotting in serial?

no of course not, I dont feel like you are actually listening to what I'm writing. _

There is no perfect software, you know? Each hardware setup and each software is optimized for something.
This plotter is optimized for fast serial plotting, NOT parallel plotting. You're missing the point of it entirely.

If you have a rig with a huge SSD memory, it would be a waste to try to force a serial-optimized algorithm to run in parallel just for whatever reason.
As I've said, your build is already optimal.

And, as I've said, this plotter is optimized for serial plotting!
You would waster 12TB of NVMe by plotting in serial?

no of course not, I dont feel like you are actually listening to what I'm writing. _

You're not listening! You have 12tb of storage! That is perfect for parallel plotting, not sequential plotting, because that isn't what this plotter is designed to do! It's designed to max out the bandwidth of smaller storage drives or to use ramdisks - it says it in the second sentence of the readme!

You can't do basic math with computer components.
If you can sum 40 processes to achieve 10tb a day that doesn't mean that you can run a single process REALLY fast to achieve the same result.
It's different strategies. There is no right or wrong. Only optimal/suboptimal

There is no perfect software, you know? Each hardware setup and each software is optimized for something.
This plotter is optimized for fast serial plotting, NOT parallel plotting. You're missing the point of it entirely.

I don't think I'm missing anything, this plotter allows you to use more than 1 thread in stage 2-4, is that correct? Ideally id run 8 parallel using 8 threads, or 16 parallel using 4 threads, without having the imbalance you get currently with stage one being multi threaded but later stages not.
i have about 2Pb plotted so i'm not a beginner here.

There is no perfect software, you know? Each hardware setup and each software is optimized for something.
This plotter is optimized for fast serial plotting, NOT parallel plotting. You're missing the point of it entirely.

I don't think I'm missing anything, this plotter allows you to use more than 1 thread in stage 2-4, is that correct? Ideally id run 8 parallel using 8 threads, or 16 parallel using 4 threads, without having the imbalance you get currently with stage one being multi threaded but later stages not.
i have about 2Pb plotted so i'm not a beginner here.

Yes, but we are just telling you that you will gain no improvement by using this plotter. You will not increase your daily plot count because you can only run 1 plot at once at full speed.  Please, just believe us. Give the pechy plotter a try - that'll work well for you.

This plotter is great for specific use cases - yours is not one of them.

Just as an example, with the current plotter, with 30 odd instances running, the p1 table takes the same amount of time when the cpu is loaded.
As ive tried to explain, for some reason, this docker installation is only using 10% of hardware on this rig, ive just opened a 6th instance and the p1 time is over 200 secs slower than the first instance. because its only using 8 cores max.

Number of Buckets: 2^7 (128)
Set command ？ 64，32，16

Just as an example, with the current plotter, with 30 odd instances running, the p1 table takes the same amount of time when the cpu is loaded.
As ive tried to explain, for some reason, this docker installation is only using 10% of hardware on this rig, ive just opened a 6th instance and the p1 time is over 200 secs slower than the first instance. because its only using 8 cores max.

Don't get me wrong, it is amazing that you 2PB of the netspace, it is pretty impressive. But even so, that doesn't make you an expert in high-performance computing.
Most researchers use Docker on their experiments. Most web applications use Docker to host their websites. This website that you're using uses Docker in it's foundations. Docker indeed has some performance impacts, but they're minimal.
As I've said, I work with HPC and I train neural networks all the time inside Docker containers. And there is nothing more expensive for a given system than training a neural network.
As I've tried to explain to you many times, Docker is not limiting your system. It doesn't do that unless you specifically told it to do so.
There is no such a thing as "10% of the this rig hardware". You system is composed by many components. Each components has it's limits.
Chia plotting is bounded by the following components:

CPU
IO (NVMe)
RAM

Quoting the first line in the README file of this plotter:

This is a new implementation of a chia plotter which is designed as a processing pipeline, similar to how GPUs work, only the "cores" are normal software CPU threads.
As a result this plotter is able to fully max out any storage device's bandwidth, simply by increasing the number of "cores", ie. threads.

As you can see, this plotter is a processing pipeline that fully max out storage bandwidth.
SO, as the README states, it fully max out storage bandwith. And, because of that, if you're using the maximum allowed bandwidth of your storage, it is impossible to try to parallelize anything.
That is the reason why you're using only 10% of your CPU.

Just to give you an example, I have a Ryzen 9 5900X. My CPU is WAY slower than yours. I also have a 970EVO, which has 3500mbps serial write speed.
In MY setup, which has a SSD with similar speed and a WAY slower CPU, while plotting with this plotter, using directly the binary (I don't use the Docker container since I use Linux and I don't need to use it) my CPU usage is 17%
So, as you can see. I have a similar SSD, a WAY slower CPU, and I only use 17-20% of my CPU.
Do you know why? Because I'm already using my SSD at it's highest performance. There is nothing I can do to improve that. I've tried a few experiments by running parallel plots. I've started a discussion on this subject. And the results are pretty clear: with this plotter and my hardware I can plot 1plot/hour. If I try to paralelize it like you're trying to do (even without the Docker container, and I've tried it), it decreases at the same amount of the number of parallel plots.
So, if I run 2 plots in parallel, I plot 0.5plot/hour
If I run 3 plots in parallels, I plot 0.33 plot/hour
And always with the same CPU % usage (~20%)

I know that is not the result you want to hear, but the people that did the work in this plotter are pretty good developers. It is so good that Chia maintainers are considering merging it as the default chia plotter, but you're insisting in an illusion, trying to blame Docker for the reason that you're not being able to get the results you want, but the problem you're facing is that your system is not compatible with the plotting strategy of this plotter.
And that DOES NOT make your system be "bad" by any means. You have probably the largest tb/day that I've ever seen. The only difference is that, as I've already said many times, your rig is optimized for parallel plotting, and this plotter is optimized for serial plotting.

If you ask me: "Okay, how can I optimize this hardware for serial plotting?" My answer would be: knowing that your CPU can handle 40 parallel plots, instead of having a huge 12tb SSD, you could have 40 smaller SSDs (of 240 GiB each) and you could do the same thing you were doing, only that each process would use a single, specific SSD.
Well. How would you plug 40 SSDs in a motherboard? No idea, but in that given scenario, you would be able to achieve HUGE amount of tb/day.

I get the same result though using it set up as a ram disk. Are you able to
explain that? I will try tomorrow using my 5950x and a ram disk.
On Fri, 11 Jun 2021, 02:40 Daniel De Lucca, @.***>
wrote:

If you ask me: "Okay, how can I optimize this hardware for serial
plotting?" My answer would be: knowing that your CPU can handle 40 parallel
plots, instead of having a huge 12tb SSD, you could have 40 smaller SSDs
(of 240 GiB each) and you could do the same thing you were doing, only that
each process would use a single, specific SSD.
Well. How would you plug 40 SSDs in a motherboard? No idea, but in that
given scenario, you would be able to achieve HUGE amount of tb/day.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/madMAx43v3r/chia-plotter/pull/102#issuecomment-859198037,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUN37Q3KZAX4CT2Q2G4FIZDTSFSQVANCNFSM46NEAUDA
.

I get the same result though using it set up as a ram disk. Are you able to explain that? I will try tomorrow using my 5950x and a ram disk.
…
On Fri, 11 Jun 2021, 02:40 Daniel De Lucca, @.***> wrote: If you ask me: "Okay, how can I optimize this hardware for serial plotting?" My answer would be: knowing that your CPU can handle 40 parallel plots, instead of having a huge 12tb SSD, you could have 40 smaller SSDs (of 240 GiB each) and you could do the same thing you were doing, only that each process would use a single, specific SSD. Well. How would you plug 40 SSDs in a motherboard? No idea, but in that given scenario, you would be able to achieve HUGE amount of tb/day. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#102 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUN37Q3KZAX4CT2Q2G4FIZDTSFSQVANCNFSM46NEAUDA .

How much RAM you used in the disk?

IMHO the maximum efficiency you can get with this plotter is by using RAM as tmp1 disk.

I tried at 110, although only let it run a short while as I didn't see much
difference to the nvme.
It may seem like I'm being awkward or something but I'm not, something is
not quite right and I'm just trying to figure out what exactly.
On Fri, 11 Jun 2021, 02:49 Daniel De Lucca, @.***>
wrote:

I get the same result though using it set up as a ram disk. Are you able
to explain that? I will try tomorrow using my 5950x and a ram disk.
… <#m_6179738322592577451_m_7953363368272986356_>
On Fri, 11 Jun 2021, 02:40 Daniel De Lucca, @.***> wrote: If you ask
me: "Okay, how can I optimize this hardware for serial plotting?" My answer
would be: knowing that your CPU can handle 40 parallel plots, instead of
having a huge 12tb SSD, you could have 40 smaller SSDs (of 240 GiB each)
and you could do the same thing you were doing, only that each process
would use a single, specific SSD. Well. How would you plug 40 SSDs in a
motherboard? No idea, but in that given scenario, you would be able to
achieve HUGE amount of tb/day. — You are receiving this because you were
mentioned. Reply to this email directly, view it on GitHub <#102 (comment)
https://github.com/madMAx43v3r/chia-plotter/pull/102#issuecomment-859198037>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUN37Q3KZAX4CT2Q2G4FIZDTSFSQVANCNFSM46NEAUDA
.
How much RAM you used in the disk?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/madMAx43v3r/chia-plotter/pull/102#issuecomment-859200890,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUN37QYLVUIWCVI4LQS3IDDTSFTRBANCNFSM46NEAUDA
.

I tried at 110, although only let it run a short while as I didn't see much difference to the nvme. It may seem like I'm being awkward or something but I'm not, something is not quite right and I'm just trying to figure out what exactly. On Fri, 11 Jun 2021, 02:49 Daniel De Lucca, @.> wrote:
…
I get the same result though using it set up as a ram disk. Are you able to explain that? I will try tomorrow using my 5950x and a ram disk. … <#m_6179738322592577451_m_7953363368272986356_> On Fri, 11 Jun 2021, 02:40 Daniel De Lucca, @.> wrote: If you ask me: "Okay, how can I optimize this hardware for serial plotting?" My answer would be: knowing that your CPU can handle 40 parallel plots, instead of having a huge 12tb SSD, you could have 40 smaller SSDs (of 240 GiB each) and you could do the same thing you were doing, only that each process would use a single, specific SSD. Well. How would you plug 40 SSDs in a motherboard? No idea, but in that given scenario, you would be able to achieve HUGE amount of tb/day. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#102 (comment) <#102 (comment)>>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUN37Q3KZAX4CT2Q2G4FIZDTSFSQVANCNFSM46NEAUDA . How much RAM you used in the disk? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#102 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUN37QYLVUIWCVI4LQS3IDDTSFTRBANCNFSM46NEAUDA .

If you used 110GB of RAM as TMP1 it problably crashed, because you need 239GB in TMP1 dir
If you used 110GB of RAM as TMP2, you didn't saw any difference because it would use the SSD (tmp1) until phase 3. ONly in phasea 3 you would see the difference

I've already explained you why it is not working as you expected, because your rig is optmized for parallel plotting while this plotter isn't

The bottleneck on windows for me so far has been the WSL2 storage slowdown
issue. It's way more than a 5% hit. I'm looking into it to see if there are
any mitigations - going back to WSL1 or Hyper-V perhaps.
On Thu, Jun 10, 2021 at 9:57 PM Daniel De Lucca @.***>
wrote:

I tried at 110, although only let it run a short while as I didn't see
much difference to the nvme. It may seem like I'm being awkward or
something but I'm not, something is not quite right and I'm just trying to
figure out what exactly. On Fri, 11 Jun 2021, 02:49 Daniel De Lucca, @.
> wrote: … <#m_-5043444743452989645_> I get the same result though using
it set up as a ram disk. Are you able to explain that? I will try tomorrow
using my 5950x and a ram disk. …
<#m_6179738322592577451_m_7953363368272986356_> On Fri, 11 Jun 2021, 02:40
Daniel De Lucca, @.> wrote: If you ask me: "Okay, how can I optimize
this hardware for serial plotting?" My answer would be: knowing that your
CPU can handle 40 parallel plots, instead of having a huge 12tb SSD, you
could have 40 smaller SSDs (of 240 GiB each) and you could do the same
thing you were doing, only that each process would use a single, specific
SSD. Well. How would you plug 40 SSDs in a motherboard? No idea, but in
that given scenario, you would be able to achieve HUGE amount of tb/day. —
You are receiving this because you were mentioned. Reply to this email
directly, view it on GitHub <#102
https://github.com/madMAx43v3r/chia-plotter/pull/102 (comment) <#102
(comment)
https://github.com/madMAx43v3r/chia-plotter/pull/102#issuecomment-859198037>>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUN37Q3KZAX4CT2Q2G4FIZDTSFSQVANCNFSM46NEAUDA
. How much RAM you used in the disk? — You are receiving this because you
were mentioned. Reply to this email directly, view it on GitHub <#102
(comment)
https://github.com/madMAx43v3r/chia-plotter/pull/102#issuecomment-859200890>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUN37QYLVUIWCVI4LQS3IDDTSFTRBANCNFSM46NEAUDA
.
If you used 110GB of RAM as TMP1 it problably crashed, because you need
239GB in TMP1 dir
If you used 110GB of RAM as TMP2, you didn't saw any difference because it
would use the SSD (tmp1) until phase 3. ONly in phasea 3 you would see the
difference
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/madMAx43v3r/chia-plotter/pull/102#issuecomment-859204272,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABDAJYUL4NCNDPJUPLXRODTSFUPVANCNFSM46NEAUDA
.

The bottleneck on windows for me so far has been the WSL2 storage slowdown issue. It's way more than a 5% hit. I'm looking into it to see if there are any mitigations - going back to WSL1 or Hyper-V perhaps. On Thu, Jun 10, 2021 at 9:57 PM Daniel De Lucca @.***> wrote:
…
I tried at 110, although only let it run a short while as I didn't see much difference to the nvme. It may seem like I'm being awkward or something but I'm not, something is not quite right and I'm just trying to figure out what exactly. On Fri, 11 Jun 2021, 02:49 Daniel De Lucca, @. > wrote: … <#m_-5043444743452989645_> I get the same result though using it set up as a ram disk. Are you able to explain that? I will try tomorrow using my 5950x and a ram disk. … <#m_6179738322592577451_m_7953363368272986356_> On Fri, 11 Jun 2021, 02:40 Daniel De Lucca, @.> wrote: If you ask me: "Okay, how can I optimize this hardware for serial plotting?" My answer would be: knowing that your CPU can handle 40 parallel plots, instead of having a huge 12tb SSD, you could have 40 smaller SSDs (of 240 GiB each) and you could do the same thing you were doing, only that each process would use a single, specific SSD. Well. How would you plug 40 SSDs in a motherboard? No idea, but in that given scenario, you would be able to achieve HUGE amount of tb/day. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#102 <#102> (comment) <#102 (comment) <#102 (comment)>>>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUN37Q3KZAX4CT2Q2G4FIZDTSFSQVANCNFSM46NEAUDA . How much RAM you used in the disk? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#102 (comment) <#102 (comment)>>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUN37QYLVUIWCVI4LQS3IDDTSFTRBANCNFSM46NEAUDA . If you used 110GB of RAM as TMP1 it problably crashed, because you need 239GB in TMP1 dir If you used 110GB of RAM as TMP2, you didn't saw any difference because it would use the SSD (tmp1) until phase 3. ONly in phasea 3 you would see the difference — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#102 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABDAJYUL4NCNDPJUPLXRODTSFUPVANCNFSM46NEAUDA .

Are you using Docker? On running in the WSL directly?

The latest windows docker wants to use wsl2 by default to run Linux
containers. The issue is how it handles mounts and very slow IO - great for
normal, purposes, awful for plotting. 40 minutes with a native windows
binary, 4+ hours using the container. IO is absolutely my bottleneck.
Problem isn't the container. Works awesome on unraid. Just need to find a
way to go faster on windows docker. I'll report back if I find one.
On Thu, Jun 10, 2021, 10:00 PM Daniel De Lucca @.***>
wrote:

The bottleneck on windows for me so far has been the WSL2 storage slowdown
issue. It's way more than a 5% hit. I'm looking into it to see if there are
any mitigations - going back to WSL1 or Hyper-V perhaps. On Thu, Jun 10,
2021 at 9:57 PM Daniel De Lucca @.***> wrote:
… <#m_7990919939969235826_>
I tried at 110, although only let it run a short while as I didn't see
much difference to the nvme. It may seem like I'm being awkward or
something but I'm not, something is not quite right and I'm just trying to
figure out what exactly. On Fri, 11 Jun 2021, 02:49 Daniel De Lucca, @. >
wrote: … <#m_-5043444743452989645_> I get the same result though using it
set up as a ram disk. Are you able to explain that? I will try tomorrow
using my 5950x and a ram disk. …
<#m_6179738322592577451_m_7953363368272986356_> On Fri, 11 Jun 2021, 02:40
Daniel De Lucca, @.> wrote: If you ask me: "Okay, how can I optimize
this hardware for serial plotting?" My answer would be: knowing that your
CPU can handle 40 parallel plots, instead of having a huge 12tb SSD, you
could have 40 smaller SSDs (of 240 GiB each) and you could do the same
thing you were doing, only that each process would use a single, specific
SSD. Well. How would you plug 40 SSDs in a motherboard? No idea, but in
that given scenario, you would be able to achieve HUGE amount of tb/day. —
You are receiving this because you were mentioned. Reply to this email
directly, view it on GitHub <#102
https://github.com/madMAx43v3r/chia-plotter/pull/102 <#102
https://github.com/madMAx43v3r/chia-plotter/pull/102> (comment) <#102
https://github.com/madMAx43v3r/chia-plotter/pull/102 (comment) <#102
(comment)
https://github.com/madMAx43v3r/chia-plotter/pull/102#issuecomment-859198037>>>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUN37Q3KZAX4CT2Q2G4FIZDTSFSQVANCNFSM46NEAUDA
. How much RAM you used in the disk? — You are receiving this because you
were mentioned. Reply to this email directly, view it on GitHub <#102
https://github.com/madMAx43v3r/chia-plotter/pull/102 (comment) <#102
(comment)
https://github.com/madMAx43v3r/chia-plotter/pull/102#issuecomment-859200890>>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AUN37QYLVUIWCVI4LQS3IDDTSFTRBANCNFSM46NEAUDA
. If you used 110GB of RAM as TMP1 it problably crashed, because you need
239GB in TMP1 dir If you used 110GB of RAM as TMP2, you didn't saw any
difference because it would use the SSD (tmp1) until phase 3. ONly in
phasea 3 you would see the difference — You are receiving this because you
commented. Reply to this email directly, view it on GitHub <#102 (comment)
https://github.com/madMAx43v3r/chia-plotter/pull/102#issuecomment-859204272>,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABDAJYUL4NCNDPJUPLXRODTSFUPVANCNFSM46NEAUDA
.
Are you using Docker? On running in the WSL directly?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/madMAx43v3r/chia-plotter/pull/102#issuecomment-859205500,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABDAJ4EQ73S2KMMAXVNMY3TSFU3TANCNFSM46NEAUDA
.

The latest windows docker wants to use wsl2 by default to run Linux containers. The issue is how it handles mounts and very slow IO - great for normal, purposes, awful for plotting. 40 minutes with a native windows binary, 4+ hours using the container. IO is absolutely my bottleneck. Problem isn't the container. Works awesome on unraid. Just need to find a way to go faster on windows docker. I'll report back if I find one. On Thu, Jun 10, 2021, 10:00 PM Daniel De Lucca @.> wrote:
…
The bottleneck on windows for me so far has been the WSL2 storage slowdown issue. It's way more than a 5% hit. I'm looking into it to see if there are any mitigations - going back to WSL1 or Hyper-V perhaps. On Thu, Jun 10, 2021 at 9:57 PM Daniel De Lucca @.> wrote: … <#m_7990919939969235826_> I tried at 110, although only let it run a short while as I didn't see much difference to the nvme. It may seem like I'm being awkward or something but I'm not, something is not quite right and I'm just trying to figure out what exactly. On Fri, 11 Jun 2021, 02:49 Daniel De Lucca, @. > wrote: … <#m_-5043444743452989645_> I get the same result though using it set up as a ram disk. Are you able to explain that? I will try tomorrow using my 5950x and a ram disk. … <#m_6179738322592577451_m_7953363368272986356_> On Fri, 11 Jun 2021, 02:40 Daniel De Lucca, @.> wrote: If you ask me: "Okay, how can I optimize this hardware for serial plotting?" My answer would be: knowing that your CPU can handle 40 parallel plots, instead of having a huge 12tb SSD, you could have 40 smaller SSDs (of 240 GiB each) and you could do the same thing you were doing, only that each process would use a single, specific SSD. Well. How would you plug 40 SSDs in a motherboard? No idea, but in that given scenario, you would be able to achieve HUGE amount of tb/day. — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#102 <#102> <#102 <#102>> (comment) <#102 <#102> (comment) <#102 (comment) <#102 (comment)>>>>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUN37Q3KZAX4CT2Q2G4FIZDTSFSQVANCNFSM46NEAUDA . How much RAM you used in the disk? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#102 <#102> (comment) <#102 (comment) <#102 (comment)>>>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AUN37QYLVUIWCVI4LQS3IDDTSFTRBANCNFSM46NEAUDA . If you used 110GB of RAM as TMP1 it problably crashed, because you need 239GB in TMP1 dir If you used 110GB of RAM as TMP2, you didn't saw any difference because it would use the SSD (tmp1) until phase 3. ONly in phasea 3 you would see the difference — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#102 (comment) <#102 (comment)>>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABDAJYUL4NCNDPJUPLXRODTSFUPVANCNFSM46NEAUDA . Are you using Docker? On running in the WSL directly? — You are receiving this because you commented. Reply to this email directly, view it on GitHub <#102 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABDAJ4EQ73S2KMMAXVNMY3TSFU3TANCNFSM46NEAUDA .

Oh! I see.
Yeah, indeed you need them to revert back to WSL1 or move to Hyper-V!
I helped a friend a few hours ago. He installed Docker from scratch in his Windows, but for some reason it installed the Hyper-V instead of WSL2

@kythorn have you double checked if you haven't downloaded Docker developers preview version? I'm reading about it and it seems that Docker WSL2 is the future of Docker, but is still in developer's preview. I don't think their stable version is using it yet.

Well apparanetly hyper-v had more IO bottleneck compare to wsl2, in my testing. I did manage to get all cores from both CPU's firing with hyper-v but read writes would not go beyond 250MBps, native plotting goes beyond 1GBps. WSL1 does remove the CPU and IO bottleneck, just gotta figure out a way to run docker on it.

Well apparanetly hyper-v had more IO bottleneck compare to wsl2, in my testing. I did manage to get all cores from both CPU's firing with hyper-v but read writes would not go beyond 250MBps, native plotting goes beyond 1GBps. WSL1 does remove the CPU and IO bottleneck, just gotta figure out a way to run docker on it.
https://gist.github.com/bkonetzny/b769afcab375dedae743ac648622a4f1
Going to try this and report.

Yep that looks like it might work

@delucca
-cpus seems not work.
Even with -cpus 30, only 16 cpus are used, tried with both Hyper-V and wsl2 (added .wslconfig).
Do you know the cause?
My CPU is 5950x.

same I/O bottleneck here, tried both Hyper-V and wsl2

Well apparanetly hyper-v had more IO bottleneck compare to wsl2, in my testing. I did manage to get all cores from both CPU's firing with hyper-v but read writes would not go beyond 250MBps, native plotting goes beyond 1GBps. WSL1 does remove the CPU and IO bottleneck, just gotta figure out a way to run docker on it.
https://gist.github.com/bkonetzny/b769afcab375dedae743ac648622a4f1
Going to try this and report.

Where you able to test it? I would like to know if WSL1 is close to Linux-like Docker performance

same I/O bottleneck here, tried both Hyper-V and wsl2

You could give it a try to this guide: https://gist.github.com/bkonetzny/b769afcab375dedae743ac648622a4f1
It seems that WSL1 removes that I/O bottleneck

I have some plots running which finish in 3hrs, will test after that coz gotta reboot system to install.

PS C:\Users\Administrator>      docker run -v N::/mnt/harvester -v E::/mnt/farm -m 14000m --cpus 12 odelucca/chia-plotter -t /mnt/harvester/ -d /mnt/farm/ -p xxxxxxxxx -f xxxxxxxxxxxx -r 12 -u 6 -n 1
Final Directory: /mnt/farm/
Number of Plots: 1
Process ID: 1
Number of Threads: 12
Number of Buckets: 2^6 (64)
Pool Public Key:   xxxxxxxxxxxxxx
Farmer Public Key: xxxxxxxxxxxxxxxx
Working Directory:   /mnt/harvester/
Working Directory 2: /mnt/harvester/
Plot Name: plot-k32-2021-06-11-06-45-6706704666a8255b383df9a24bab3ac7fb651082087adc908eda4547c04ae9c1
[P1] Table 1 took 118.95 sec
[P1] Table 2 took 700.042 sec, found<PHONE_NUMBER> matches
[P1] Table 3 took 991.34 sec, found<PHONE_NUMBER> matches
[P1] Table 4 took 1293.63 sec, found<PHONE_NUMBER> matches
[P1] Table 5 took 1270.05 sec, found<PHONE_NUMBER> matches
[P1] Table 6 took 1144.94 sec, found<PHONE_NUMBER> matches
[P1] Table 7 took 843.155 sec, found<PHONE_NUMBER> matches
Phase 1 took 6362.49 sec
[P2] max_table_size =<PHONE_NUMBER>
[P2] Table 7 scan took 138.396 sec
[P2] Table 7 rewrite took 322.242 sec, dropped 0 entries (0 %)
[P2] Table 6 scan took 134.545 sec
[P2] Table 6 rewrite took 322.801 sec, dropped 581267003 entries (13.5338 %)
[P2] Table 5 scan took 127.782 sec
[P2] Table 5 rewrite took 317.683 sec, dropped 762018356 entries (17.7418 %)
[P2] Table 4 scan took 126.356 sec
[P2] Table 4 rewrite took 302.504 sec, dropped 828866578 entries (19.2984 %)
[P2] Table 3 scan took 125.799 sec
[P2] Table 3 rewrite took 314.777 sec, dropped 855126398 entries (19.9096 %)
[P2] Table 2 scan took 134.437 sec
[P2] Table 2 rewrite took 304.276 sec, dropped 865600277 entries (20.1537 %)
Phase 2 took 2675.3 sec
Wrote plot header with 268 bytes
[P3-1] Table 2 took 360.914 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 2 took 421.837 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 3 took 431.387 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 3 took 432.982 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 4 took 446.891 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 4 took 449.219 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 5 took 442.374 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 5 took 443.63 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 6 took 464.418 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 6 took 468.633 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
[P3-1] Table 7 took 399.972 sec, wrote<PHONE_NUMBER> right entries
[P3-2] Table 7 took 542.221 sec, wrote<PHONE_NUMBER> left entries,<PHONE_NUMBER> final
Phase 3 took 5305.79 sec, wrote<PHONE_NUMBER>9 entries to final plot
[P4] Starting to write C1 and C3 tables
[P4] Finished writing C1 and C3 tables
[P4] Writing C2 table
[P4] Finished writing C2 table
Phase 4 took 800.199 sec, final plot size is<PHONE_NUMBER>54 bytes
Total plot creation time was 15143.9 sec
Started copy to /mnt/farm/plot-k32-2021-06-11-06-45-6706704666a8255b383df9a24bab3ac7fb651082087adc908eda4547c04ae9c1.plot
Copy to /mnt/farm/plot-k32-2021-06-11-06-45-6706704666a8255b383df9a24bab3ac7fb651082087adc908eda4547c04ae9c1.plot finished, took 1497.61 sec, 69.3053 MB/s avg.
**Number of Buckets: 2^6 (64)           -u 6  **
Using Buckets 64, 15143 sec

Ok, finally got the docker spun up on a fresh ubuntu 20.04 install. It is working good except that like I saw mentioned earlier, it is only using 1 CPU (50% usage on a dual CPU system).
Did anyone figure out how to get the docker to max all cores?

I have some plots running which finish in 3hrs, will test after that coz gotta reboot system to install.

Cool :)
Let me know after switching to WSL1!

Cancel this option？

I have some plots running which finish in 3hrs, will test after that coz gotta reboot system to install.

Cool :)
Let me know after switching to WSL1!

Cancel this option？

Resources
WSL Integration
Configure which WSL 2 distros you want to access Docker from.
Enable integration with my default WSL distro
You don't have any WSL 2 distro. Please convert a WSL 1 distro to WSL 2, or install a new distro and it will appear here.
More info

same I/O bottleneck here, tried both Hyper-V and wsl2

You could give it a try to this guide: https://gist.github.com/bkonetzny/b769afcab375dedae743ac648622a4f1
It seems that WSL1 removes that I/O bottleneck

Switched to WSL1, it seems working as expected.
It may not I/O bottleneck, but because of WSL2 cannot use all core of dual CPU.
https://www.reddit.com/r/bashonubuntuonwindows/comments/hrkq31/what_makes_the_performance_on_wsl_2_on_cpu/

I have some plots running which finish in 3hrs, will test after that coz gotta reboot system to install.

Cool :)
Let me know after switching to WSL1!

Cancel this option？

Resources
WSL Integration
Configure which WSL 2 distros you want to access Docker from.
Enable integration with my default WSL distro
You don't have any WSL 2 distro. Please convert a WSL 1 distro to WSL 2, or install a new distro and it will appear here.
More info

This will switch over to hyper V which also has IO bottleneck. The only possible way to mitigated the IO performance loss is using WSL1, which is not supported by docker desktop out of the box.  https://gist.github.com/bkonetzny/b769afcab375dedae743ac648622a4f1
I have not tried this yet but @hung-nguyen89 seems to have got it running with WSL1.

I have some plots running which finish in 3hrs, will test after that coz gotta reboot system to install.

Cool :)
Let me know after switching to WSL1!

Cancel this option？

Resources
WSL Integration
Configure which WSL 2 distros you want to access Docker from.
Enable integration with my default WSL distro
You don't have any WSL 2 distro. Please convert a WSL 1 distro to WSL 2, or install a new distro and it will appear here.
More info

This will switch over to hyper V which also has IO bottleneck. The only possible way to mitigated the IO performance loss is using WSL1, which is not supported by docker desktop out of the box. https://gist.github.com/bkonetzny/b769afcab375dedae743ac648622a4f1
I have not tried this yet but @hung-nguyen89 seems to have got it running with WSL1.

@NikXO6 I install Ubuntu 20.4 distro then run mad max plotter directly on it.
Working perfect now :)

same I/O bottleneck here, tried both Hyper-V and wsl2

You could give it a try to this guide: https://gist.github.com/bkonetzny/b769afcab375dedae743ac648622a4f1
It seems that WSL1 removes that I/O bottleneck

Switched to WSL1, it seems working as expected.
It may not I/O bottleneck, but because of WSL2 cannot use all core of dual CPU.
microsoft/WSL#5423

You were able to switch Docker to use WSL1 with the guide you shared? If so, could you please add a section in the README explaining how to use WSL1 backend in Docker? (if you followed a guide, simply points to that guide)
That would save me hours of responding to people explaining this hahaha

same I/O bottleneck here, tried both Hyper-V and wsl2

You could give it a try to this guide: https://gist.github.com/bkonetzny/b769afcab375dedae743ac648622a4f1
It seems that WSL1 removes that I/O bottleneck

Switched to WSL1, it seems working as expected.
It may not I/O bottleneck, but because of WSL2 cannot use all core of dual CPU.
microsoft/WSL#5423

You were able to switch Docker to use WSL1 with the guide you shared? If so, could you please add a section in the README explaining how to use WSL1 backend in Docker? (if you followed a guide, simply points to that guide)
That would save me hours of responding to people explaining this hahaha

I switch to WSL1, then install Ubuntu 20.4 distro on it.
Then just follow the guide for Ubuntu https://github.com/madMAx43v3r/chia-plotter#ubuntu-2004
That's it, just Windows, WSL1 and Ubuntu, no Docker.

same I/O bottleneck here, tried both Hyper-V and wsl2

You could give it a try to this guide: https://gist.github.com/bkonetzny/b769afcab375dedae743ac648622a4f1
It seems that WSL1 removes that I/O bottleneck

Switched to WSL1, it seems working as expected.
It may not I/O bottleneck, but because of WSL2 cannot use all core of dual CPU.
microsoft/WSL#5423

You were able to switch Docker to use WSL1 with the guide you shared? If so, could you please add a section in the README explaining how to use WSL1 backend in Docker? (if you followed a guide, simply points to that guide)
That would save me hours of responding to people explaining this hahaha

I switch to WSL1, then install Ubuntu 20.4 distro on it.
Then follow the guide for Ubuntu https://github.com/madMAx43v3r/chia-plotter#ubuntu-2004
That's it, just Windows, WSL1 and Ubuntu, no Docker.

My quote wasn't directly to you, it was asking to  @NikXO6
I know that you've used WSL directly without Docker @hung-nguyen89, but I'm interested regarding Docker in Windows since some users prefer using it.
With Docker it is way easier to manage large plotting clusters. It is easy for you to trigger a single plot process in your own machine, but for users that are managing many nodes (like me) Docker is way easier.

@delucca
Don't get me wrong. I don't blame Docker.
Docker is great, I use it at daily work.
I stop using Docker for this plotter, because my purpose is run the plotter on windows.

@delucca
Don't get me wrong. I don't blame Docker.
Docker is great, I use it at daily work.
I stop using Docker for this plotter, because my purpose is run the plotter on windows.

No problem man :D
I was just explaining that f my question was for the other user, just to see if he was able to run with WSL1

@delucca
I'm trying to run this in unraid  terminal.  It keeps filling up my docker image and crashing.  The program isnt using my 2 temp dir.   With one argument it allocates the space from
Docker.
Do -v hostpath:containerpath instead. Even if you want to make the paths
the same.
On Sat, Jun 12, 2021, 5:38 AM spronty1 @.***> wrote:

@delucca https://github.com/delucca
I'm trying to run this in unraid terminal. It keeps filling up my docker
image and crashing. The program isnt using my 2 temp dir. What am i doing
wrong?
docker run
-v /mnt/cache/ChiaPlotting2/Mad2/
-v /mnt/plottingchia/ChiaPlotting/Mad/
-v /mnt/user/201-300/
odelucca/chia-plotter
-t /mnt/cache/ChiaPlotting2/Mad2/
-2 /mnt/plottingchia/ChiaPlotting/Mad/
-d /mnt/user/201-300/
-p
af102c5ea342449d8af28ff72850606510c85f35659682a7b6051d8e7fffdc966a7d50ff38c9b849331edf613445acb1
-f
a06d85db839a173a6e79fac92a095bb35d72cbeb54903ff8cb247fe539b845d0bfb1c0f99a52405fc1f2f0e600f039e6
-r 14
-n -1
-u 128 \
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/madMAx43v3r/chia-plotter/pull/102#issuecomment-860028718,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABDAJ7YQUQHWEQZA2EKP2DTSMTIRANCNFSM46NEAUDA
.

guys, in the end what is the best solution for plotting on windows?
@hung-nguyen89
@delucca

guys, in the end what is the best solution for plotting on windows?
@hung-nguyen89
@delucca

Fastest: using @stotiks compiled version
More portable: Docker
It depends on your needs

Stotik's binary, or the docker image on the old (not WSL2) backend.
On Sat, Jun 12, 2021 at 5:52 PM Daniel De Lucca @.***>
wrote:

guys, in the end what is the best solution for plotting on windows?
@hung-nguyen89 https://github.com/hung-nguyen89
@delucca https://github.com/delucca
Fastest: using @stotiks https://github.com/stotiks compiled version
More portable: Docker
It depends on your needs
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/madMAx43v3r/chia-plotter/pull/102#issuecomment-860117996,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AABDAJ3S7SKY6HK7LCA5ISDTSPJKJANCNFSM46NEAUDA
.

on my servers the stotiks version is incredibly slow, probably not fully compatible with windows server, now i'm using wsl2 but only uses one cpu on 2!

@stotiks

@delucca @feder-cr
Solved wsl2 I/O bottleneck.
The problem is wsl2 doesn't not support NTFS well. we need ext4 to maximize I/O.
Steps:

Join windows insider program/dev channel and install latest build.
Format drive to ext4 (I use DiskGenius).
Attach drive to wsl: wsl --mount <DiskPath> --bare. Refer https://docs.microsoft.com/en-us/windows/wsl/wsl2-mount-disk
Open wsl distro and mount drive: mkdir -p /mnt/wsl/ && mount /dev/ /mnt/wsl/

Note: wsl mount disk only available on windows preview build

@delucca @feder-cr
Solved wsl2 I/O bottleneck.
The problem is wsl2 doesn't not support NTFS well. we need ext4 to maximize I/O.
Steps:

Join windows insider program/dev channel and install latest build.
Format drive to ext4 (I use DiskGenius).
Attach drive to wsl: wsl --mount <DiskPath> --bare. Refer https://docs.microsoft.com/en-us/windows/wsl/wsl2-mount-disk
Open wsl distro and mount drive: mkdir -p /mnt/wsl/<Device><Partition> && mount /dev/<Disk> /mnt/wsl/<Device><Partition>

Note: wsl mount disk only available on windows preview build

Amazing!
Can you open a PR adding these instructions in the Docker section of the README file please?

@delucca @feder-cr
Solved wsl2 I/O bottleneck.
The problem is wsl2 doesn't not support NTFS well. we need ext4 to maximize I/O.
Steps:

Join windows insider program/dev channel and install latest build.
Format drive to ext4 (I use DiskGenius).
Attach drive to wsl: wsl --mount <DiskPath> --bare. Refer https://docs.microsoft.com/en-us/windows/wsl/wsl2-mount-disk
Open wsl distro and mount drive: mkdir -p /mnt/wsl/<Device><Partition> && mount /dev/<Disk> /mnt/wsl/<Device><Partition>

Note: wsl mount disk only available on windows preview build

Amazing!
Can you open a PR adding these instructions in the Docker section of the README file please?

Just a small disclaimer - this works great, but the disk that you want to mount cannot be the disk that you have Windows installed on: the mount command only works for an entire logical disk, meaning you can't just mount a partition, meaning you can't mount the system disk because you need to detach the disk from Windows to mount it, meaning you will have to boot Windows off of a different drive, which could be a problem for some people.

instead do you have advice on how to use both cpu? because I have two cpu but with wsl I only use 1 !!
@hung-nguyen89

Tryed to use odelucca/chia-plotter to plot chives, it seems that -k flag not working, always k=32 @delucca
also didnt find git repo for container Dockerfile :(