crytic / crytic/echidna

Shrinking multicore

Open
#1,249 4 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Haskell
Stars
3.2k
Forks
432
Avg merge
1d 20h
Merged PRs (30d)
5

Description

### Describe the desired feature

Currently, it seems like Echidna uses a single core/process/thread to shrink failed sequences.

In some cases, however, we're interested in using 100% of the machine's resources to extract the results of that particular sequence. For example, this is often the case when I am using `stopOnFail: true` and `workers: N` in a multicore setup. I don't care about _other_ failed properties, I only care about that particular one that I know to have failed. The problem is that this takes forever even if I bump up N or the number of cores.

It seems like trying to shrink a sequence on a `c5.large` instance takes about the same amount of time as on a `c5.4xlarge` (benchmark pending), which is unexpected.

Contributor guide

Open the contributing guide

Research direction

Start by tracing the existing shrinking path for failed sequences and how stopOnFail and workers are handled; the issue names no files or tests. Benchmark shrinking on c5.large versus c5.4xlarge, then define done as using available machine resources and reducing the observed shrinking time.

Written by the indexing model from the issue text.

Assessment

Tech stack
haskell
Domain
performance, testing
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.