<div dir="ltr"><div dir="ltr"><div>Linux sendfile and Windows TransmitFile are very specific beasts.</div><div>If you are sending files to sockets, yes, that should be the best the system can do.</div><div>For general file I/O in Linux, the API called AIO with aio_read and aio_write is no good.</div><div>These communicate completion asynchronously via UNIX signals.</div><div>Linux I/O rings seem to be the way forward, but do not seem ready for general production yet.<br></div><div>Some cloud providers disable it because of a history of security bugs.</div><div>Pedro.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Em seg., 3 de jun. de 2024 às 11:06, Robert Engels <<a href="mailto:robaho@icloud.com">robaho@icloud.com</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Here is an interesting case study on async file IO under Linux <a href="http://blog.lighttpd.net/articles/2006/11/12/lighty-1-5-0-and-linux-aio/" rel="noreferrer" target="_blank">http://blog.lighttpd.net/articles/2006/11/12/lighty-1-5-0-and-linux-aio/</a><br>
<br>
> On May 31, 2024, at 6:22 PM, robert engels <<a href="mailto:robaho@icloud.com" target="_blank">robaho@icloud.com</a>> wrote:<br>
> <br>
> I looked into the code. Seems Java is the same. I looked into it - and seems for many workloads async file IO can improve efficiency by 80%. <br>
> <br>
>> On May 31, 2024, at 5:45 PM, Robert Engels <<a href="mailto:robaho@me.com" target="_blank">robaho@me.com</a>> wrote:<br>
>> <br>
>> Hi,<br>
>> <br>
>> An interesting question came up on the Go support channels. One of the principle engineers stated that for local file IO, the Go routine (similar to virtual thread) won’t release the carrier thread.<br>
>> <br>
>> Is this the same with Java virtual threads? Yes, local IO is typically fast - but it is still order of magnitudes slower than memory computations - which the virtual thread could be doing while waiting for the IO request to be serviced.<br>
>> <br>
>> R<br>
<br>
</blockquote></div><br></div>