Up to now "page_in" and "swap_in" in /proc/vz/latency has been provided
in cpu cycles while other latencies are in nanoseconds there.

Let's make a single measure unit for all latencies, so provide swap_in
and page_in in nanoseconds as well.

https://pmc.acronis.com/browse/VSTOR-16659

Signed-off-by: Konstantin Khorenko <[email protected]>
---
 mm/memory.c | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/mm/memory.c b/mm/memory.c
index 3d26170d4529..67e0a0131d0c 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -2619,9 +2619,9 @@ static int do_swap_page(struct mm_struct *mm, struct 
vm_area_struct *vma,
        int locked;
        int exclusive = 0;
        int ret = 0;
-       cycles_t start;
+       u64 start;
 
-       start = get_cycles();
+       start = ktime_to_ns(ktime_get());
        if (!pte_unmap_same(mm, pmd, page_table, orig_pte))
                goto out;
 
@@ -2781,7 +2781,8 @@ static int do_swap_page(struct mm_struct *mm, struct 
vm_area_struct *vma,
        pte_unmap_unlock(page_table, ptl);
 out:
        local_irq_disable();
-       KSTAT_LAT_PCPU_ADD(&kstat_glob.swap_in, get_cycles() - start);
+       start = ktime_to_ns(ktime_get()) - start;
+       KSTAT_LAT_PCPU_ADD(&kstat_glob.swap_in, start);
        local_irq_enable();
 
        return ret;
@@ -2895,7 +2896,7 @@ static int __do_fault(struct vm_area_struct *vma, 
unsigned long address,
 {
        struct vm_fault vmf;
        int ret;
-       cycles_t start;
+       u64 start;
 
        vmf.virtual_address = (void __user *)(address & PAGE_MASK);
        vmf.pgoff = pgoff;
@@ -2907,7 +2908,7 @@ static int __do_fault(struct vm_area_struct *vma, 
unsigned long address,
        vmf.pmd = pmd;
        vmf.vma = vma;
 
-       start = get_cycles();
+       start = ktime_to_ns(ktime_get());
        ret = vma->vm_ops->fault(vma, &vmf);
        if (unlikely(ret & (VM_FAULT_ERROR | VM_FAULT_NOPAGE | VM_FAULT_RETRY |
                            VM_FAULT_DONE_COW)))
@@ -2926,7 +2927,8 @@ static int __do_fault(struct vm_area_struct *vma, 
unsigned long address,
                VM_BUG_ON_PAGE(!PageLocked(vmf.page), vmf.page);
 
        local_irq_disable();
-       KSTAT_LAT_PCPU_ADD(&kstat_glob.page_in, get_cycles() - start);
+       start = ktime_to_ns(ktime_get()) - start;
+       KSTAT_LAT_PCPU_ADD(&kstat_glob.page_in, start);
        local_irq_enable();
 
        *page = vmf.page;
-- 
2.15.1

_______________________________________________
Devel mailing list
[email protected]
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to