It has probably to do with the size of the data you attemp to read from the file.
I've a 64-bit program, running on Windows 2008 R2 64-bit with 18GB memory,which reads a file (16GB) with FILE_FLAG_SEQUENTIAL_SCAN flag and I see different behavior with the size of the buffer I pass to ReadFile(). For large buffer size, say 64MB, I see lots of page fualt but if I use buffer size of 512K, I see none. What I mean that with large buffer, the page faults would steadly rises to say 43 millions, but for 512K buffer it (page faults) won't increase at all and stays around 1000-2000.
I'm trying to understand that too. I can see that page faults does impact performance but not by much.
> On Thursday, August 05, 2010 6:39 AM mterrisse wrote:
> Hello,
>
> I am using Windows 7 64-bit but I develop a 32-bit application. When
> It is running, the Windows task manager reports millions of page
> faults and I am trying to track them to improve performance.
> The number of page faults reported for the same program using a 32-bit
> version of Windows is not so big, so it has to do with WOW64.
>
> I try to focus on faults directly linked to my code but most of the
> page faults come from Windows Api like ReadFile or SysAllocStringLen,
> and I cannot change anything to that.
> Is it well known that Win32 APIs can generate a lot of page faults, or
> is there anything I can do to limit that ?
>
> Note that I have 16 GB RAM installed on the machine, that is large,
> and a test program I wrote can generate thousands of pages faults
> immediately while it comsumes less than 1 MB.
>
> Regards,
>
> Michel
>> On Thursday, August 05, 2010 8:56 AM Lorne wrote:
>> Are you sure these are real faults? Every time your program asks windows to
>> look for some data and it is not already in RAM it will load it and the
>> failure to find it first time is recorded as a fault. The first time you
>> program executes anything or during its startup my guess is that it will
>> throw many page faults which are just related to data being loaded into RAM.
>> I just looked on my machine and even Microsoft software like Outlook is
>> showing over 50,000 "page faults".
>>> On Wednesday, August 11, 2010 6:34 AM mterrisse wrote:
>>> I do not know what you call "real faults". Page faults here are not
>>> invalid page faults or protection faults. The process runs with no
>>> error.
>>>
>>> ou
>>> AM.
>>> I understand that. What I cannot understand is how a small program
>>> (code : ~ 300 KB, memory usage : ~ 500 KB) can generate millions of
>>> such page faults in a few seconds. The number of page faults is far
>>> greater than the number of bytes consumed by the process, this means
>>> that data is being loaded into RAM not only the first time it needs to
>>> access a page, but thousands of times for the same page. Strange.
>>> And this does not happen with the 32-bit version of Windows 7.
>>>
>>> Michel
|