Re:We won the battle for Linux, but we're losing the battle ...
by kazinator on Thursday June 09, 2016 @07:59PM
(#11873297)
Exposing async I/O is largely a trivial hack, if the filesystem is already asynchronous under the hood, allowing I/O to proceed in parallel with computation. It's mostly about separating the request placement for I/O from being notified about completion or optionally waiting. The wherewithal to cob together this sort of mousetrap was in the Linux kernel since the early dawn, pretty much.
1990 POSIX didn't have aio_read and all that; it came later. A lot of this stuff was being standardized in parallel with the progress being made in Linux. According to the 1997 Single Unix Spec (Issue 2), the aio stuff came from the 1993 real-time extensions to POSIX. [http://pubs.opengroup.org/onlinepubs/007908799/xsh/aio_read....] "Derived from the POSIX Realtime Extension (1003.1b-1993/1003.1i-1995)". This was bleeding edge POSIX in the mid 1990's, and didn't exist when Torvalds started.
The performance optimization requirements of large databases aren't the be-all and end-all of "non-toyness", anyway.
The Linux people were decent at optimizing for the cases that their user base cared about. E.g. Linux exploded as a web server OS all over the world, so there was a lot of focus on decent networking, and tricks like serving a static file right out of the kernel and whatnot.
1990 POSIX didn't have aio_read and all that; it came later. A lot of this stuff was being standardized in parallel with the progress being made in Linux. According to the 1997 Single Unix Spec (Issue 2), the aio stuff came from the 1993 real-time extensions to POSIX. [http://pubs.opengroup.org/onlinepubs/007908799/xsh/aio_read....] "Derived from the POSIX Realtime Extension (1003.1b-1993/1003.1i-1995)". This was bleeding edge POSIX in the mid 1990's, and didn't exist when Torvalds started.
The performance optimization requirements of large databases aren't the be-all and end-all of "non-toyness", anyway.
The Linux people were decent at optimizing for the cases that their user base cared about. E.g. Linux exploded as a web server OS all over the world, so there was a lot of focus on decent networking, and tricks like serving a static file right out of the kernel and whatnot.