|
@@ -24,6 +24,8 @@
|
|
|
#include <asm/tlbflush.h>
|
|
|
#include "internal.h"
|
|
|
|
|
|
+#define SEQ_PUT_DEC(str, val) \
|
|
|
+ seq_put_decimal_ull_width(m, str, (val) << (PAGE_SHIFT-10), 8)
|
|
|
void task_mem(struct seq_file *m, struct mm_struct *mm)
|
|
|
{
|
|
|
unsigned long text, lib, swap, anon, file, shmem;
|
|
@@ -53,39 +55,28 @@ void task_mem(struct seq_file *m, struct mm_struct *mm)
|
|
|
lib = (mm->exec_vm << PAGE_SHIFT) - text;
|
|
|
|
|
|
swap = get_mm_counter(mm, MM_SWAPENTS);
|
|
|
- seq_printf(m,
|
|
|
- "VmPeak:\t%8lu kB\n"
|
|
|
- "VmSize:\t%8lu kB\n"
|
|
|
- "VmLck:\t%8lu kB\n"
|
|
|
- "VmPin:\t%8lu kB\n"
|
|
|
- "VmHWM:\t%8lu kB\n"
|
|
|
- "VmRSS:\t%8lu kB\n"
|
|
|
- "RssAnon:\t%8lu kB\n"
|
|
|
- "RssFile:\t%8lu kB\n"
|
|
|
- "RssShmem:\t%8lu kB\n"
|
|
|
- "VmData:\t%8lu kB\n"
|
|
|
- "VmStk:\t%8lu kB\n"
|
|
|
- "VmExe:\t%8lu kB\n"
|
|
|
- "VmLib:\t%8lu kB\n"
|
|
|
- "VmPTE:\t%8lu kB\n"
|
|
|
- "VmSwap:\t%8lu kB\n",
|
|
|
- hiwater_vm << (PAGE_SHIFT-10),
|
|
|
- total_vm << (PAGE_SHIFT-10),
|
|
|
- mm->locked_vm << (PAGE_SHIFT-10),
|
|
|
- mm->pinned_vm << (PAGE_SHIFT-10),
|
|
|
- hiwater_rss << (PAGE_SHIFT-10),
|
|
|
- total_rss << (PAGE_SHIFT-10),
|
|
|
- anon << (PAGE_SHIFT-10),
|
|
|
- file << (PAGE_SHIFT-10),
|
|
|
- shmem << (PAGE_SHIFT-10),
|
|
|
- mm->data_vm << (PAGE_SHIFT-10),
|
|
|
- mm->stack_vm << (PAGE_SHIFT-10),
|
|
|
- text >> 10,
|
|
|
- lib >> 10,
|
|
|
- mm_pgtables_bytes(mm) >> 10,
|
|
|
- swap << (PAGE_SHIFT-10));
|
|
|
+ SEQ_PUT_DEC("VmPeak:\t", hiwater_vm);
|
|
|
+ SEQ_PUT_DEC(" kB\nVmSize:\t", total_vm);
|
|
|
+ SEQ_PUT_DEC(" kB\nVmLck:\t", mm->locked_vm);
|
|
|
+ SEQ_PUT_DEC(" kB\nVmPin:\t", mm->pinned_vm);
|
|
|
+ SEQ_PUT_DEC(" kB\nVmHWM:\t", hiwater_rss);
|
|
|
+ SEQ_PUT_DEC(" kB\nVmRSS:\t", total_rss);
|
|
|
+ SEQ_PUT_DEC(" kB\nRssAnon:\t", anon);
|
|
|
+ SEQ_PUT_DEC(" kB\nRssFile:\t", file);
|
|
|
+ SEQ_PUT_DEC(" kB\nRssShmem:\t", shmem);
|
|
|
+ SEQ_PUT_DEC(" kB\nVmData:\t", mm->data_vm);
|
|
|
+ SEQ_PUT_DEC(" kB\nVmStk:\t", mm->stack_vm);
|
|
|
+ seq_put_decimal_ull_width(m,
|
|
|
+ " kB\nVmExe:\t", text >> 10, 8);
|
|
|
+ seq_put_decimal_ull_width(m,
|
|
|
+ " kB\nVmLib:\t", lib >> 10, 8);
|
|
|
+ seq_put_decimal_ull_width(m,
|
|
|
+ " kB\nVmPTE:\t", mm_pgtables_bytes(mm) >> 10, 8);
|
|
|
+ SEQ_PUT_DEC(" kB\nVmSwap:\t", swap);
|
|
|
+ seq_puts(m, " kB\n");
|
|
|
hugetlb_report_usage(m, mm);
|
|
|
}
|
|
|
+#undef SEQ_PUT_DEC
|
|
|
|
|
|
unsigned long task_vsize(struct mm_struct *mm)
|
|
|
{
|
|
@@ -739,6 +730,8 @@ void __weak arch_show_smap(struct seq_file *m, struct vm_area_struct *vma)
|
|
|
{
|
|
|
}
|
|
|
|
|
|
+#define SEQ_PUT_DEC(str, val) \
|
|
|
+ seq_put_decimal_ull_width(m, str, (val) >> 10, 8)
|
|
|
static int show_smap(struct seq_file *m, void *v, int is_pid)
|
|
|
{
|
|
|
struct proc_maps_private *priv = m->private;
|
|
@@ -812,51 +805,34 @@ static int show_smap(struct seq_file *m, void *v, int is_pid)
|
|
|
ret = SEQ_SKIP;
|
|
|
}
|
|
|
|
|
|
- if (!rollup_mode)
|
|
|
- seq_printf(m,
|
|
|
- "Size: %8lu kB\n"
|
|
|
- "KernelPageSize: %8lu kB\n"
|
|
|
- "MMUPageSize: %8lu kB\n",
|
|
|
- (vma->vm_end - vma->vm_start) >> 10,
|
|
|
- vma_kernel_pagesize(vma) >> 10,
|
|
|
- vma_mmu_pagesize(vma) >> 10);
|
|
|
-
|
|
|
-
|
|
|
- if (!rollup_mode || last_vma)
|
|
|
- seq_printf(m,
|
|
|
- "Rss: %8lu kB\n"
|
|
|
- "Pss: %8lu kB\n"
|
|
|
- "Shared_Clean: %8lu kB\n"
|
|
|
- "Shared_Dirty: %8lu kB\n"
|
|
|
- "Private_Clean: %8lu kB\n"
|
|
|
- "Private_Dirty: %8lu kB\n"
|
|
|
- "Referenced: %8lu kB\n"
|
|
|
- "Anonymous: %8lu kB\n"
|
|
|
- "LazyFree: %8lu kB\n"
|
|
|
- "AnonHugePages: %8lu kB\n"
|
|
|
- "ShmemPmdMapped: %8lu kB\n"
|
|
|
- "Shared_Hugetlb: %8lu kB\n"
|
|
|
- "Private_Hugetlb: %7lu kB\n"
|
|
|
- "Swap: %8lu kB\n"
|
|
|
- "SwapPss: %8lu kB\n"
|
|
|
- "Locked: %8lu kB\n",
|
|
|
- mss->resident >> 10,
|
|
|
- (unsigned long)(mss->pss >> (10 + PSS_SHIFT)),
|
|
|
- mss->shared_clean >> 10,
|
|
|
- mss->shared_dirty >> 10,
|
|
|
- mss->private_clean >> 10,
|
|
|
- mss->private_dirty >> 10,
|
|
|
- mss->referenced >> 10,
|
|
|
- mss->anonymous >> 10,
|
|
|
- mss->lazyfree >> 10,
|
|
|
- mss->anonymous_thp >> 10,
|
|
|
- mss->shmem_thp >> 10,
|
|
|
- mss->shared_hugetlb >> 10,
|
|
|
- mss->private_hugetlb >> 10,
|
|
|
- mss->swap >> 10,
|
|
|
- (unsigned long)(mss->swap_pss >> (10 + PSS_SHIFT)),
|
|
|
- (unsigned long)(mss->pss >> (10 + PSS_SHIFT)));
|
|
|
+ if (!rollup_mode) {
|
|
|
+ SEQ_PUT_DEC("Size: ", vma->vm_end - vma->vm_start);
|
|
|
+ SEQ_PUT_DEC(" kB\nKernelPageSize: ", vma_kernel_pagesize(vma));
|
|
|
+ SEQ_PUT_DEC(" kB\nMMUPageSize: ", vma_mmu_pagesize(vma));
|
|
|
+ seq_puts(m, " kB\n");
|
|
|
+ }
|
|
|
|
|
|
+ if (!rollup_mode || last_vma) {
|
|
|
+ SEQ_PUT_DEC("Rss: ", mss->resident);
|
|
|
+ SEQ_PUT_DEC(" kB\nPss: ", mss->pss >> PSS_SHIFT);
|
|
|
+ SEQ_PUT_DEC(" kB\nShared_Clean: ", mss->shared_clean);
|
|
|
+ SEQ_PUT_DEC(" kB\nShared_Dirty: ", mss->shared_dirty);
|
|
|
+ SEQ_PUT_DEC(" kB\nPrivate_Clean: ", mss->private_clean);
|
|
|
+ SEQ_PUT_DEC(" kB\nPrivate_Dirty: ", mss->private_dirty);
|
|
|
+ SEQ_PUT_DEC(" kB\nReferenced: ", mss->referenced);
|
|
|
+ SEQ_PUT_DEC(" kB\nAnonymous: ", mss->anonymous);
|
|
|
+ SEQ_PUT_DEC(" kB\nLazyFree: ", mss->lazyfree);
|
|
|
+ SEQ_PUT_DEC(" kB\nAnonHugePages: ", mss->anonymous_thp);
|
|
|
+ SEQ_PUT_DEC(" kB\nShmemPmdMapped: ", mss->shmem_thp);
|
|
|
+ SEQ_PUT_DEC(" kB\nShared_Hugetlb: ", mss->shared_hugetlb);
|
|
|
+ seq_put_decimal_ull_width(m, " kB\nPrivate_Hugetlb: ",
|
|
|
+ mss->private_hugetlb >> 10, 7);
|
|
|
+ SEQ_PUT_DEC(" kB\nSwap: ", mss->swap);
|
|
|
+ SEQ_PUT_DEC(" kB\nSwapPss: ",
|
|
|
+ mss->swap_pss >> PSS_SHIFT);
|
|
|
+ SEQ_PUT_DEC(" kB\nLocked: ", mss->pss >> PSS_SHIFT);
|
|
|
+ seq_puts(m, " kB\n");
|
|
|
+ }
|
|
|
if (!rollup_mode) {
|
|
|
arch_show_smap(m, vma);
|
|
|
show_smap_vma_flags(m, vma);
|
|
@@ -864,6 +840,7 @@ static int show_smap(struct seq_file *m, void *v, int is_pid)
|
|
|
m_cache_vma(m, vma);
|
|
|
return ret;
|
|
|
}
|
|
|
+#undef SEQ_PUT_DEC
|
|
|
|
|
|
static int show_pid_smap(struct seq_file *m, void *v)
|
|
|
{
|