----- Original Message -----
在 2013年3月27日星期三,Dave Anderson 写道:
----- Original Message -----
> kmem -m|-M is used for displaying information of all ksm pages or
> some ksm pages for specified ksm stable tree node addresses
>
> for example:
> crash> kmem -m
> STABLE_NODE : ffff88083fc927e0
> PAGE : ffffea000e667998
> PHYSICAL ADDRESS: 41d475000
>
> PID: 2967 MAPPING: 3
>
> STABLE_NODE : ffff88083fc84a10
> PAGE : ffffea000e3dd5d8
> PHYSICAL ADDRESS: 411aad000
>
> PID: 2967 MAPPING: 7
>
> STABLE_NODE : ffff88041980dda8
> PAGE : ffffea000e335568
> PHYSICAL ADDRESS: 40eaab000
>
> PID: 2967 MAPPING: 8
> ...
>
> STABLE_NODE : ffff880841ea43f8
> PAGE : ffffea000f62de38
> PHYSICAL ADDRESS: 465641000
>
> PID: 2967 MAPPING: 729
> PID: 3017 MAPPING: 499
>
> P.S.
> This patch is based on the patch from Qiao(qiaonuohan(a)cn.fujitsu.com )
> 0001-make-rbtree-manipulation-functions-global.patch
> Because this patch also uses rb_tree operations.
I cannot test this because all of my sample dumps either return:
crash> kmem -m
kmem: -m option not supported or applicable on this architecture or
kernel
crash>
this is the kernel that doesn't support ksm
or:
crash> kmem -m
ksm may not be enabled
crash>
This is because ksm is disabled or there is no ksm page in your
system.
Which one? Can't you determine that?
which, by the way, is not a very helpful error message.
Do you have a reasonably-sized vmcore that I can download and test?
I have no vmcore on hand now. You could follow the below steps to
make ksm work in your system.
* Ensure you are using kernel >= 2.6.31-0.94.rc4.fc12 and qemu-kvm
>=0.10.92-4.fc12
* Run two or more similar virtual machines
* service ksm start
* service ksmtuned start
* Wait a while
* Check whether pages were merged using /sys/kernel/mm/ksm/pages_shared
* If value in /sys/kernel/mm/ksm/pages_shared is not zero, you
could run crash kmem -m to see the output.
OK look, if I get the time, I'll try to set this up...
But just the fact that I have to go to all this trouble, and the fact
that you don't even have a sample vmcore available again begs the question
as to how useful -- or better put -- how often, this command would ever
be utilized.
On the other hand, if you were to create a "ksm" extension module, then
I would be more than happy to post it with all of the others on the
extensions web page.
Also, I have a question about the help message:
crash> help kmem
NAME
kmem - kernel memory
SYNOPSIS
kmem [-f|-F|-p|-c|-C|-i|-s|-S|-v|-V|-n|-z|-o|-m|-M] [slab] [[-P]
address]
[-g [flags]
DESCRIPTION
... [ cut ] ...
-m displays information of ksm pages.
-M same as -m, but also dumps virtual addresses that mapping the
ksm pages.
... [ cut ] ...
address when used with -m or -M, the address can be either a ksm stable
tree node address, a page's physical address, or a page pointer,
the information of the ksm page (if it is) is displayed.
... [ cut ] ...
Display information of ksm pages:
crash> kmem -m ffff88086f22eec0 ffff8803573964c0
STABLE_NODE : ffff88083fc927e0
PAGE : ffffea000e667998
PHYSICAL ADDRESS: 41d475000
PID: 2967 MAPPING: 3
STABLE_NODE : ffff88083fc84a10
PAGE : ffffea000e3dd5d8
PHYSICAL ADDRESS: 411aad000
PID: 2967 MAPPING: 7
STABLE_NODE : ffff88041980dda8
PAGE : ffffea000e335568
PHYSICAL ADDRESS: 40eaab000
PID: 2967 MAPPING: 8
......
STABLE_NODE : ffff880841ea43f8
PAGE : ffffea000f62de38
PHYSICAL ADDRESS: 465641000
PID: 2967 MAPPING: 729
PID: 3017 MAPPING: 499
crash>
Please tell me how the two address arguments ffff88086f22eec0 and
ffff8803573964c0 have any relationship to the subsequent display?
Sorry this is a mistake. The two addresses in the example are
redundant.
Well, they aren't "redundant", they just don't make any sense at all.
I'm presuming that they don't belong there at all, and that you're
just showing the output of "kmem -m" alone, correct?
Dave