Messages in this thread | | | Date | Fri, 30 Apr 1999 23:05:26 +0200 (CEST) | From | Ingo Molnar <> | Subject | Re: [OT] Comments to WinNT Mag !! |
| |
On Fri, 30 Apr 1999, Linux Lists wrote:
> As I don't have the technical expertise to discuss with this gentleman > (although I think somebody _must_), I'm forwarding this URL to the list: > > http://www.winntmag.com/Magazine/Article.cfm?ArticleID=5048 > > I hope you guys can address this article's issues properly. Please contact > the author !!
While he (Mark Russinovich) does have valid points (no OS is perfect), he is exagerating things alot at the expense of Linux, to make NT appear in a better light. He also forgets to mention lots powerful mechanisms and features present in the Linux kernel that give it an edge over NT, and he forgets to mention shortcomings of NT in the same areas. But i think his main mistake is that he is trying to find the NT API in Linux. No, Linux is Linux. I'll try to address most of his technical points briefly:
'asynchron IO' --------------
first he claims Linux has only select(), and then he continues to bash select(). (without providing measurements or benchmark numbers) Then he says that Linux _does_ have asynchron IO events implemented in 2.2 but says that they have 'two major limitations'. Both 'limitations' he mentions are in fact a pure implementation matter and not a mechanism or API limitation. Mark also forgot to mention that Linux asynchron IO is superior to NT because we do not have to poll the completion port for events, we can have the IO event delivered _immediately_ to the target thread (which is preempted by a signal if it's running). This gives more flexibility of using asynchron events. (i have pointed out this difference to him in private discussions, he left this argument unanswered)
'overscheduling' ----------------
here he again forgets to _prove_ that overscheduling happens in Linux. Measurements have been done on big busy Linux webservers (much bigger than the typical 'enterprise' category), and the runqueue lenghth (number of threads competing for requests) was 3-4 typically. Enuff said ...
'kernel reentrancy' -------------------
his example is a clear red herring. If any Linux application is read()/write() intensive to the page cache, it should better use mmap(). I can understand Mark did not mention mmap(), NT has a rather inferior mmap() implementation. (eg. read()/write() and mmap()-ed modifications done to the same file are not guaranteed to be data-coherent by NT ...) His threading point is correct, there is still code left to be threaded for SMP operation. Just as NT has one single big lock in it's networking stack in NT4 SP4. (only SP5 has fixed this, which is not yet out of the beta status.)
'sendfile' ----------
sendfile() is a new system call. The copying problem he noticed is true, but it's a matter of the networking code, not some conceptual problem with sendfile(). If the networking code does zero-copy then sendfile() will do zero-copy as well. (without the user ever noticing) sendfile() will certainly be further optimized in 2.3.
in private discussions with Mark i have pointed out most of these counter-arguments, which he unfortunately failed to answer. He also didnt answer my questions about NT's shortcomings in the above areas. (as always, seemingly powerful concepts can often open up ugly ratholes) Different OS, different approach. Let the numbers talk.
-- mingo
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |