Note that there are some explanatory texts on larger screens.

plurals
  1. POWhy would a device driver cause page faults?
    primarykey
    data
    text
    <p>I have a Windows console application that uses a parallel IO card for high speed data transmission. (General Standards <a href="http://www.generalstandards.com/view-products2.php?BD_family=hpdi32alt" rel="nofollow">HPDI32ALT</a>)</p> <p>My process is running in user mode, however, I am sure somewhere behind the device's API there is some kernel mode driver activity (PCI DMA transfers, reading device status registers etc..) The working model is roughly this:</p> <ul> <li>at startup: I request a pointer to an IO buffer from API.</li> <li>in my main loop: <ul> <li>block on API waiting for room in device's buffer (low watermark)</li> <li>fill the IO buffer with transmission data</li> <li>begin transmission to device by passing it the pointer to the IO buffer (during this time the API uses DMA on PCI bus to move the data to the card)</li> <li>block on API waiting for IO to complete</li> </ul></li> </ul> <p>The application appears to be working correctly with proper data rate and sustained throughput for long periods of time, however, when I look at the process in sys internals tool process explorer I see a large number of page faults (~6k per second). I am moving ~30MB/s to the card.</p> <p>I have plenty of RAM and am reasonably sure the page faults are not disk IO related.</p> <p>Any thoughts on what could be causing the page faults? I also have a receive side to this application that is using an identical IO card in receive mode. The receive mode use of the API does not cause a large number page faults.</p> <p>Could the act of moving the IO buffer to kernel mode cause page faults?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload