- 论坛徽章:
- 6
|
回复 3# xiongweixie
请问怎么配置呢? 谢谢
现在看 system.map 的 mem_map 可以看到有 mem_map_next.part.18 mem_map_next.part.31 等。
装xen 之前 mem_map 还在的。装完xen 就没了。
(1)如果你的内核不会用在NUMA架构上的话,就关掉相应的配置项,重新编译内核。(不要告诉我你不会修改内核配置项 ,自己google吧)
(2)如果你的内核可能会用在NUMA的架构上,那么获取内存的代码大体上类似如下:- #include <linux/module.h>
- #include <asm/pgtable.h>
- #include <linux/version.h>
- #include <asm/page.h>
- #include <linux/gfp.h>
- #include <linux/page-flags.h>
- #include <linux/sched.h>//find_task_by_vpid
- #include <linux/mm.h>//find_vma
- #include <linux/mmzone.h>
- MODULE_LICENSE("GPL");
- MODULE_AUTHOR("<tingw.liu@gmail.com>");
- MODULE_DESCRIPTION("List all node mem_map");
- void show_zone_mem(struct zone *zone, int nodeid)
- {
- printk(KERN_ALERT "node %d zone %8s: pages free %llu\n", nodeid,
- zone->name, zone_page_state(zone, NR_FREE_PAGES));
- }
- static int list_pgd_init(void)
- {
- int nid;
- struct zone *zone;
- struct zone *node_zones;
- unsigned long flags;
- for_each_online_node(nid) {
- pg_data_t *pgdat = NODE_DATA(nid);
- node_zones = pgdat->node_zones;
- for (zone = node_zones; zone - node_zones < MAX_NR_ZONES;
- ++zone) {
- if (!populated_zone(zone)) {
- continue;
- }
- spin_lock_irqsave(&zone->lock, flags);
- show_zone_mem(zone, nid);
- spin_unlock_irqrestore(&zone->lock, flags);
- }
- }
- return 0;
- }
- static void list_pgd_exit(void)
- {
- printk(KERN_ALERT "Goodbey.\n");
- }
- module_init(list_pgd_init);
- module_exit(list_pgd_exit);
复制代码 |
|