FreeBSD Bugzilla – Attachment 217028 Details for
Bug 248463
linprocfs: /proc/meminfo values do not add up
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
proposed patch
diff (text/plain), 2.26 KB, created by
Mark Johnston
on 2020-08-05 14:08:10 UTC
(
hide
)
Description:
proposed patch
Filename:
MIME Type:
Creator:
Mark Johnston
Created:
2020-08-05 14:08:10 UTC
Size:
2.26 KB
patch
obsolete
>commit 8881590787136fdbfb2842dc4624104e118bfbf6 >Author: Mark Johnston <markjdb@gmail.com> >Date: Wed Aug 5 10:02:16 2020 -0400 > > Fix some inaccuracies in meminfo. > > - Fill out MemFree correctly. > - Populate the Buffers field correctly. > - The page cache consists of all pages in page queues. > >diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c >index 2dd9b43ac017..9070f6437a8e 100644 >--- a/sys/compat/linprocfs/linprocfs.c >+++ b/sys/compat/linprocfs/linprocfs.c >@@ -145,41 +145,30 @@ static int > linprocfs_domeminfo(PFS_FILL_ARGS) > { > unsigned long memtotal; /* total memory in bytes */ >- unsigned long memused; /* used memory in bytes */ > unsigned long memfree; /* free memory in bytes */ >- unsigned long buffers, cached; /* buffer / cache memory ??? */ >+ unsigned long cached; /* page cache */ >+ unsigned long buffers; /* buffer cache */ > unsigned long long swaptotal; /* total swap space in bytes */ > unsigned long long swapused; /* used swap space in bytes */ > unsigned long long swapfree; /* free swap space in bytes */ >- int i, j; >+ size_t sz; >+ int error, i, j; > > memtotal = physmem * PAGE_SIZE; >- /* >- * The correct thing here would be: >- * >- memfree = vm_free_count() * PAGE_SIZE; >- memused = memtotal - memfree; >- * >- * but it might mislead linux binaries into thinking there >- * is very little memory left, so we cheat and tell them that >- * all memory that isn't wired down is free. >- */ >- memused = vm_wire_count() * PAGE_SIZE; >- memfree = memtotal - memused; >+ memfree = (unsigned long)vm_free_count() * PAGE_SIZE; > swap_pager_status(&i, &j); > swaptotal = (unsigned long long)i * PAGE_SIZE; > swapused = (unsigned long long)j * PAGE_SIZE; > swapfree = swaptotal - swapused; >- /* >- * We'd love to be able to write: >- * >- buffers = bufspace; >- * >- * but bufspace is internal to vfs_bio.c and we don't feel >- * like unstaticizing it just for linprocfs's sake. >- */ >- buffers = 0; >- cached = vm_inactive_count() * PAGE_SIZE; >+ cached = >+ (vm_active_count() + vm_inactive_count() + vm_laundry_count()) * >+ PAGE_SIZE; >+ >+ sz = sizeof(buffers); >+ error = kernel_sysctlbyname(curthread, "vfs.bufspace", &buffers, &sz, >+ NULL, 0, 0, 0); >+ if (error != 0) >+ buffers = 0; > > sbuf_printf(sb, > "MemTotal: %9lu kB\n"
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 248463
: 217028