免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2658 | 回复: 6
打印 上一主题 下一主题

懂内存管理的进来 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-23 18:14 |只看该作者 |倒序浏览
在编译内核的时候,根据资料上说,0~1G的时候可以不用打开高端内存的宏,1~4G的时候就可以打开,而我的内存是1G的,按道理说高端内存的宏可开可不开。打开的时候,用cat /proc/meminfo可以看到内存的总大小为1G:
  1. # CONFIG_NOHIGHMEM is not set
  2. CONFIG_HIGHMEM4G=y
  3. # CONFIG_HIGHMEM64G is not set
  4. CONFIG_HIGHMEM=y
复制代码
  1. # cat /proc/meminfo
  2. MemTotal:        1003916 kB
复制代码
相关log:

  1. <6>[    0.000000] last_pfn = 0x3ee00 max_arch_pfn = 0x100000
  2. <6>[    0.000000] setup_arch: max_pfn:0x3ee00, 1006Mb
  3. <6>[    0.000000] highmem_pfn_init: ------1006Mb, MAXMEM:887Mb
  4. <6>[    0.000000] highmem_pfn_init: ------257536, highmem_pages:-1, MAXMEM:227326
  5. <7>[    0.000000] initial memory mapped : 0 - 02400000
  6. <6>[    0.000000] init_memory_mapping: 0000000000000000-00000000377fe000
  7. <7>[    0.000000]  0000000000 - 0000400000 page 4k
  8. <7>[    0.000000]  0000400000 - 0037400000 page 2M
  9. <7>[    0.000000]  0037400000 - 00377fe000 page 4k
  10. <7>[    0.000000] kernel direct mapping tables up to 377fe000 @ 7000-c000
  11. <6>[    0.000000] RAMDISK: 07dfa000 - 08000000
  12. <5>[    0.000000] 118MB HIGHMEM available.
  13. <5>[    0.000000] 887MB LOWMEM available.
  14. <6>[    0.000000]   mapped low ram: 0 - 377fe000
  15. <6>[    0.000000]   low ram: 0 - 377fe000
  16. <4>[    0.000000] Zone PFN ranges:
  17. <4>[    0.000000]   DMA      0x00000001 -> 0x00001000
  18. <4>[    0.000000]   Normal   0x00001000 -> 0x000377fe
  19. <4>[    0.000000]   HighMem  0x000377fe -> 0x0003ee00
  20. <4>[    0.000000] Movable zone start PFN for each node
  21. <4>[    0.000000] early_node_map[3] active PFN ranges
  22. <4>[    0.000000]     0: 0x00000001 -> 0x00000098
  23. <4>[    0.000000]     0: 0x00000100 -> 0x00000e00
  24. <4>[    0.000000]     0: 0x00001000 -> 0x0003ee00
  25. <7>[    0.000000] On node 0 totalpages: 256919
  26. <7>[    0.000000] free_area_init_node: node 0, pgdat c1af1800, node_mem_map c20c9020
  27. <7>[    0.000000]   DMA zone: 32 pages used for memmap
  28. <7>[    0.000000]   DMA zone: 0 pages reserved
  29. <7>[    0.000000]   DMA zone: 3447 pages, LIFO batch:0
  30. <7>[    0.000000]   Normal zone: 1744 pages used for memmap
  31. <7>[    0.000000]   Normal zone: 221486 pages, LIFO batch:31
  32. <7>[    0.000000]   HighMem zone: 237 pages used for memmap
  33. <7>[    0.000000]   HighMem zone: 29973 pages, LIFO batch:7
  34. ......
  35. <6>[    0.000000] Initializing HighMem for node 0 (000377fe:0003ee00)
  36. <6>[    0.000000] Memory: 1001440k/1030144k available (6484k kernel code, 26236k reserved, 2852k data, 404k init, 120840k highmem)
  37. <6>[    0.000000] totalram_pages:1001440k Mem:1001440k
  38. <6>[    0.000000] virtual kernel memory layout:
  39. <6>[    0.000000]     fixmap  : 0xfff15000 - 0xfffff000   ( 936 kB)
  40. <6>[    0.000000]     pkmap   : 0xff800000 - 0xffc00000   (4096 kB)
  41. <6>[    0.000000]     vmalloc : 0xf7ffe000 - 0xff7fe000   ( 120 MB)
  42. <6>[    0.000000]     lowmem  : 0xc0000000 - 0xf77fe000   ( 887 MB)
  43. <6>[    0.000000]       .init : 0xc1b1f000 - 0xc1b84000   ( 404 kB)
  44. <6>[    0.000000]       .data : 0xc185527d - 0xc1b1e484   (2852 kB)
  45. <6>[    0.000000]       .text : 0xc1200000 - 0xc185527d   (6484 kB)
  46. ......
复制代码
当不打开高端内存的宏的时候:

  1. CONFIG_NOHIGHMEM=y
  2. # CONFIG_HIGHMEM4G is not set
  3. # CONFIG_HIGHMEM64G is not set
  4. # CONFIG_HIGHMEM is not set
复制代码
  1. # cat /proc/meminfo
  2. MemTotal:         892364 kB
复制代码
相关log:

  1. <6>[    0.000000] last_pfn = 0x3ee00 max_arch_pfn = 0x100000
  2. <6>[    0.000000] setup_arch: max_pfn:0x3ee00, 1006Mb
  3. <6>[    0.000000] highmem_pfn_init: ------1006Mb, MAXMEM:895Mb
  4. <6>[    0.000000] highmem_pfn_init: ------257536, highmem_pages:-1, MAXMEM:229139
  5. <4>[    0.000000] Warning only 895MB will be used.
  6. <4>[    0.000000] Use a HIGHMEM enabled kernel.
  7. <7>[    0.000000] initial memory mapped : 0 - 02400000
  8. <6>[    0.000000] init_memory_mapping: 0000000000000000-0000000037f13000
  9. <7>[    0.000000]  0000000000 - 0000400000 page 4k
  10. <7>[    0.000000]  0000400000 - 0037c00000 page 2M
  11. <7>[    0.000000]  0037c00000 - 0037f13000 page 4k
  12. <7>[    0.000000] kernel direct mapping tables up to 37f13000 @ 7000-c000
  13. <6>[    0.000000] RAMDISK: 07dfa000 - 08000000
  14. <5>[    0.000000] 895MB LOWMEM available.
  15. <6>[    0.000000]   mapped low ram: 0 - 37f13000
  16. <6>[    0.000000]   low ram: 0 - 37f13000
  17. <4>[    0.000000] Zone PFN ranges:
  18. <4>[    0.000000]   DMA      0x00000001 -> 0x00001000
  19. <4>[    0.000000]   Normal   0x00001000 -> 0x00037f13
  20. <4>[    0.000000] Movable zone start PFN for each node
  21. <4>[    0.000000] early_node_map[3] active PFN ranges
  22. <4>[    0.000000]     0: 0x00000001 -> 0x00000098
  23. <4>[    0.000000]     0: 0x00000100 -> 0x00000e00
  24. <4>[    0.000000]     0: 0x00001000 -> 0x00037f13
  25. <7>[    0.000000] On node 0 totalpages: 228522
  26. <7>[    0.000000] free_area_init_node: node 0, pgdat c1af1780, node_mem_map c20c1020
  27. <7>[    0.000000]   DMA zone: 32 pages used for memmap
  28. <7>[    0.000000]   DMA zone: 0 pages reserved
  29. <7>[    0.000000]   DMA zone: 3447 pages, LIFO batch:0
  30. <7>[    0.000000]   Normal zone: 1759 pages used for memmap
  31. <7>[    0.000000]   Normal zone: 223284 pages, LIFO batch:31
  32. ......
  33. <6>[    0.000000] Memory: 888788k/916556k available (6483k kernel code, 25300k reserved, 2852k data, 400k init, 0k highmem)
  34. <6>[    0.000000] totalram_pages:888788k Mem:888788k
  35. <6>[    0.000000] virtual kernel memory layout:
  36. <6>[    0.000000]     fixmap  : 0xfff15000 - 0xfffff000   ( 936 kB)
  37. <6>[    0.000000]     vmalloc : 0xf8713000 - 0xfff13000   ( 120 MB)
  38. <6>[    0.000000]     lowmem  : 0xc0000000 - 0xf7f13000   ( 895 MB)
  39. <6>[    0.000000]       .init : 0xc1b1f000 - 0xc1b83000   ( 400 kB)
  40. <6>[    0.000000]       .data : 0xc1854e8d - 0xc1b1e084   (2852 kB)
  41. <6>[    0.000000]       .text : 0xc1200000 - 0xc1854e8d   (6483 kB)
  42. ......
复制代码
当不打开高端内存的时候,总内存只有895M,可我的内存是1G的,这是不是以为着我还有128M的内存没有使用呢?

论坛徽章:
0
2 [报告]
发表于 2011-09-23 19:34 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2011-09-26 09:21 |只看该作者
那是不是当我的内存大于895M的时候,但是我又没有打开高端内存
的选项,那么整个系统中可用的物理内存只有895M,剩下的物理内存由于kernel没
有做映射,所以这段内存系统中就没有用到呢?

论坛徽章:
16
2015亚冠之吉达阿赫利
日期:2015-08-17 11:21:462015年迎新春徽章
日期:2015-03-04 09:58:11酉鸡
日期:2014-12-07 09:06:19水瓶座
日期:2014-11-04 14:23:29天秤座
日期:2014-03-02 08:57:52双鱼座
日期:2014-02-22 13:07:56午马
日期:2014-02-14 11:08:18双鱼座
日期:2014-02-13 11:09:37卯兔
日期:2014-02-06 15:10:34子鼠
日期:2014-01-20 14:48:19戌狗
日期:2013-12-19 09:37:46射手座
日期:2013-12-19 09:33:47
4 [报告]
发表于 2011-09-26 09:31 |只看该作者
应该是!

论坛徽章:
0
5 [报告]
发表于 2011-09-26 10:27 |只看该作者
至于高端内存,我现在没仔细研究,等以后用到了再研究。
我现在解释一下,当未打开高端内存时的情况(这种情况我把这些代码全都研究过了)。
MemTotal:         892364 kB
它对应到内核的全局变量totalram_pages,该全局变量是总内存容量去除了,内核代码,数据等,中断向量表,页表等剩余的容量,它表示,系统起来后可以使用的内存。

论坛徽章:
0
6 [报告]
发表于 2011-09-26 10:29 |只看该作者
在未打开高端内存时,你使用的内存在内核中是全部映射的。

论坛徽章:
0
7 [报告]
发表于 2011-09-26 15:03 |只看该作者
高端内存指的是大于896M的部分
你不打开当然就不支持高端内存了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP