Global Feed Post Login
Replying to Avatar ᴛʜᴇ ᴅᴇᴀᴛʜ ᴏꜰ ᴍʟᴇᴋᴜ

yeah there's a couple more too. i don't really mind that maps need sync locks for bottlenecking write access, but there is good, fast concurrent safe maps you can use that don't require careful spicing of code with mutex locking. but what was more concerning was that temporary maps inside tight loops like eg import function, also need to be GCed, especially in cases where it's intermittent batch processing, and it has a quiescent state, which is when there is plenty of opportunity to do background tasks without interfering with response latency.

a lot of the focus around what i'm changing relates to giving better hints to the GC for when and how to work. in my last 2 years building relays, the most frequent problem has been out of memory and other resource exhaustion failures.

if you run #orly now you can see that it is extremely lean, running in around 50mb of memory typically in low load, processing like 1-10 transactions per second. i absolutely took the razor to the code to clean up memory allocations to reduce heap allocation pauses also.

Avatar
DataNostrum 1mo ago

I see! Some of these sound like transpiling to Go is not an option.

Reply to this note

Please Login to reply.

Discussion

No replies yet.