workloads+smite-scenarios: patch CLN to sync with new blocks faster#156
workloads+smite-scenarios: patch CLN to sync with new blocks faster#156NishantBansal2003 wants to merge 1 commit into
Conversation
CLN's only polls for new blocks periodically, so scenarios still wait up to the poll interval after mining a block. Add a `syncblocks` RPC that forces CLN to poll immediately, and wire it to bitcoind's `-blocknotify` so CLN syncs as soon as a block is mined. The RPC complements periodic polling rather than replacing it: concurrent requests are coalesced, and polling still catches any blocks missed while CLN is processing a previous chain update. Signed-off-by: Nishant Bansal <nishant.bansal.282003@gmail.com>
That is difficult to answer with just the plots. While the plots provide a qualitative way of comparing the efficacy of two approaches, the statistical tests performed in the evaluation script are supposed to be the ground-truth oracles to determine answers to questions of this nature. Could you provide the summary statistics from the evaluation report? It should be a markdown table similar to this:
|
|
The experiment is definitely statistically under-powered (needs longer and more trials). But solely from the results here, the experimental configuration (which I assume is the Bottom line, this is the strongest possible result we can observe using our framework! The |
|
The code looks fine to me, but I think it would be better to store patches in a separate directory like fuzzamoto does instead of alongside Docker files. Maybe in a |
ref: #143
I tried two approaches for CLN:
syncblocksRPC that triggers an immediate chain sync, and tie it to bitcoind’s-blocknotifyhookIn both cases, I ran campaign for 2 days and didn’t observe any target-side issues, so both approaches appear to be stable. To determine which approach performs better, I compared their coverage using the smite evaluation script. I ran five 1h trials for each approach, then replayed the generated corpus from each trial in local mode while measuring the CPU overhead for both CLN and
bitcoind. Here are the resulting plots for reference (Let me know if running longer campaign trials would provide a better comparison?):Target: cln
Median Coverage Over Time
Distribution Comparisons
CPU Overhead (median)
With the 50ms polling interval approach:
With the
-blocknotifyhook approach: