当前位置: 首页 > news >正文

vue做单页面网站网站开发的学习路线

vue做单页面网站,网站开发的学习路线,对网站做数据分析,中医院网站源码说明 Linux启动log中会显示平台的内存信息#xff0c;公司SOC平台#xff0c;物理DRAM实际size是128M#xff0c;但是启动log中total size不足128MB#xff0c;并且预留内存#xff08;82272K reserved#xff09;过多#xff0c;启动log如下#xff1a; Memory: 480…说明 Linux启动log中会显示平台的内存信息公司SOC平台物理DRAM实际size是128M但是启动log中total size不足128MB并且预留内存82272K reserved过多启动log如下 Memory: 48032K/130304K available (3478K kernel code, 500K rwdata, 1504K rodata, 124K init, 212K bss, 82272K reserved, 0K cma-reserved)total size130304K预留size 82272K相减得到剩余size48032K。 分析 平台使用memblock管理早期内存分配打开memblock debug重启后启动log如下 memblock_reserve: [0x0000000080200000-0x00000000807bdfff] setup_bootmem0x86/0x162 memblock_reserve: [0x0000000082dcd000-0x0000000082dd2fff] setup_bootmem0xde/0x162 memblock_reserve: [0x0000000080000000-0x000000008007ffff] setup_bootmem0x100/0x162 memblock_reserve: [0x0000000080000000-0x000000008007ffff] early_init_fdt_scan_reserved_mem0x46/0x76 memblock_reserve: [0x0000000080000000-0x000000008003ffff] __fdt_scan_reserved_mem0x20a/0x27a memblock_reserve: [0x000000008377e000-0x000000008393ffff] fdt_init_reserved_mem0x306/0x42a memblock_reserve: [0x0000000083940000-0x0000000087f3ffff] fdt_init_reserved_mem0x360/0x42a Ion: Ion memory setup at 0x0000000083940000 size 70 MiB OF: reserved mem: initialized node ion, compatible id ion-region MEMBLOCK configuration:memory size 0x0000000007f40000 reserved size 0x0000000004e06000memory.cnt 0x1memory[0x0] [0x0000000080000000-0x0000000087f3ffff], 0x0000000007f40000 bytes flags: 0x0reserved.cnt 0x4reserved[0x0] [0x0000000080000000-0x000000008007ffff], 0x0000000000080000 bytes flags: 0x0reserved[0x1] [0x0000000080200000-0x00000000807bdfff], 0x00000000005be000 bytes flags: 0x0reserved[0x2] [0x0000000082dcd000-0x0000000082dd2fff], 0x0000000000006000 bytes flags: 0x0reserved[0x3] [0x000000008377e000-0x0000000087f3ffff], 0x00000000047c2000 bytes flags: 0x0 memblock_reserve: [0x000000008377d000-0x000000008377dfff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008377c000-0x000000008377cfff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008377b000-0x000000008377bfff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008377a000-0x000000008377afff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083779000-0x0000000083779fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083778000-0x0000000083778fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083777000-0x0000000083777fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083776000-0x0000000083776fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083775000-0x0000000083775fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083774000-0x0000000083774fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083773000-0x0000000083773fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083772000-0x0000000083772fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083771000-0x0000000083771fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083770000-0x0000000083770fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008376f000-0x000000008376ffff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008376e000-0x000000008376efff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008376d000-0x000000008376dfff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008376c000-0x000000008376cfff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008376b000-0x000000008376bfff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008376a000-0x000000008376afff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083769000-0x0000000083769fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083768000-0x0000000083768fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083767000-0x0000000083767fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083766000-0x0000000083766fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083765000-0x0000000083765fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083764000-0x0000000083764fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083763000-0x0000000083763fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083762000-0x0000000083762fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083761000-0x0000000083761fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083760000-0x0000000083760fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008375f000-0x000000008375ffff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008375e000-0x000000008375efff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008375d000-0x000000008375dfff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008375c000-0x000000008375cfff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008375b000-0x000000008375bfff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008375a000-0x000000008375afff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083759000-0x0000000083759fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083758000-0x0000000083758fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083757000-0x0000000083757fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083756000-0x0000000083756fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083755000-0x0000000083755fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083754000-0x0000000083754fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083753000-0x0000000083753fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083752000-0x0000000083752fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083751000-0x0000000083751fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083750000-0x0000000083750fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008374f000-0x000000008374ffff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008374e000-0x000000008374efff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008374d000-0x000000008374dfff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008374c000-0x000000008374cfff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008374b000-0x000000008374bfff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008374a000-0x000000008374afff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083749000-0x0000000083749fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083748000-0x0000000083748fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083747000-0x0000000083747fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083746000-0x0000000083746fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083745000-0x0000000083745fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083744000-0x0000000083744fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083743000-0x0000000083743fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083742000-0x0000000083742fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083741000-0x0000000083741fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x0000000083740000-0x0000000083740fff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008373f000-0x000000008373ffff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008373e000-0x000000008373efff] memblock_alloc_range_nid0x96/0xc2 memblock_reserve: [0x000000008373d000-0x000000008373dfff] memblock_alloc_range_nid0x96/0xc2 Zone ranges:DMA32 [mem 0x0000000080000000-0x0000000087f3ffff]Normal empty Movable zone start for each node Early memory node rangesnode 0: [mem 0x0000000080000000-0x0000000087f3ffff] Initmem setup node 0 [mem 0x0000000080000000-0x0000000087f3ffff] On node 0 totalpages: 32576 memblock_alloc_try_nid: 1835008 bytes align0x40 nid0 from0x0000000000000000 max_addr0x0000000000000000 alloc_node_mem_map.constprop.00x4c/0xd0 memblock_reserve: [0x000000008357d000-0x000000008373cfff] memblock_alloc_range_nid0x96/0xc2DMA32 zone: 446 pages used for memmapDMA32 zone: 0 pages reservedDMA32 zone: 32576 pages, LIFO batch:7 memblock_alloc_try_nid: 32 bytes align0x40 nid0 from0x0000000000000000 max_addr0x0000000000000000 setup_usemap.constprop.00x48/0x6c memblock_reserve: [0x000000008357cfc0-0x000000008357cfdf] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 64 bytes align0x40 nid-1 from0x0000000000000000 max_addr0x0000000000000000 paging_init0x228/0x2a2 memblock_reserve: [0x000000008357cf80-0x000000008357cfbf] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 96564 bytes align0x8 nid-1 from0x0000000000000000 max_addr0x0000000000000000 early_init_dt_alloc_memory_arch0x16/0x3e memblock_reserve: [0x0000000083565648-0x000000008357cf7b] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 44 bytes align0x8 nid-1 from0x0000000000000000 max_addr0x0000000000000000 early_init_dt_alloc_memory_arch0x16/0x3e memblock_reserve: [0x0000000083565618-0x0000000083565643] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 44 bytes align0x8 nid-1 from0x0000000000000000 max_addr0x0000000000000000 early_init_dt_alloc_memory_arch0x16/0x3e memblock_reserve: [0x00000000835655e8-0x0000000083565613] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 44 bytes align0x8 nid-1 from0x0000000000000000 max_addr0x0000000000000000 early_init_dt_alloc_memory_arch0x16/0x3e memblock_reserve: [0x00000000835655b8-0x00000000835655e3] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 44 bytes align0x8 nid-1 from0x0000000000000000 max_addr0x0000000000000000 early_init_dt_alloc_memory_arch0x16/0x3e memblock_reserve: [0x0000000083565588-0x00000000835655b3] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 44 bytes align0x8 nid-1 from0x0000000000000000 max_addr0x0000000000000000 early_init_dt_alloc_memory_arch0x16/0x3e memblock_reserve: [0x0000000083565558-0x0000000083565583] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 47 bytes align0x8 nid-1 from0x0000000000000000 max_addr0x0000000000000000 early_init_dt_alloc_memory_arch0x16/0x3e memblock_reserve: [0x0000000083565528-0x0000000083565556] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 47 bytes align0x8 nid-1 from0x0000000000000000 max_addr0x0000000000000000 early_init_dt_alloc_memory_arch0x16/0x3e memblock_reserve: [0x00000000835654f8-0x0000000083565526] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 47 bytes align0x8 nid-1 from0x0000000000000000 max_addr0x0000000000000000 early_init_dt_alloc_memory_arch0x16/0x3e memblock_reserve: [0x00000000835654c8-0x00000000835654f6] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 47 bytes align0x8 nid-1 from0x0000000000000000 max_addr0x0000000000000000 early_init_dt_alloc_memory_arch0x16/0x3e memblock_reserve: [0x0000000083565498-0x00000000835654c6] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 47 bytes align0x8 nid-1 from0x0000000000000000 max_addr0x0000000000000000 early_init_dt_alloc_memory_arch0x16/0x3e memblock_reserve: [0x0000000083565468-0x0000000083565496] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 49 bytes align0x8 nid-1 from0x0000000000000000 max_addr0x0000000000000000 early_init_dt_alloc_memory_arch0x16/0x3e memblock_reserve: [0x0000000083565430-0x0000000083565460] memblock_alloc_range_nid0x96/0xc2 SBI specification v0.3 detected SBI implementation ID0x1 Version0x9 SBI v0.2 TIME extension detected SBI v0.2 IPI extension detected SBI v0.2 RFENCE extension detected riscv: ISA extensions acdfimsuv riscv: ELF capabilities acdfimv memblock_alloc_try_nid: 229 bytes align0x40 nid-1 from0x0000000000000000 max_addr0x0000000000000000 start_kernel0x82/0x346 memblock_reserve: [0x0000000083565340-0x0000000083565424] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 229 bytes align0x40 nid-1 from0x0000000000000000 max_addr0x0000000000000000 start_kernel0xb2/0x346 memblock_reserve: [0x0000000083565240-0x0000000083565324] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 4096 bytes align0x1000 nid-1 from0x0000000000000000 max_addr0x0000000000000000 pcpu_alloc_alloc_info0x44/0x78 memblock_reserve: [0x0000000083564000-0x0000000083564fff] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 32768 bytes align0x1000 nid-1 from0x0000000080000000 max_addr0x0000000000000000 setup_per_cpu_areas0x2c/0x66 memblock_reserve: [0x000000008355c000-0x0000000083563fff] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 8 bytes align0x40 nid-1 from0x0000000000000000 max_addr0x0000000000000000 pcpu_setup_first_chunk0x13a/0x36e memblock_reserve: [0x0000000083565200-0x0000000083565207] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 8 bytes align0x40 nid-1 from0x0000000000000000 max_addr0x0000000000000000 pcpu_setup_first_chunk0x168/0x36e memblock_reserve: [0x00000000835651c0-0x00000000835651c7] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 4 bytes align0x40 nid-1 from0x0000000000000000 max_addr0x0000000000000000 pcpu_setup_first_chunk0x178/0x36e memblock_reserve: [0x0000000083565180-0x0000000083565183] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 8 bytes align0x40 nid-1 from0x0000000000000000 max_addr0x0000000000000000 pcpu_setup_first_chunk0x188/0x36e memblock_reserve: [0x0000000083565140-0x0000000083565147] memblock_alloc_range_nid0x96/0xc2 pcpu-alloc: s0 r0 d32768 u32768 alloc1*32768 pcpu-alloc: [0] 0 memblock_alloc_try_nid: 240 bytes align0x40 nid-1 from0x0000000000000000 max_addr0x0000000000000000 pcpu_setup_first_chunk0x224/0x36e memblock_reserve: [0x0000000083565040-0x000000008356512f] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 128 bytes align0x40 nid-1 from0x0000000000000000 max_addr0x0000000000000000 pcpu_alloc_first_chunk0x5c/0x19a memblock_reserve: [0x000000008355bf80-0x000000008355bfff] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 1024 bytes align0x40 nid-1 from0x0000000000000000 max_addr0x0000000000000000 pcpu_alloc_first_chunk0xa4/0x19a memblock_reserve: [0x000000008355bb80-0x000000008355bf7f] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 1032 bytes align0x40 nid-1 from0x0000000000000000 max_addr0x0000000000000000 pcpu_alloc_first_chunk0xc2/0x19a memblock_reserve: [0x000000008355b740-0x000000008355bb47] memblock_alloc_range_nid0x96/0xc2 memblock_alloc_try_nid: 256 bytes align0x40 nid-1 from0x0000000000000000 max_addr0x0000000000000000 pcpu_alloc_first_chunk0xd8/0x19a memblock_reserve: [0x000000008355b640-0x000000008355b73f] memblock_alloc_range_nid0x96/0xc2 memblock_free: [0x0000000083564000-0x0000000083564fff] start_kernel0xe0/0x346 Built 1 zonelists, mobility grouping on. Total pages: 32130 Kernel command line: rootfstypesquashfs rootwait ro root/dev/mtdblock4 mtdparts10000000.cvi-spif:1024K(fip),3072K(BOOT),64K(ENV),64K(ENV_BAK),10240K(ROOTFS),512K(DATA) consolettyS0,115200 earlyconsbi loglevel9 riscv.fwsz0x80000 memblockdebug memblock_alloc_try_nid: 131072 bytes align0x40 nid-1 from0x0000000000000000 max_addr0x0000000000000000 alloc_large_system_hash0x108/0x1d0 memblock_reserve: [0x000000008353b640-0x000000008355b63f] memblock_alloc_range_nid0x96/0xc2 Dentry cache hash table entries: 16384 (order: 5, 131072 bytes, linear) memblock_alloc_try_nid: 65536 bytes align0x40 nid-1 from0x0000000000000000 max_addr0x0000000000000000 alloc_large_system_hash0x108/0x1d0 memblock_reserve: [0x000000008352b640-0x000000008353b63f] memblock_alloc_range_nid0x96/0xc2 Inode-cache hash table entries: 8192 (order: 4, 65536 bytes, linear) Sorting __ex_table... mem auto-init: stack:off, heap alloc:off, heap free:off Memory: 48032K/130304K available (3478K kernel code, 500K rwdata, 1504K rodata, 124K init, 212K bss, 82272K reserved, 0K cma-reserved) ...total size由来 Linux感知的内存total size可以通过uboot bootargs传递也可以通过dts配置公司SOC使用dts配置如下 //file: xxx.dtsi #include xxx.h/ {memory80000000 {device_type memory;reg 0x00 XXXMMAP_KERNEL_MEMORY_ADDR 0x00 XXXMMAP_KERNEL_MEMORY_SIZE;};.... };为兼容多个平台dts中使用头文件中的宏定义来定义物理内存地址和大小头文件由脚本生成如下 //file: memmap.pyDRAM_BASE 0x80000000DRAM_SIZE 128 * SIZE_1M# 小核预留FREERTOS_SIZE 768 * SIZE_1K....# # memoryDRAM_BASE in .dts.# # Ignore the area of FreeRTOS in u-boot and kernelKERNEL_MEMORY_ADDR DRAM_BASEKERNEL_MEMORY_SIZE DRAM_SIZE - FREERTOS_SIZE因此kernel感知的实际total size128MB * 1024 - 768 130304K与启动log匹配。 memblock分配器初始化前的预留内存占用 memblock初始化成功的配置 MEMBLOCK configuration:memory size 0x0000000007f40000 reserved size 0x0000000004e06000 //总size(130304K)和初始化前的预留内存占用sizememory.cnt 0x1memory[0x0] [0x0000000080000000-0x0000000087f3ffff], 0x0000000007f40000 bytes flags: 0x0 //总size(130304K)reserved.cnt 0x4 // 初始化前的预留内存占用reserved[0x0] [0x0000000080000000-0x000000008007ffff], 0x0000000000080000 bytes flags: 0x0reserved[0x1] [0x0000000080200000-0x00000000807bdfff], 0x00000000005be000 bytes flags: 0x0reserved[0x2] [0x0000000082dcd000-0x0000000082dd2fff], 0x0000000000006000 bytes flags: 0x0reserved[0x3] [0x000000008377e000-0x0000000087f3ffff], 0x00000000047c2000 bytes flags: 0x04块预留内存的详细分配记录内存段相邻时会合并成一块 memblock_reserve: [0x0000000080200000-0x00000000807bdfff] setup_bootmem0x86/0x162 memblock_reserve: [0x0000000082dcd000-0x0000000082dd2fff] setup_bootmem0xde/0x162 memblock_reserve: [0x0000000080000000-0x000000008007ffff] setup_bootmem0x100/0x162 memblock_reserve: [0x0000000080000000-0x000000008007ffff] early_init_fdt_scan_reserved_mem0x46/0x76 memblock_reserve: [0x0000000080000000-0x000000008003ffff] __fdt_scan_reserved_mem0x20a/0x27a memblock_reserve: [0x000000008377e000-0x000000008393ffff] fdt_init_reserved_mem0x306/0x42a memblock_reserve: [0x0000000083940000-0x0000000087f3ffff] fdt_init_reserved_mem0x360/0x42a分配代码 //file: arch/riscv/mm/init.c void __init setup_bootmem(void) {phys_addr_t mem_start 0;phys_addr_t start, end 0;phys_addr_t vmlinux_end __pa_symbol(_end);phys_addr_t vmlinux_start __pa_symbol(_start);u64 i;/* Find the memory region containing the kernel */for_each_mem_range(i, start, end) {phys_addr_t size end - start;if (!mem_start)mem_start start;if (start vmlinux_start vmlinux_end end)BUG_ON(size 0);}/** The maximal physical memory size is -PAGE_OFFSET.* Make sure that any memory beyond mem_start (-PAGE_OFFSET) is removed* as it is unusable by kernel.*/memblock_enforce_memory_limit(-PAGE_OFFSET);/* Reserve from the start of the kernel to the end of the kernel */memblock_reserve(vmlinux_start, vmlinux_end - vmlinux_start);max_pfn PFN_DOWN(memblock_end_of_DRAM());max_low_pfn max_pfn;set_max_mapnr(max_low_pfn);#ifdef CONFIG_BLK_DEV_INITRDsetup_initrd(); #endif /* CONFIG_BLK_DEV_INITRD *//** Avoid using early_init_fdt_reserve_self() since __pa() does* not work for DTB pointers that are fixmap addresses*/memblock_reserve(dtb_early_pa, fdt_totalsize(dtb_early_va));if (firmware_size PAGE_SIZE firmware_size LOAD_OFFSET)memblock_reserve(__pa(PAGE_OFFSET), firmware_size);elsememblock_reserve(__pa(PAGE_OFFSET), LOAD_OFFSET);... } 根据代码可知预留内存占用如下 kernel code等大约6MB大小是通过链接脚本ld.s中的符号vmlinux_endvmlinux_start相减所得。opensbi512KB大小是通过uboot传递过来的bootargsriscv.fwsz0x80000所得。dtb32KB大小fdt_totalsize(dtb_early_va)dts中定义的ion(70MB)。dts中定义的其它reserved_mem大约2MB根据分配记录memblock_reserve可以获取分配的具体信息。 memblock分配器初始化后的预留内存占用 启动logMEMBLOCK configuration后的分配打印就是memblock初始化成功后的预留内存占用。根据代码和分配记录可知预留内存占用主要是内核机制大约2.3MB有一些大头如下 memmapsetup_per_cpu_areasDentry cache hash table entriesInode-cache hash table entries 不同内核机制的分配待分析。 预留内存占用统计 将预留内存占用memblock_reserve累加再减去预留内存释放memblock_free计算出总的预留内存占用为82269K。 问题 统计出的总预留内存size和打印不匹配 启动log中的预留内存总size82272K reserved和实际计算出的总size82269K不一致是因为打印启动log时会做页对齐对齐后就一样了如下 // file: linux_5.10/mm/page_alloc.c void __init mem_init_print_info(const char *str) {...pr_info(Memory: %luK/%luK available (%luK kernel code, %luK rwdata, %luK rodata, %luK init, %luK bss, %luK reserved, %luK cma-reserved #ifdef CONFIG_HIGHMEM, %luK highmem #endif%s%s)\n,nr_free_pages() (PAGE_SHIFT - 10),physpages (PAGE_SHIFT - 10),codesize 10, datasize 10, rosize 10,(init_data_size init_code_size) 10, bss_size 10,(physpages - totalram_pages() - totalcma_pages) (PAGE_SHIFT - 10), // 根据内存页size 对齐totalcma_pages (PAGE_SHIFT - 10), #ifdef CONFIG_HIGHMEMtotalhigh_pages() (PAGE_SHIFT - 10), #endifstr ? , : , str ? str : ); }
http://www.w-s-a.com/news/596698/

相关文章:

  • 网站建设费 科目做网站建设最好学什么
  • php商城网站建设多少钱深圳市建设
  • 有什么做糕点的视频网站黄岛做网站
  • 做视频课程网站建设一个普通网站需要多少钱
  • 专做化妆品的网站合肥做网站建设公司
  • 唐山企业网站网站建设费计入那个科目
  • 企业网站制作运营彩虹云主机官网
  • 如何建设废品网站如何在阿里云云服务器上搭建网站
  • 如何建立网站后台程序wordpress 后台管理
  • 山东外贸网站建设怎么样wordpress首页左图右文
  • 志丹网站建设wordpress 形式修改
  • 南通seo网站推广费用网站建设就业前景
  • 自适应网站做mip改造浏览器广告投放
  • 网站meta网页描述网站的推广费用
  • 偃师市住房和城乡建设局网站网站个人主页怎么做
  • 做网站要实名认证吗wordpress去掉仪表盘
  • 在哪做网站好Python建网站的步骤
  • 卢松松的网站办公室设计布局
  • 住房城乡建设干部学院网站织梦网站0day漏洞
  • 企业网站seo优帮云手机桌面布局设计软件
  • 无证做音频网站违法吗智能建站加盟电话
  • 鹿泉专业网站建设做网站为什么要建站点
  • 加强网站建设和维护工作新闻大全
  • 红鱼洞水库建设管理局网站左右左布局网站建设
  • 手机网站建设地址做网站公
  • 贵州建设厅网站首页网络公司除了做网站
  • 运动鞋建设网站前的市场分析wordpress 搜索框代码
  • app开发网站开发教程平台网站开发的税率
  • 百度网站优化排名加强服务保障满足群众急需i
  • 宁夏建设职业技术学院网站安徽网站优化建设