技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统运维 --> Linux系统内存相关信息获取

Linux系统内存相关信息获取

浏览:2182次  出处信息
    大型的服务器,特别是数据库服务器的主要瓶颈主要在内存,CPU,以及IO上。CPU是可再生资源,不够用等等就有了;内存和土地一样是不可再生资源,被占用了,后续的使用必须等到该资源释放.而IO也非常依赖于内存的使用情况,故内存的倒腾效率会大大影响服务器的效率,那么了解服务器内存的使用情况就非常重要。

    Linux内核的内存相关的信息主要有下面几个获取管道,这里我们主要讨论的是系统级别的,没具体到各个进程级别:

    1. 内核启动时候,VM内存相关模块初始化信息,透过dmesg查看。

     详细描述可参考这里

     比如:

    NUMA: Using 30 for the hash shift.

     Bootmem setup node 0 0000000000000000-0000000340000000

     Bootmem setup node 1 0000000340000000-0000000640000000

     On node 0 totalpages: 3095549

     DMA zone: 2613 pages, LIFO batch:0

     DMA32 zone: 765896 pages, LIFO batch:31

     Normal zone: 2327040 pages, LIFO batch:31

     On node 1 totalpages: 3102720

     Normal zone: 3102720 pages, LIFO batch:31

     …

     Memory: 24543920k/26214400k available (2547k kernel code, 612792k reserved, 1289k data, 208k init)

     …

     Total HugeTLB memory allocated, 0

     …

    2. /proc/meminfo。

     每个字段的意思,可参考这里

     比如:

     $cat /proc/meminfo

     MemTotal: 24545764 kB

     MemFree: 957064 kB

     Buffers: 1739164 kB

     Cached: 10699300 kB

     SwapCached: 3816 kB

     Active: 17884180 kB

     Inactive: 4479128 kB

     HighTotal: 0 kB

     HighFree: 0 kB

     LowTotal: 24545764 kB

     LowFree: 957064 kB

     SwapTotal: 6289320 kB

     SwapFree: 5005124 kB

     Dirty: 28 kB

     Writeback: 0 kB

     AnonPages: 9923908 kB

     Mapped: 27068 kB

     Slab: 1132452 kB

     PageTables: 41560 kB

     NFS_Unstable: 0 kB

     Bounce: 0 kB

     CommitLimit: 18562200 kB

     Committed_AS: 33474640 kB

     VmallocTotal: 34359738367 kB

     VmallocUsed: 268160 kB

     VmallocChunk: 34359470063 kB

     HugePages_Total: 0

     HugePages_Free: 0

     HugePages_Rsvd: 0

     Hugepagesize: 2048 kB

    3. sysrq-trigger的m键。

     首先启用这个特性:

     sudo sysctl kernel.sysrq=1

     获取帮助:

     echo h | sudo tee /proc/sysrq-trigger

     SysRq : HELP : loglevel0-8 reBoot Crashdump tErm Full kIll thaw-filesystems(J) saK showMem Nice powerOff showPc unRaw Sync showTasks Unmount shoWcpus

     获取内存信息:

     echo m | sudo tee /proc/sysrq-trigger

    SysRq : Show Memory

     Mem-info:

     Node 0 DMA per-cpu:

     cpu 0 hot: high 0, batch 1 used:0

     cpu 0 cold: high 0, batch 1 used:0

     cpu 1 hot: high 0, batch 1 used:0

     cpu 1 cold: high 0, batch 1 used:0

     cpu 2 hot: high 0, batch 1 used:0

     cpu 2 cold: high 0, batch 1 used:0

     cpu 3 hot: high 0, batch 1 used:0

     cpu 3 cold: high 0, batch 1 used:0

     cpu 4 hot: high 0, batch 1 used:0

     cpu 4 cold: high 0, batch 1 used:0

     cpu 5 hot: high 0, batch 1 used:0

     cpu 5 cold: high 0, batch 1 used:0

     cpu 6 hot: high 0, batch 1 used:0

     cpu 6 cold: high 0, batch 1 used:0

     cpu 7 hot: high 0, batch 1 used:0

     cpu 7 cold: high 0, batch 1 used:0

     cpu 8 hot: high 0, batch 1 used:0

     cpu 8 cold: high 0, batch 1 used:0

     cpu 9 hot: high 0, batch 1 used:0

     cpu 9 cold: high 0, batch 1 used:0

     cpu 10 hot: high 0, batch 1 used:0

     cpu 10 cold: high 0, batch 1 used:0

     cpu 11 hot: high 0, batch 1 used:0

     cpu 11 cold: high 0, batch 1 used:0

     cpu 12 hot: high 0, batch 1 used:0

     cpu 12 cold: high 0, batch 1 used:0

     cpu 13 hot: high 0, batch 1 used:0

     cpu 13 cold: high 0, batch 1 used:0

     cpu 14 hot: high 0, batch 1 used:0

     cpu 14 cold: high 0, batch 1 used:0

     cpu 15 hot: high 0, batch 1 used:0

     cpu 15 cold: high 0, batch 1 used:0

     Node 0 DMA32 per-cpu:

     cpu 0 hot: high 186, batch 31 used:70

     cpu 0 cold: high 62, batch 15 used:59

     cpu 1 hot: high 186, batch 31 used:24

     cpu 1 cold: high 62, batch 15 used:13

     cpu 2 hot: high 186, batch 31 used:7

     cpu 2 cold: high 62, batch 15 used:11

     cpu 3 hot: high 186, batch 31 used:19

     cpu 3 cold: high 62, batch 15 used:54

     cpu 4 hot: high 186, batch 31 used:0

     cpu 4 cold: high 62, batch 15 used:0

     cpu 5 hot: high 186, batch 31 used:0

     cpu 5 cold: high 62, batch 15 used:0

     cpu 6 hot: high 186, batch 31 used:0

     cpu 6 cold: high 62, batch 15 used:0

     cpu 7 hot: high 186, batch 31 used:0

     cpu 7 cold: high 62, batch 15 used:0

     cpu 8 hot: high 186, batch 31 used:16

     cpu 8 cold: high 62, batch 15 used:50

     cpu 9 hot: high 186, batch 31 used:23

     cpu 9 cold: high 62, batch 15 used:2

     cpu 10 hot: high 186, batch 31 used:40

     cpu 10 cold: high 62, batch 15 used:41

     cpu 11 hot: high 186, batch 31 used:157

     cpu 11 cold: high 62, batch 15 used:5

     cpu 12 hot: high 186, batch 31 used:0

     cpu 12 cold: high 62, batch 15 used:0

     cpu 13 hot: high 186, batch 31 used:0

     cpu 13 cold: high 62, batch 15 used:0

     cpu 14 hot: high 186, batch 31 used:0

     cpu 14 cold: high 62, batch 15 used:0

     cpu 15 hot: high 186, batch 31 used:0

     cpu 15 cold: high 62, batch 15 used:0

     Node 0 Normal per-cpu:

     cpu 0 hot: high 186, batch 31 used:50

     cpu 0 cold: high 62, batch 15 used:13

     cpu 1 hot: high 186, batch 31 used:159

     cpu 1 cold: high 62, batch 15 used:14

     cpu 2 hot: high 186, batch 31 used:155

     cpu 2 cold: high 62, batch 15 used:9

     cpu 3 hot: high 186, batch 31 used:13

     cpu 3 cold: high 62, batch 15 used:14

     cpu 4 hot: high 186, batch 31 used:0

     cpu 4 cold: high 62, batch 15 used:0

     cpu 5 hot: high 186, batch 31 used:0

     cpu 5 cold: high 62, batch 15 used:0

     cpu 6 hot: high 186, batch 31 used:0

     cpu 6 cold: high 62, batch 15 used:0

     cpu 7 hot: high 186, batch 31 used:0

     cpu 7 cold: high 62, batch 15 used:0

     cpu 8 hot: high 186, batch 31 used:81

     cpu 8 cold: high 62, batch 15 used:8

     cpu 9 hot: high 186, batch 31 used:1

     cpu 9 cold: high 62, batch 15 used:13

     cpu 10 hot: high 186, batch 31 used:69

     cpu 10 cold: high 62, batch 15 used:14

     cpu 11 hot: high 186, batch 31 used:77

     cpu 11 cold: high 62, batch 15 used:10

     cpu 12 hot: high 186, batch 31 used:0

     cpu 12 cold: high 62, batch 15 used:0

     cpu 13 hot: high 186, batch 31 used:135

     cpu 13 cold: high 62, batch 15 used:0

     cpu 14 hot: high 186, batch 31 used:0

     cpu 14 cold: high 62, batch 15 used:0

     cpu 15 hot: high 186, batch 31 used:0

     cpu 15 cold: high 62, batch 15 used:0

     Node 0 HighMem per-cpu: empty

     Node 1 DMA per-cpu: empty

     Node 1 DMA32 per-cpu: empty

     Node 1 Normal per-cpu:

     cpu 0 hot: high 186, batch 31 used:1

     cpu 0 cold: high 62, batch 15 used:0

     cpu 1 hot: high 186, batch 31 used:0

     cpu 1 cold: high 62, batch 15 used:0

     cpu 2 hot: high 186, batch 31 used:0

     cpu 2 cold: high 62, batch 15 used:0

     cpu 3 hot: high 186, batch 31 used:0

     cpu 3 cold: high 62, batch 15 used:0

     cpu 4 hot: high 186, batch 31 used:87

     cpu 4 cold: high 62, batch 15 used:10

     cpu 5 hot: high 186, batch 31 used:30

     cpu 5 cold: high 62, batch 15 used:12

     cpu 6 hot: high 186, batch 31 used:77

     cpu 6 cold: high 62, batch 15 used:13

     cpu 7 hot: high 186, batch 31 used:28

     cpu 7 cold: high 62, batch 15 used:2

     cpu 8 hot: high 186, batch 31 used:34

     cpu 8 cold: high 62, batch 15 used:0

     cpu 9 hot: high 186, batch 31 used:94

     cpu 9 cold: high 62, batch 15 used:0

     cpu 10 hot: high 186, batch 31 used:0

     cpu 10 cold: high 62, batch 15 used:0

     cpu 11 hot: high 186, batch 31 used:0

     cpu 11 cold: high 62, batch 15 used:0

     cpu 12 hot: high 186, batch 31 used:0

     cpu 12 cold: high 62, batch 15 used:8

     cpu 13 hot: high 186, batch 31 used:33

     cpu 13 cold: high 62, batch 15 used:8

     cpu 14 hot: high 186, batch 31 used:133

     cpu 14 cold: high 62, batch 15 used:2

     cpu 15 hot: high 186, batch 31 used:155

     cpu 15 cold: high 62, batch 15 used:5

     Node 1 HighMem per-cpu: empty

     Free pages: 962792kB (0kB HighMem)

     Active:4471040 inactive:1118163 dirty:52 writeback:0 unstable:0 free:240698 slab:283135 mapped-file:6766 mapped-anon:2481065 pagetables:10524

     Node 0 DMA free:10836kB min:8kB low:8kB high:12kB active:0kB inactive:0kB present:10452kB pages_scanned:0 all_unreclaimable? yes

     lowmem_reserve[]: 0 2991 12081 12081

     Node 0 DMA32 free:66704kB min:2460kB low:3072kB high:3688kB active:2650608kB inactive:122492kB present:3063584kB pages_scanned:0 all_unreclaimable? no

     lowmem_reserve[]: 0 0 9090 9090

     Node 0 Normal free:39604kB min:7476kB low:9344kB high:11212kB active:8293932kB inactive:618776kB present:9308160kB pages_scanned:0 all_unreclaimable? no

     lowmem_reserve[]: 0 0 0 0

     Node 0 HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no

     lowmem_reserve[]: 0 0 0 0

     Node 1 DMA free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no

     lowmem_reserve[]: 0 0 12120 12120

     Node 1 DMA32 free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no

     lowmem_reserve[]: 0 0 12120 12120

     Node 1 Normal free:845648kB min:9968kB low:12460kB high:14952kB active:6939620kB inactive:3731384kB present:12410880kB pages_scanned:0 all_unreclaimable? no

     lowmem_reserve[]: 0 0 0 0

     Node 1 HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB present:0kB pages_scanned:0 all_unreclaimable? no

     lowmem_reserve[]: 0 0 0 0

     Node 0 DMA: 3*4kB 3*8kB 3*16kB 2*32kB 3*64kB 2*128kB 2*256kB 1*512kB 1*1024kB 0*2048kB 2*4096kB = 10836kB

     Node 0 DMA32: 4260*4kB 1224*8kB 26*16kB 1*32kB 2*64kB 1*128kB 1*256kB 0*512kB 0*1024kB 1*2048kB 9*4096kB = 66704kB

     Node 0 Normal: 201*4kB 884*8kB 1117*16kB 141*32kB 2*64kB 2*128kB 1*256kB 1*512kB 0*1024kB 0*2048kB 2*4096kB = 39604kB

     Node 0 HighMem: empty

     Node 1 DMA: empty

     Node 1 DMA32: empty

     Node 1 Normal: 31200*4kB 39388*8kB 14353*16kB 3307*32kB 906*64kB 2*128kB 1*256kB 1*512kB 1*1024kB 1*2048kB 2*4096kB = 845648kB

     Node 1 HighMem: empty

     3108846 pagecache pages

     Swap cache: add 337062, delete 336108, find 261230/261555, race 0+0

     Free swap = 5005124kB

     Total swap = 6289320kB

     Free swap: 5005124kB

     6553600 pages of RAM

     417159 reserved pages

     2320912 pages shared

     954 pages swap cached

    4. 通过vm的活动情况, /proc/vmstat

    $cat /proc/vmstat

     nr_anon_pages 2480490

     nr_mapped 6548

     nr_file_pages 3110632

     nr_slab 283141

     nr_page_table_pages 10334

     nr_dirty 1

     nr_writeback 0

     nr_unstable 0

     nr_bounce 0

     numa_hit 59784369537

     numa_miss 44505232088

     numa_foreign 44505232088

     numa_interleave 288929

     numa_local 59783481501

     numa_other 44506120124

     pgpgin 6085462783

     pgpgout 16203578552

     pswpin 2556

     pswpout 334506

     pgalloc_dma 1

     pgalloc_dma32 12614733

     pgalloc_normal 104277734751

     pgalloc_high 0

     pgfree 104290591256

     pgactivate 50646465

     pgdeactivate 4822484

     pgfault 104165467862

     pgmajfault 16210

     pgrefill_dma 0

     pgrefill_dma32 7653915

     pgrefill_normal 26774426

     pgrefill_high 0

     pgsteal_dma 0

     pgsteal_dma32 256875

     pgsteal_normal 4129645

     pgsteal_high 0

     pgscan_kswapd_dma 0

     pgscan_kswapd_dma32 343521

     pgscan_kswapd_normal 4447936

     pgscan_kswapd_high 0

     pgscan_direct_dma 0

     pgscan_direct_dma32 0

     pgscan_direct_normal 0

     pgscan_direct_high 0

     pginodesteal 0

     slabs_scanned 4000512

     kswapd_steal 4386520

     kswapd_inodesteal 2810883

     pageoutrun 37456

     allocstall 0

     pgrotated 337233

    有了这些信息,我们可以详细知道内存资源是如何使用的以及目前剩余情况,为下一步的优化做些决策上的依据。信息的解读可以google相关的关键词,但是充分理解这些信息点,要对内核的VM相关部分很熟悉。

    PS. 以上我粗粗的列出几点,其他的同学们可以进一步补充,多谢!

    祝玩得开心!

建议继续学习:

  1. Linux内存点滴 用户进程内存空间    (阅读:11050)
  2. ps - 按进程消耗内存多少排序    (阅读:11007)
  3. Linux Used内存到底哪里去了?    (阅读:9745)
  4. Linux操作系统的内存使用方法详细解析    (阅读:8716)
  5. linux内核研究笔记(一)内存管理 – page介绍    (阅读:8028)
  6. 几个内存相关面试题(c/c++)    (阅读:7824)
  7. 内存越界的概念和调试方法    (阅读:6142)
  8. Innodb分表太多或者表分区太多,会导致内存耗尽而宕机    (阅读:6008)
  9. 必看!linux系统如何查看内存使用情况    (阅读:6020)
  10. 如何查看Linux 硬件配置信息    (阅读:5712)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1