<div dir="ltr">
        
        
        


<blockquote style="margin-left:0cm;margin-right:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">Hello
everyone,</font></font></font></blockquote>
<blockquote style="margin-left:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">I
am using kvm and VM OS is ubuntu 14.04. Host hardware is intel core
i5, running ubuntu 14.04 OS.</font></font></font></blockquote>
<blockquote style="margin-left:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">Background:I
am trying to track the number of pages accessed by a VM in certain
period of time. To do this, I am setting the pte flags of all pages
present and which are not protected (i.e., PROTNONE != 1) on the host
virtual address space belonging to the VM process as NOT PRESENT AND
PROTECTED (by clearing PRESENT bit and setting PROTNONE bit in the
pte entry).</font></font></font></blockquote>
<blockquote style="margin-left:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">That
is, for pages belonging to the VM process, if they are present and
not protected, mark their pte entries to reflect that they are not
present but protected.</font></font></font></blockquote>
<blockquote style="margin-left:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">The
idea is that whenever this page is accessed, there has to be a fault
because the present bit is cleared. Now, inside the fault handler
handle_pte_fault, I registered a kernel module function, which will
reset the pte bits for the faulted address. [Resetting means making
PRESENT = 1 and PROTNONE = 0]</font></font></font></blockquote>
<blockquote style="margin-left:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">I
am considering the VM as any other normal process on the host.</font></font></font></blockquote>
<blockquote style="margin-left:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">Current
Scenario:I am testing the above by running a sample test program
inside the VM which does the following.</font></font></font></blockquote>
<blockquote style="margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">1)
Mallocs 200 MB which is 51200 pages.</font></font></font></blockquote>
<blockquote style="margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">2)
Accesses all the pages to make sure that they are brought into
memory.</font></font></font></blockquote>
<blockquote style="margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">3)
sleep for say 10 secs to allow tracker to mark the pages</font></font></font></blockquote>
<blockquote style="margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">4)
access all the pages [which is expected to generate faults]</font></font></font></blockquote>
<blockquote style="margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">Ran
this test process couple of times.</font></font></font></blockquote>
<blockquote style="margin-left:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">My
tracker is runs on host.</font></font></font></blockquote>
<blockquote style="margin-left:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">Issue: My
tracker module reports very few pages as accessed which is in turn
because of very few faults say around 350 faults for 51200 which are
expected. Also I am doing a tlb_flush_all in host to avoid direct
translations after the pages are marked and before they are accessed.</font></font></font></blockquote>
<blockquote style="margin-left:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">Note:
I disabled ksm and huge pages features.</font></font></font></blockquote>
<blockquote style="margin-left:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">I
tested the tracker on a process running on the host which malloced 900
MB and accesses all the pages, and it reflects the pages dirtied as
the number of pages dirtied. But the issue happens only in the case
of tracking VMs.</font></font></font></blockquote>
<blockquote style="margin-left:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">Queries:1)
Are all the tlb entries flushed when tlb_flush_all is done or are the
tlb entries of VM tagged separately and this is causing an issue?</font></font></font></blockquote>
<blockquote style="margin-left:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">2)
Can anyone please guide as to what could be going wrong? Or any
comments on the procedure that could go wrong would help. Any references would also help as I am new to this qemu, kvm memory management area.</font></font></font></blockquote>
<blockquote style="margin-left:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">Thanks,</font></font></font></blockquote>
<blockquote style="margin-left:0cm;margin-bottom:0cm;border:none;padding:0cm">
<font color="#222222"><font face="arial, sans-serif"><font style="font-size:9pt">Ravali</font></font></font></blockquote></div>