Mark Fickett
05/03/2022, 8:35 PMmax_concurrent=36
, and the default (SQLite?) event storage. I think the bulk of the logging messages are Dagster events. I'm finding that it takes at least twice as long as the implementation I'm porting into Dagster, which used concurrent.futures
. The Dagit UI is also very laggy, in terms of loading the run view, showing which ops are executing/preparing, and loading logs.
Many of the ops are very lightweight: just read 1 string input and make 1 API call and then return nothing; but they do benefit from being run in parallel. I'm wondering if trying to reduce the number of ops would help, but while that could reduce the number of steps somewhat, I really do want a big fan-out. I could do some chunking though if op startup/shutdown is likely taking a lot of time, so each op does 10-100 work items.
Is the default event storage likely slowing things down? I could set up a local postgres but don't want to bother with that if it's unlikely to improve performance.
I'll also be moving this to Dagster Cloud with Kubernetes, so I want to prepare for good performance / resource usage there, too.daniel
05/03/2022, 8:37 PMMark Fickett
05/03/2022, 8:38 PMdaniel
05/03/2022, 8:38 PMMark Fickett
05/06/2022, 2:26 PMdaniel
05/06/2022, 2:28 PMMark Fickett
05/06/2022, 2:33 PMalex
05/06/2022, 2:33 PMstart_method: forkserver
config option on the multiprocess executor?Mark Fickett
05/06/2022, 2:36 PMalex
05/06/2022, 2:39 PMMark Fickett
05/06/2022, 2:48 PMstart_method: forkserver: {}
and it crashed, but glad to experiment more if that seems useful.
Here's the debug download.forkserver
on my Linux dev machine is chugging along merrily, and looks faster (I don't get time to click on a preparing op before it's already gone, whereas usually I have a second or two).alex
05/06/2022, 2:54 PMrequests
in the call stack?context.log
volume for this much fan-out.
in the hopefully not-to-distant future you use an executor with in-process parallelism (likely async/await ) would probably be a great fit given your description. tracking issue https://github.com/dagster-io/dagster/issues/4041 here
today op functions can be async
and we will drive them to completion, so you can use asyncio tools to manage concurrency within an op for your batched work.Mark Fickett
05/06/2022, 4:05 PMalex
05/09/2022, 10:16 PMit’s loading all logs into memory before rendering the Dagit UIya this is the current implementation, so total volume is what effects user experience
Mark Fickett
05/10/2022, 3:10 AM