Solved

Pagefaults: How much do they impact performance nowadays?

Posted on 2011-02-14
3
429 Views
Last Modified: 2013-12-17
How important are pagefaults nowadays?

It used to be pagefaults were the dominating factor determining performance (and completely ignored in all those analyses of algorithms). But now computers typically have more than 2GB of ROM—the entire program and program data can fit in ROM.

Does this mean I needn't worry about where data is placed in memory like I used to?

For example, here's a test I did back in the mid 1980's:
Below are two examples of a FORTRAN nested Do loop which sets every element of an array A  to the value X. Both programs achieve exactly the same result; the only difference between the two is the order in which the array elements are referenced.

The example on the left loops with the first index I changing most often, while the example on the right loops with the last index K changing most often.
    DIMENSION A(100, 100, 100)    DIMENSION A(100, 100, 100)
    X = 1.0                       X = 1.0
    DO 10, K=1, 100               DO 10, I=1, 100
    DO 10, J=1, 100               DO 10, J=1, 100
    DO 10, I=1, 100               DO 10, K=1, 100
10  A(I,J,K) = X              10  A(I,J,K) = X
    END                           END

Open in new window

While the two examples appear to be nearly identical, a test run of the two programs reveals a startling difference between the two  —  the example on the left took 45 seconds to run using 30 seconds of CPU time, while the example on the right took 1 1/2 hours to run using 17 minutes of CPU time! [in the 1980's]

Ever since then I've been careful about data placement in memory and what order it's accessed.

Now with C# I don't have as much control over where in memory data is placed, and I'm wondering if I still need to be concerned about that.
0
Comment
Question by:deleyd
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
3 Comments
 
LVL 75

Assisted Solution

by:käµfm³d 👽
käµfm³d   👽 earned 166 total points
ID: 34892825
And don't forget about the garbage collector  = )


I believed the canned response is to say, "let the compiler figure it out." While there are subtleties to be attentive to such as the scenario you outline above, I would say for the most part, you are going to let the compiler do the work for you in a language like C# or Java. In languages such as C, you may be more inclined to monitor memory usage, but today, that is mostly a task for the embedded systems guys.
0
 
LVL 4

Assisted Solution

by:zylver
zylver earned 167 total points
ID: 34893237
kaufmed touch an important point; "the compiler". today the compilers optimizes this thing. and you only need to worry about the bussines logic. this is the goal of microsoft. be more productive forgetting the little problems
0
 
LVL 5

Accepted Solution

by:
dcesari earned 167 total points
ID: 34894872
Nowadays probably the equivalent of pagefault is cachehit or cachemiss - are you accessing sets of data that fit in the processor cache or not? - but the techniques to achieve cache hits are similar to those to avoid pagefaults.

I agree that now compilers do much of the work for you and in the fortran program you show, the loops would be automatically reordered even at the smallest level of optimization, however the compiler has a small-scale view of your code, and limited power to reorganize the large-scale design decisions that you took, if you design a GUI application this is of no importance, but if you manage big arrays of data, especially on multithreaded applications / multicore architectures, then how you organize and access the data in memory can still do the difference even with microsoft compilers.

0

Featured Post

Visualize your virtual and backup environments

Create well-organized and polished visualizations of your virtual and backup environments when planning VMware vSphere, Microsoft Hyper-V or Veeam deployments. It helps you to gain better visibility and valuable business insights.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

We all know that functional code is the leg that any good program stands on when it comes right down to it, however, if your program lacks a good user interface your product may not have the appeal needed to keep your customers happy. This issue can…
It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
Monitoring a network: how to monitor network services and why? Michael Kulchisky, MCSE, MCSA, MCP, VTSP, VSP, CCSP outlines the philosophy behind service monitoring and why a handshake validation is critical in network monitoring. Software utilized …
Visualize your data even better in Access queries. Given a date and a value, this lesson shows how to compare that value with the previous value, calculate the difference, and display a circle if the value is the same, an up triangle if it increased…

630 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question