Re: Communciator 4.02 Imap EXPUNGE problem

Mark Crispin <MRC@panda.com> Mon, 25 August 1997 19:36 UTC

Received: from cnri by ietf.org id aa15241; 25 Aug 97 15:36 EDT
Received: from lists3.u.washington.edu (root@lists3.u.washington.edu [140.142.56.3]) by cnri.reston.va.us (8.8.5/8.7.3) with ESMTPid PAA04136 for <ietf-archive@CNRI.Reston.VA.US>; Mon, 25 Aug 1997 15:39:58 -0400 (EDT)
Received: from host (lists.u.washington.edu [140.142.56.13]) by lists3.u.washington.edu (8.8.4+UW97.07/8.8.4+UW97.05) with SMTP id MAA24805; Mon, 25 Aug 1997 12:35:50 -0700
Received: from mx2.u.washington.edu (mx2.u.washington.edu [140.142.32.7]) by lists.u.washington.edu (8.8.4+UW97.07/8.8.4+UW97.05) with ESMTP id MAA40456 for <imap@lists.u.washington.edu>; Mon, 25 Aug 1997 12:32:54 -0700
Received: from mx2.cac.washington.edu (mx2.cac.washington.edu [140.142.33.1]) by mx2.u.washington.edu (8.8.4+UW97.07/8.8.4+UW97.04) with ESMTP id MAA23889 for <imap@u.washington.edu>; Mon, 25 Aug 1997 12:32:52 -0700
Received: from Tomobiki-Cho.CAC.Washington.EDU (weiner@tomobiki-cho.cac.washington.edu [128.95.135.58]) by mx2.cac.washington.edu (8.8.4+UW97.07/8.8.4+UW97.04) with ESMTP id MAA20855 for <imap@cac.washington.edu>; Mon, 25 Aug 1997 12:32:49 -0700
Message-Id: <MailManager.872536294.20177.mrc@Ikkoku-Kan.Panda.COM>
Date: Mon, 25 Aug 1997 12:11:34 -0700
Sender: IMAP-owner@u.washington.edu
Precedence: bulk
From: Mark Crispin <MRC@panda.com>
To: "Barry Leiba, Multimedia Messaging" <leiba@watson.ibm.com>
Cc: imap <imap@cac.washington.edu>
Subject: Re: Communciator 4.02 Imap EXPUNGE problem
In-Reply-To: <SIMEON.9708250808.A@uranus.diz.watson.ibm.com>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; CHARSET="US-ASCII"
X-Sender: Mark Crispin <mrc@Ikkoku-Kan.Panda.COM>
X-Listprocessor-Version: 8.1 beta -- ListProcessor(tm) by CREN

On Mon, 25 Aug 1997 08:03:08 -0400 (Eastern Daylight Time), Barry Leiba,
Multimedia Messaging wrote:
> Then, again, there is nothing in the RFC that indicates that one shouldn't
> do this.  I repeat, yet one more time, that tossing criticism around for
> someone's "doing such a bizarre thing", and accusing that client of "highly
> anti-social" behaviour, when the client-writer followed the spec is
> inappropriate.

The practice of spawning multiple server processes in an effort to obtain
"better performance" *is* anti-social behavior, on the same order as setting a
TCP retransmission timer dramatically slow.

Remember that most of today's computers can only do one thing at a time;
multiprocessing is an illusion caused by fast switching.  The more things the
computer has to do, the less is available for doing any one thing.  This is
not linear, either; there is greater overhead from the switching.

It exploits a weakness in operating systems whose scheduler allocates by
process, instead of by user.  A client which spawns multiple server processes
(in *ANY* protocol -- this includes HTTP) seeks to grab a greater share of the
server's resources (and bandwidth to the server) to the detriment of clients
which do not.  It adds overhead to the server because these additional server
processes need to be scheduled.

The practice is ultimately self-defeating.  If you try to use certain browsers
with servers that have per-client limits, you'll discover that the performance
of those browsers rapidly collapses.

Claims to the contrary notwithstanding, the use of threads doesn't make this
problem go away; it simply sweeps it under the rug.  It is instructive to
study how threads are implemented.

> Instead, let's use these experiences to clarify the spec or
> to add to an "implementer's guide" that warns people against doing things
> that commonly deployed servers or mail stores or whatever can't handle well.

This isn't IMAP-specific.  It is a fundamental software engineering principle,
the sort of thing that belongs in CS 101.