Mailing-List: contact cygwin-developers-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-developers-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin-developers AT sources DOT redhat DOT com Subject: Re: cygwin slowdown in current cvs version From: Robert Collins To: cygwin-developers AT cygwin DOT com In-Reply-To: <20010908201640.B22847@redhat.com> References: <130160175780 DOT 20010908204017 AT logos-m DOT ru> <127165775081 DOT 20010908221336 AT logos-m DOT ru> <186168543292 DOT 20010908225944 AT logos-m DOT ru> <20010908155203 DOT C12571 AT redhat DOT com> <20010908222326 DOT B937 AT cygbert DOT vinschen DOT de> <20010908164412 DOT B13528 AT redhat DOT com> <999994387 DOT 9504 DOT 118 DOT camel AT lifelesswks> <20010908201640 DOT B22847 AT redhat DOT com> Content-Type: text/plain Content-Transfer-Encoding: 7bit X-Mailer: Evolution/0.13 (Preview Release) Date: 09 Sep 2001 10:26:49 +1000 Message-Id: <999995212.11607.7.camel@lifelesswks> Mime-Version: 1.0 X-OriginalArrivalTime: 09 Sep 2001 00:13:43.0808 (UTC) FILETIME=[49542000:01C138C4] On Sun, 2001-09-09 at 10:16, Christopher Faylor wrote: > On Sun, Sep 09, 2001 at 10:13:06AM +1000, Robert Collins wrote: > >On Sun, 2001-09-09 at 06:44, Christopher Faylor wrote: > >> On Sat, Sep 08, 2001 at 10:23:26PM +0200, Corinna Vinschen wrote > >> > >> If we were going to do that, though, we should set up one global "change > >> notification" handle for /etc/group and /etc/passwd, right? > > > >After a quick MSDN scan, I couldn't see any per file scanning mechanism. > >which means notification on /etc is about it (barring fancy tricks like > >/etc/changingdata/passwd and /etc/passwd->changindata/passwd :]) > > A google search reveals some undocumented calls that allow you to track > all sorts of things. > > After a little more testing, it seems like the slowdown is actually due > to the FindFirstChangeNotification call. If I add that and avoid the > WaitForSingleObject, I still get a noticeable slowdown. mm, let me see.. that FindFirstChangeNotification should only get called once in each process? It sounds like you are saying that having called it, everything slows down - but that doesn't sound right to me. Explorer uses this all the time, for every open window, and it's still responsive. I have an idea though: what if change notifications are queueing? ie else if (hchanged && WaitForSingleObject (hchanged, 0) == WAIT_OBJECT_0) { (void) FindNextChangeNotification (hchanged); while (WaitForSingleObject (hchanged, 0) == WAIT_OBJECT_0) (void) FindNextChangeNotification (hchanged); small_printf ("/etc changed\n"); if (fstat(...)) state = uninitialized; }