<story><title>How we scaled Nginx</title><url>https://blog.cloudflare.com/how-we-scaled-nginx-and-saved-the-world-54-years-every-day/?ref</url></story><parent_chain><item><author>enitihas</author><text>Non blocking disk I&amp;#x2F;O is one thing where NT is really ahead of all &lt;i&gt;nix OSes. Unlike say network IO where we have all sorts of platforms(go, node) which allow you to scale by doing async IO, there aren&amp;#x27;t much options for disk I&amp;#x2F;O, primarily because of lack of &lt;/i&gt;nix options.</text></item></parent_chain><comment><author>khc</author><text>Author of the post (and the engineer who did the work) here.&lt;p&gt;There are ways to do non-blocking disk I&amp;#x2F;O in *nix (aio&amp;#x2F;io_submit in linux) but all of which requires you to have an open file descriptor first. Does NT allow you to open a file in an async fashion?</text></comment>
<story><title>How we scaled Nginx</title><url>https://blog.cloudflare.com/how-we-scaled-nginx-and-saved-the-world-54-years-every-day/?ref</url></story><parent_chain><item><author>enitihas</author><text>Non blocking disk I&amp;#x2F;O is one thing where NT is really ahead of all &lt;i&gt;nix OSes. Unlike say network IO where we have all sorts of platforms(go, node) which allow you to scale by doing async IO, there aren&amp;#x27;t much options for disk I&amp;#x2F;O, primarily because of lack of &lt;/i&gt;nix options.</text></item></parent_chain><comment><author>zzzcpan</author><text>If you mean IOCP API that requires you to hold memory hostage for it, then no, NT sucks at it. The idea behind that API only works well if there is no switch between kernel space and user space. Otherwise you can emulate that awful API with threads on unix-like systems, it will perform the same.&lt;p&gt;Don&amp;#x27;t get me wrong though, caching&amp;#x2F;file serving in nginx was always very hacky. And blowing latency by blocking on filesystem and yet relying on vfs cache underneath is just one side effect of that.</text></comment>