懂内存管理的进来

tgvlcw tgvlcw 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在编译内核的时候,根据资料上说,0~1G的时候可以不用打开高端内存的宏,1~4G的时候就可以打开,而我的内存是1G的,按道理说高端内存的宏可开可不开。打开的时候,用cat /proc/meminfo可以看到内存的总大小为1G:

# CONFIG_NOHIGHMEM is not set
CONFIG_HIGHMEM4G=y
# CONFIG_HIGHMEM64G is not set
CONFIG_HIGHMEM=y



# cat /proc/meminfo
MemTotal: 1003916 kB


相关log:

<6>[ 0.000000] last_pfn = 0x3ee00 max_arch_pfn = 0x100000
<6>[ 0.000000] setup_arch: max_pfn:0x3ee00, 1006Mb
<6>[ 0.000000] highmem_pfn_init: ------1006Mb, MAXMEM:887Mb
<6>[ 0.000000] highmem_pfn_init: ------257536, highmem_pages:-1, MAXMEM:227326
<7>[ 0.000000] initial memory mapped : 0 - 02400000
<6>[ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000
<7>[ 0.000000] 0000000000 - 0000400000 page 4k
<7>[ 0.000000] 0000400000 - 0037400000 page 2M
<7>[ 0.000000] 0037400000 - 00377fe000 page 4k
<7>[ 0.000000] kernel direct mapping tables up to 377fe000 @ 7000-c000
<6>[ 0.000000] RAMDISK: 07dfa000 - 08000000
<5>[ 0.000000] 118MB HIGHMEM available.
<5>[ 0.000000] 887MB LOWMEM available.
<6>[ 0.000000] mapped low ram: 0 - 377fe000
<6>[ 0.000000] low ram: 0 - 377fe000
<4>[ 0.000000] Zone PFN ranges:
<4>[ 0.000000] DMA 0x00000001 -> 0x00001000
<4>[ 0.000000] Normal 0x00001000 -> 0x000377fe
<4>[ 0.000000] HighMem 0x000377fe -> 0x0003ee00
<4>[ 0.000000] Movable zone start PFN for each node
<4>[ 0.000000] early_node_map[3] active PFN ranges
<4>[ 0.000000] 0: 0x00000001 -> 0x00000098
<4>[ 0.000000] 0: 0x00000100 -> 0x00000e00
<4>[ 0.000000] 0: 0x00001000 -> 0x0003ee00
<7>[ 0.000000] On node 0 totalpages: 256919
<7>[ 0.000000] free_area_init_node: node 0, pgdat c1af1800, node_mem_map c20c9020
<7>[ 0.000000] DMA zone: 32 pages used for memmap
<7>[ 0.000000] DMA zone: 0 pages reserved
<7>[ 0.000000] DMA zone: 3447 pages, LIFO batch:0
<7>[ 0.000000] Normal zone: 1744 pages used for memmap
<7>[ 0.000000] Normal zone: 221486 pages, LIFO batch:31
<7>[ 0.000000] HighMem zone: 237 pages used for memmap
<7>[ 0.000000] HighMem zone: 29973 pages, LIFO batch:7
......
<6>[ 0.000000] Initializing HighMem for node 0 (000377fe:0003ee00)
<6>[ 0.000000] Memory: 1001440k/1030144k available (6484k kernel code, 26236k reserved, 2852k data, 404k init, 120840k highmem)
<6>[ 0.000000] totalram_pages:1001440k Mem:1001440k
<6>[ 0.000000] virtual kernel memory layout:
<6>[ 0.000000] fixmap : 0xfff15000 - 0xfffff000 ( 936 kB)
<6>[ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB)
<6>[ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB)
<6>[ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB)
<6>[ 0.000000] .init : 0xc1b1f000 - 0xc1b84000 ( 404 kB)
<6>[ 0.000000] .data : 0xc185527d - 0xc1b1e484 (2852 kB)
<6>[ 0.000000] .text : 0xc1200000 - 0xc185527d (6484 kB)
......


当不打开高端内存的宏的时候:

CONFIG_NOHIGHMEM=y
# CONFIG_HIGHMEM4G is not set
# CONFIG_HIGHMEM64G is not set
# CONFIG_HIGHMEM is not set



# cat /proc/meminfo
MemTotal: 892364 kB

相关log:

<6>[ 0.000000] last_pfn = 0x3ee00 max_arch_pfn = 0x100000
<6>[ 0.000000] setup_arch: max_pfn:0x3ee00, 1006Mb
<6>[ 0.000000] highmem_pfn_init: ------1006Mb, MAXMEM:895Mb
<6>[ 0.000000] highmem_pfn_init: ------257536, highmem_pages:-1, MAXMEM:229139
<4>[ 0.000000] Warning only 895MB will be used.
<4>[ 0.000000] Use a HIGHMEM enabled kernel.
<7>[ 0.000000] initial memory mapped : 0 - 02400000
<6>[ 0.000000] init_memory_mapping: 0000000000000000-0000000037f13000
<7>[ 0.000000] 0000000000 - 0000400000 page 4k
<7>[ 0.000000] 0000400000 - 0037c00000 page 2M
<7>[ 0.000000] 0037c00000 - 0037f13000 page 4k
<7>[ 0.000000] kernel direct mapping tables up to 37f13000 @ 7000-c000
<6>[ 0.000000] RAMDISK: 07dfa000 - 08000000
<5>[ 0.000000] 895MB LOWMEM available.
<6>[ 0.000000] mapped low ram: 0 - 37f13000
<6>[ 0.000000] low ram: 0 - 37f13000
<4>[ 0.000000] Zone PFN ranges:
<4>[ 0.000000] DMA 0x00000001 -> 0x00001000
<4>[ 0.000000] Normal 0x00001000 -> 0x00037f13
<4>[ 0.000000] Movable zone start PFN for each node
<4>[ 0.000000] early_node_map[3] active PFN ranges
<4>[ 0.000000] 0: 0x00000001 -> 0x00000098
<4>[ 0.000000] 0: 0x00000100 -> 0x00000e00
<4>[ 0.000000] 0: 0x00001000 -> 0x00037f13
<7>[ 0.000000] On node 0 totalpages: 228522
<7>[ 0.000000] free_area_init_node: node 0, pgdat c1af1780, node_mem_map c20c1020
<7>[ 0.000000] DMA zone: 32 pages used for memmap
<7>[ 0.000000] DMA zone: 0 pages reserved
<7>[ 0.000000] DMA zone: 3447 pages, LIFO batch:0
<7>[ 0.000000] Normal zone: 1759 pages used for memmap
<7>[ 0.000000] Normal zone: 223284 pages, LIFO batch:31
......
<6>[ 0.000000] Memory: 888788k/916556k available (6483k kernel code, 25300k reserved, 2852k data, 400k init, 0k highmem)
<6>[ 0.000000] totalram_pages:888788k Mem:888788k
<6>[ 0.000000] virtual kernel memory layout:
<6>[ 0.000000] fixmap : 0xfff15000 - 0xfffff000 ( 936 kB)
<6>[ 0.000000] vmalloc : 0xf8713000 - 0xfff13000 ( 120 MB)
<6>[ 0.000000] lowmem : 0xc0000000 - 0xf7f13000 ( 895 MB)
<6>[ 0.000000] .init : 0xc1b1f000 - 0xc1b83000 ( 400 kB)
<6>[ 0.000000] .data : 0xc1854e8d - 0xc1b1e084 (2852 kB)
<6>[ 0.000000] .text : 0xc1200000 - 0xc1854e8d (6483 kB)
......


当不打开高端内存的时候,总内存只有895M,可我的内存是1G的,这是不是以为着我还有128M的内存没有使用呢?

...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
tgvlcw
Linux_Kernel 4,469 成员 17,458 内容