Re: Crash shows - Invalid Memory size

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sharyathi Nagesh wrote:

> Hi
>
> We encountered this problem with Crash showing invalid memory when ran
> on live machine:
> ======================================
> [root@venuslp11 ~]# free -m
>              total       used       free     shared    buffers     cached
> Mem:          2151       1594        557          0        583        795
>              ^^^^^^
> -/+ buffers/cache:        215       1935
> Swap:         1983          0       1983
> [root@venuslp11 ~]# cat /proc/ppc64/lparcfg | grep DesMem
> DesMem=2304
>       ^^^^^^
> [root@venuslp11 ~]# rpm -q crash
> crash-4.0-3.7
> [root@venuslp11 ~]# crash
> ...
>       KERNEL: /usr/lib/debug/lib/modules/2.6.18-1.2732.el5/vmlinux
>     DUMPFILE: /dev/mem
>         CPUS: 2
>         DATE: Fri Oct 27 07:58:54 2006
>       UPTIME: 01:12:34
> LOAD AVERAGE: 1.52, 1.05, 0.48
>        TASKS: 98
>     NODENAME: venuslp11.upt.austin.ibm.com
>      RELEASE: 2.6.18-1.2732.el5
>      VERSION: #1 SMP Tue Oct 17 18:24:27 EDT 2006
>      MACHINE: ppc64  (2301 Mhz)
>       MEMORY: 3.2 GB
>              ^^^^^^^^
>          PID: 25097
>      COMMAND: "crash"
>         TASK: c000000000fedbe0  [THREAD_INFO: c00000000b190000]
>          CPU: 0
>        STATE: TASK_RUNNING (ACTIVE)
>
> crash>
> ==================================
> As I looked into the code I found:
>         The differences are observed because of the different way in which
> they(proc and crash) are implemented to calculate Total Memory.
> In /proc/meminfo it traverse through the memory counting each page and it has
> different routines to calculate No of pages in highmem, init section, bootmem etc.
> Which may be difficult to implement with Crash.
>   Instead we can look into sys file
> implementation(/sys/devices/system/node/node<n>/meminfo). Here the Total Page is
> got not from unsigned long node_spanned_pages but from long node_present_pages.
> The definitions of  node_present_pages says 'total number of physical pages'
> while node_spanned_pages says 'total size of physical page range, including holes'.
>         This is observed because of way Node 2 is spread in the machine its
> pfn(physical frame number) starts from 0 while that of 0th and 1st node
> starts from 4096 and 8192 pfns respectively. so node3->spanned_pages has
> double counted value from even the node 0 and node 1. Hence I feel its
> better to use present_pages which has only the pages from the node
> excluding the holes.
>
> ======================================
> The patch to fix the problem:
> Let me know of your opinion..
>
>   ------------------------------------------------------------------------------------------------------------------------
>                               Name: node_present_page.patch
>    node_present_page.patch    Type: text/x-patch
>                           Encoding: 7bit

Hi Sharyathi,

I agree that the "MEMORY:" size output is incorrect on your
system for the reasons you have outlined.

But your proposed patch would cause other things to break,
because it would set each internal per-node "nt->size" field
to the present pages instead of the spanned pages.
Therefore, any function that uses the per-node nt->size
value -- such as dump_mem_map(), is_page_ptr(),
phys_to_page(), next_kpage(), etc...) would end up
using an incorrect, shortchanged, value.

However, the total_node_memory() function specifically
should probably use the pglist_data  node_present_pages
value instead of the "nt->size" value that is based upon the
node's spanned pages.

I originally thought this might come up, as evidenced by
the fact that I initialize the "pglist_data_node_present_pages"
member offset, but don't use it anywere.

Let me tinker with this for a while...

Thanks,
  Dave




--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/crash-utility

[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux