X-Spam-Check-By: sourceware.org Date: Wed, 17 Jan 2007 13:42:58 -0600 From: Brian Ford Reply-To: cygwin AT cygwin DOT com To: cygwin AT cygwin DOT com Subject: Re: 1.7.0 CVS mmap failure In-Reply-To: <20070117103959.GA23172@calimero.vinschen.de> Message-ID: References: <20070105095752 DOT GB28768 AT calimero DOT vinschen DOT de> <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> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-559023410-320655053-1169062978=:2732" 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 ---559023410-320655053-1169062978=:2732 Content-Type: TEXT/PLAIN; charset=US-ASCII On Wed, 17 Jan 2007, Corinna Vinschen wrote: > On Jan 16 17:28, Brian Ford wrote: > > > PS: In an strace of this, I see three fstat64s called from within a > > single mmap64. Do you know where they all are, and if two should be > > optimized away? > > There's only one such call in list::set. which is called from map::add_list, yes. I also see one in map::get_list_by_fd. > Your observation is strange. The first mapping, which really maps the > file, calls fstat. The second (valid remainder) and third (sigbus area) > mapping are anonymous mappings, which don't call fstat. I don't think my three fstat64s correspond to your three mappings. > In my tests, fstat64 is called only once for a file mapping. Really? I think I see them as follows: mmap.cc:1203 mmap64(): map_list = mmapped_areas.get_list_by_fd (fd); mmap.cc:982 mmap_worker(): if (!(map_list = mmapped_areas.get_list_by_fd (fd)) mmap.cc:983 mmap_worker(): && !(map_list = mmapped_areas.add_list (fd))) Also: mmap.cc:1134 mmap64(): DWORD low = GetFileSize (fh->get_handle (), &high); > STC? It looks like your statement is true for the first mmap in a process, but subsequent mmaps have significant overhead. In the attached STC, I count 5 fstat64s of the same fd via strace, plus the GetFileSize mentioned above. PS. Since this isn't a bug, I don't expect you to do any more than consider putting it in your long term low priority que or reply with a PTC Thanks for the evaluation tuits ;-). -- Brian Ford Lead Realtime Software Engineer VITAL - Visual Simulation Systems FlightSafety International the best safety device in any aircraft is a well-trained crew... ---559023410-320655053-1169062978=:2732 Content-Type: TEXT/PLAIN; charset=US-ASCII; name="mmaptest.c" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename="mmaptest.c" I2luY2x1ZGUgPGxpbWl0cy5oPg0KI2luY2x1ZGUgPHVuaXN0ZC5oPg0KI2lu Y2x1ZGUgPHN5cy90eXBlcy5oPg0KI2luY2x1ZGUgPHN5cy9zdGF0Lmg+DQoj aW5jbHVkZSA8c3RyaW5ncy5oPg0KI2luY2x1ZGUgPHN0cmluZy5oPg0KI2lu Y2x1ZGUgPGZjbnRsLmg+DQojaW5jbHVkZSA8c3RkaW8uaD4NCiNpbmNsdWRl IDxzeXMvbW1hbi5oPg0KDQoNCmludA0KbWFpbihpbnQgYXJnYywgY29uc3Qg Y2hhciAqYXJndltdKQ0Kew0KICAgIGNoYXIgICAgICAgICBmbmFtZVtQQVRI X01BWF07DQogICAgaW50ICAgICAgICAgIGNudDsNCiAgICBpbnQgICAgICAg ICAgZmQ7DQogICAgc3RydWN0IHN0YXQgIHNiOw0KICAgIHZvaWQgICAgICAg ICphZGRyOw0KDQogICAgY250ICAgICAgICA9IHJlYWRsaW5rKCIvcHJvYy9z ZWxmL2V4ZSIsIGZuYW1lLCBzaXplb2YoZm5hbWUpKTsNCiAgICBmbmFtZVtj bnRdID0gJ1wwJzsNCg0KI2RlZmluZSBFWEVfU1VGRklYICIuZXhlIg0KI2Rl ZmluZSBTVFJMRU5fRVhFX1NVRkZJWCAoc2l6ZW9mKEVYRV9TVUZGSVgpLTEp DQogICAgaWYgKGNudCA8PSBTVFJMRU5fRVhFX1NVRkZJWA0KICAgICAgICB8 fCBzdHJjYXNlY21wKCZmbmFtZVtjbnQtU1RSTEVOX0VYRV9TVUZGSVhdLCBF WEVfU1VGRklYKSkNCiAgICAgICAgc3RyY3B5KGZuYW1lK2NudCwgRVhFX1NV RkZJWCk7DQoNCiAgICBmZCA9IG9wZW4oZm5hbWUsIE9fUkRPTkxZKTsNCiAg ICBpZiAoZmQgPCAwKQ0KICAgIHsNCglwZXJyb3IoIm9wZW4gc2VsZiIpOw0K CXJldHVybiAtMTsNCiAgICB9DQoNCiAgICBpZiAoZnN0YXQoZmQsICZzYikg PCAwKQ0KICAgIHsNCglwZXJyb3IoInN0YXQiKTsNCglyZXR1cm4gLTE7DQog ICAgfQ0KDQogICAgYWRkciA9IG1tYXAoTlVMTCwgc2Iuc3Rfc2l6ZSwgKFBS T1RfUkVBRHxQUk9UX1dSSVRFKSwNCgkJKE1BUF9OT1JFU0VSVkV8TUFQX1BS SVZBVEUpLCBmZCwgMCk7DQogICAgaWYgKGFkZHIgPT0gTUFQX0ZBSUxFRCkN CiAgICB7DQoJcGVycm9yKCJtbWFwMSIpOw0KCXJldHVybiAtMTsNCiAgICB9 DQoNCiAgICBhZGRyID0gbW1hcChOVUxMLCBzYi5zdF9zaXplLCAoUFJPVF9S RUFEfFBST1RfV1JJVEUpLA0KCQkoTUFQX05PUkVTRVJWRXxNQVBfUFJJVkFU RSksIGZkLCAwKTsNCiAgICBpZiAoYWRkciA9PSBNQVBfRkFJTEVEKQ0KICAg IHsNCglwZXJyb3IoIm1tYXAyIik7DQoJcmV0dXJuIC0xOw0KICAgIH0NCg0K ICAgIGNsb3NlKGZkKTsNCg0KICAgIHB1dHMoInRlc3QgcGFzc2VkIik7DQog ICAgcmV0dXJuIDA7DQp9DQo= ---559023410-320655053-1169062978=:2732 Content-Type: text/plain; charset=us-ascii -- 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/ ---559023410-320655053-1169062978=:2732--