Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FR]: Allow for easier specification of RTS options #3154

Open
Fjodor42 opened this issue Feb 9, 2024 · 2 comments
Open

[FR]: Allow for easier specification of RTS options #3154

Fjodor42 opened this issue Feb 9, 2024 · 2 comments

Comments

@Fjodor42
Copy link

Fjodor42 commented Feb 9, 2024

As somewhat described in IntersectMBO/cardano-node#5500, I saw time from Daedalus startup to full functionality on the order of 4+ hours, further exacerbated by frequent disconnections from mainnet, necessitating a restart of cardano-node.

Jumping through some hacky hoops, I managed to pass on other Haskell RTS options than the ones I since learned where offered in the GUI for low-memory systems, to discover not only how to utilise more than one core, but that this had the following effects:

  1. Start-up to full functionality is now on the order of 10 - 20 minutes as opposed to 4+ hours
  2. Whereas earlier, Daedalus would lose connection to mainnet on a daily basis, I haven't seen that for a few days now

Wading through the quagmires of a compiled Nix package was dreary, so I shall not be making PR, but I would propose to implement a way for the user to specify arbitrary RTS options, as well as to provide reasonable defaults (still overridable), depending on CPU core count.

@michalrus
Copy link
Member

Hey @Fjodor42, could you share which RTS options you ran with, so that we can test their effects? :) Thank you for this investigation!

@Fjodor42
Copy link
Author

Fjodor42 commented Feb 9, 2024

Hi @michalrus,

Opting for another approach than just specifying +RTS -N -RTS which would utilise all available CPU cores, I opted for half the amount of physical cores in my machine with +RTS -N14 -RTS.

Since then, I lowered that to +RTS -N8 -RTS to utilize only 8 cores, and realising that some people, myself included, would very much like to not have any single program utilise all cores "nilly-willy", my suggestion is to apply some heuristic such as, say, half or a quarter of available physical or logical cores, but then let the user alter those parameters at will.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants