Live data from Hacker News

Mfio – Completion I/O for Rust

blaz.is

11–14 of 14 posts

Re: Mfio – Completion I/O for Rust

#11
post #3

The log scale charts make it seem like the performance is all the same. It would be nice to see relative performance in a table or chart.

yeah that's the most honest charting I've seen. they're not looking for headlines, respect

Sure, they're not looking for headlines, but I wouldn't call it "honest". A chart with a linear scale that shows the full range from 0 to max (no baseline that makes small differences look huge) would be far more honest in my opinion.

Re: Mfio – Completion I/O for Rust

#12
Never heard of this “coloring” thing.

From a quick google it’s about the “color” of a function being red or blue as defined here (I think): https://journal.stuffwithstuff.com/2015/02/01/what-color-is-...

Isn’t this weird and unnecessary? I dunno. It’s probably just me.

Re: Mfio – Completion I/O for Rust

#13

Never heard of this “coloring” thing. From a quick google it’s about the “color” of a function being red or blue as defined here (I think): https://journal.stuffwithstuff.com/2015/02/01/what-color-is-... Isn’t this weird and unnecessary? I dunno. It’s probably just me.

It’s frequently used to describe the problem of calling an async function from a sync one or vice versa. There’s other applications of the term though (pure vs impure functions).

I think it just happens to be that we like assigning colors to differentiate things in the mathematical side of CS.

Re: Mfio – Completion I/O for Rust

#14
post #9
post #6

I've always wondered why completion i/o systems require you to hand them a buffer rather than a buffer pool. Handing them a buffer means that you are keeping a huge amount of memory allocated when you have a huge number of connections.

For TCP, you'd generally want to have a buffer pool and issue one repeating request that takes buffers out from that pool. This is what io_uring allows you to do. The difficulty comes from APIs ability to expose that buffer pool nicely. I am on the lookout to model this better, but no clear solution that does not make assumptions about the backend at play. For now, however, with careful design you can skip the alloca…

To add, if your app can make use of io_uring's polling, you can further avoid a copy and have a true zero-copy system.
Post reply on HN