<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div>Hello,</div><div><br></div><div>Thank you very much for helping me. Before I see your reply, I enlarged my program and I saw more page faults in code segment. Now I know there is something called fault-around.</div><div><br></div><div>I read the Chapter 16 of the ULK which introduces file access. I started to know a technique called read-ahead from this chapter. So what's the difference or relationship between fault-around and read-ahead? I think they are used in different areas (layers) but have the same idea. Am I right?&nbsp;</div><br>Best regards<br><br><br><div></div><div id="divNeteaseMailCard"></div><br><pre><br>At 2014-11-04 21:13:56, "Kirill A. Shutemov" &lt;kirill@shutemov.name&gt; wrote:
&gt;On Tue, Nov 04, 2014 at 07:41:08PM +0700, Mulyadi Santosa wrote:
&gt;&gt; Hello...
&gt;&gt; 
&gt;&gt; how big is your binary anyway?
&gt;&gt; 
&gt;&gt; from your log, if my calculation is right, your code segment is around 330
&gt;&gt; KiB. But bear in mind, that not all of them are your code. There are other
&gt;&gt; code like PLT, function prefix and so on.
&gt;&gt; 
&gt;&gt; Also, even if your code is big, are you sure all of them are executed?
&gt;&gt; Following 20/80 principle, most of the time, when running an application,
&gt;&gt; only 20% portion of the application are really used/executed during 80% of
&gt;&gt; application lifetime. The rest, it might untouched at all.
&gt;&gt; 
&gt;&gt; 
&gt;&gt; On Thu, Oct 30, 2014 at 2:10 PM, ÇØß®¸ê &lt;michaelbest002@126.com&gt; wrote:
&gt;&gt; 
&gt;&gt; &gt;
&gt;&gt; &gt;
&gt;&gt; &gt;
&gt;&gt; &gt; Dear all,
&gt;&gt; &gt;
&gt;&gt; &gt;
&gt;&gt; &gt; I am a kernel newbie who want's to learn more about memory management.
&gt;&gt; &gt; Recently I'm doing some experiment on page fault handler. There happened
&gt;&gt; &gt; something that I couldn't understand.
&gt;&gt; &gt;
&gt;&gt; &gt;
&gt;&gt; &gt; From reading the book Understanding the Linux Kernel, I know that the
&gt;&gt; &gt; kernel loads a page as late as possible. It's only happened when the
&gt;&gt; &gt; program has to reference  (read, write, or execute) a page yet the page is
&gt;&gt; &gt; not in memory.
&gt;&gt; &gt;
&gt;&gt; &gt;
&gt;&gt; &gt; However, when I traced all page faults in my test program, I found
&gt;&gt; &gt; something strange. My test program is large enough, but there are only two
&gt;&gt; &gt; page faults triggered in the code segment of the program, while most of the
&gt;&gt; &gt; faults are not in code segment.
&gt;&gt; &gt;
&gt;&gt; &gt;
&gt;&gt; &gt; At first I thought that perhaps the page is not the normal 4K page. Thus I
&gt;&gt; &gt; turned off the PAE support in the config file. But the log remains
&gt;&gt; &gt; unchanged.
&gt;&gt; &gt;
&gt;&gt; &gt;
&gt;&gt; &gt; So why are there only 2 page faults in code segment? It shouldn't be like
&gt;&gt; &gt; this in my opinion. Please help me.
&gt;
&gt;We have "faultaround" feature in recent kernel which tries to map 64k with
&gt;one page fault if the pages are already in page cache. There's handle in
&gt;debugfs to disable the feature, if you want to play with this.
&gt;
&gt;&gt; &gt; The attachment is my kernel log. Limited by the mail size, I couldn't
&gt;&gt; &gt; upload my program, but I believe that the log is clear enough.
&gt;&gt; &gt;
&gt;&gt; &gt;
&gt;&gt; &gt; Thank you very much.
&gt;&gt; &gt; Best regards
&gt;&gt; &gt;
&gt;&gt; &gt;
&gt;&gt; &gt; _______________________________________________
&gt;&gt; &gt; Kernelnewbies mailing list
&gt;&gt; &gt; Kernelnewbies@kernelnewbies.org
&gt;&gt; &gt; http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
&gt;&gt; &gt;
&gt;&gt; &gt;
&gt;&gt; 
&gt;&gt; 
&gt;&gt; -- 
&gt;&gt; regards,
&gt;&gt; 
&gt;&gt; Mulyadi Santosa
&gt;&gt; Freelance Linux trainer and consultant
&gt;&gt; 
&gt;&gt; blog: the-hydra.blogspot.com
&gt;&gt; training: mulyaditraining.blogspot.com
&gt;
&gt;-- 
&gt; Kirill A. Shutemov
</pre></div><br><br><span title="neteasefooter"><span id="netease_mail_footer"></span></span>