X-Spam-Check-By: sourceware.org Date: Fri, 19 Jan 2007 07:41:25 -0800 From: Christopher Layne To: cygwin AT cygwin DOT com Subject: Re: 1.7.0 CVS mmap failure Message-ID: <20070119154125.GD1586@ns1.anodized.com> References: <20070105182234 DOT GC12776 AT calimero DOT vinschen DOT de> <20070105192302 DOT GD12776 AT calimero DOT vinschen DOT de> <20070110095345 DOT GL23638 AT calimero DOT vinschen DOT de> <20070117103959 DOT GA23172 AT calimero DOT vinschen DOT de> <20070118091400 DOT GC27843 AT calimero DOT vinschen DOT de> <20070118171852 DOT GA18119 AT calimero DOT vinschen DOT de> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20070118171852.GA18119@calimero.vinschen.de> User-Agent: Mutt/1.5.11 X-Assp-Spam-Prob: 0.00000 X-Assp-Whitelisted: Yes X-Assp-Envelope-From: clayne AT ns1 DOT anodized DOT com X-Assp-Intended-For: cygwin AT cygwin DOT com X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com On Thu, Jan 18, 2007 at 06:18:52PM +0100, Corinna Vinschen wrote: > > Right, it's an optimization problem rather than a bug. Patches > > welcome, but I've put it on my TODO list, too. > > I have applied a patch to CVS which calls fstat early, at the spot where > GetFileSize got called so far. The stat structure is then propagated to > subsequent function calls and used there. This should reduce the fstat > calls to exactly one per file based mmap call. All my testcases still > work fine, but we already saw that my testcases don't cover all weird > cases in the world. So, please give this change a serious test. Thanks for fixing this. I also noticed these when reading through the code. Another area for extremely small optimization is to just cache the pagesize. I notice a *lot* of calls to getpagesize(), when I can't really see the pagesize changing within a single call to mmap(). Since the map implementations appear to use a data object for tracking/management, it should be pretty easy to add a psz size_t/DWORD/whatever to it. -cl -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/