X-Spam-Check-By: sourceware.org
Date: Wed, 17 Jan 2007 13:42:58 -0600
From: Brian Ford <Brian.Ford@FlightSafety.com>
Reply-To: cygwin@cygwin.com
To: cygwin@cygwin.com
Subject: Re: 1.7.0 CVS mmap failure
In-Reply-To: <20070117103959.GA23172@calimero.vinschen.de>
Message-ID: <Pine.CYG.4.58.0701171237581.2732@PC1163-8460-XP.flightsafety.com>
References: <20070105095752.GB28768@calimero.vinschen.de>  <Pine.CYG.4.58.0701050959060.2704@PC1163-8460-XP.flightsafety.com>  <Pine.CYG.4.58.0701051054010.280@PC1163-8460-XP.flightsafety.com>  <Pine.CYG.4.58.0701051144030.2880@PC1163-8460-XP.flightsafety.com>  <20070105182234.GC12776@calimero.vinschen.de>  <Pine.CYG.4.58.0701051237090.2880@PC1163-8460-XP.flightsafety.com>  <20070105192302.GD12776@calimero.vinschen.de> <20070110095345.GL23638@calimero.vinschen.de>  <Pine.CYG.4.58.0701100903410.3236@PC1163-8460-XP.flightsafety.com>  <Pine.CYG.4.58.0701161717400.2732@PC1163-8460-XP.flightsafety.com>  <20070117103959.GA23172@calimero.vinschen.de>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="-559023410-320655053-1169062978=:2732"
X-IsSubscribed: yes
Mailing-List: contact cygwin-help@cygwin.com; run by ezmlm
Precedence: bulk
List-Id: <cygwin.cygwin.com>
List-Unsubscribe: <mailto:cygwin-unsubscribe-archive-cygwin=delorie.com@cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe@cygwin.com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin@cygwin.com>
List-Help: <mailto:cygwin-help@cygwin.com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner@cygwin.com
Mail-Followup-To: cygwin@cygwin.com
Delivered-To: mailing list cygwin@cygwin.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: <Pine.CYG.4.58.0701171342582.2732@PC1163-8460-XP.flightsafety.com>
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--
