日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Linux 的内存管理工具和调优参数

發布時間:2023/11/27 生活经验 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 的内存管理工具和调优参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1. free
2. top
3. vmstat
4. slabtop;
5. pmap
6. dmesg
7. /proc/meminfo
8. /proc/sys/vm 目錄下的文件
9. sync
10./proc/zoneinfo?

11./proc/pagetypeinfo

查看內存工具:

1.free
free - Display amount of free and used memory in the system
root@ubuntu:/home/ricky# free -h
? ? ? ? ? ? ?total ? ? ? used ? ? ? free ? ? shared ? ?buffers ? ? cached
Mem: ? ? ? ? ?2.0G ? ? ? 712M ? ? ? 1.3G ? ? ? 7.3M ? ? ? ?43M ? ? ? 296M
-/+ buffers/cache: ? ? ? 371M ? ? ? 1.6G
Swap: ? ? ? ? 2.0G ? ? ? ? 0B ? ? ? 2.0G


//shared: 共享內存
//buffers: block buffers
//cached: ?page cache
??
2.top
top - 05:49:21 up 18 min, ?2 users, ?load average: 0.07, 0.18, 0.30
Tasks: 193 total, ? 1 running, 192 sleeping, ? 0 stopped, ? 0 zombie
%Cpu(s): ?2.4 us, ?6.0 sy, ?0.9 ni, 87.0 id, ?3.6 wa, ?0.0 hi, ?0.1 si, ?0.0 st
KiB Mem: ? 2063844 total, ?1093352 used, ? 970492 free, ? 134932 buffers
KiB Swap: ?2094076 total, ? ? ? ?0 used, ?2094076 free. ? 519908 cached Mem


? PID USER ? ? ?PR ?NI ? ?VIRT ? ?RES ? ?SHR S ?%CPU %MEM ? ? TIME+ COMMAND
?4068 root ? ? ?20 ? 0 ? ?5424 ? 1332 ? ?988 R ?11.9 ?0.1 ? 0:00.03 top
?1065 root ? ? ?20 ? 0 ?181812 ?37872 ?17900 S ? 6.0 ?1.8 ? 0:25.80 Xorg
? ? 1 root ? ? ?20 ? 0 ? ?4600 ? 2584 ? 1444 S ? 0.0 ?0.1 ? 0:03.88 init
? ? 2 root ? ? ?20 ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ? 0.0 ?0.0 ? 0:00.00 kthreadd
? ? 3 root ? ? ?20 ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ? 0.0 ?0.0 ? 0:00.43 ksoftirqd/0
? ? 5 root ? ? ? 0 -20 ? ? ? 0 ? ? ?0 ? ? ?0 S ? 0.0 ?0.0 ? 0:00.00 kworker/0:0H
? ? 7 root ? ? ?20 ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ? 0.0 ?0.0 ? 0:04.06 rcu_sched
? ? 8 root ? ? ?20 ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ? 0.0 ?0.0 ? 0:00.00 rcu_bh
? ? 9 root ? ? ?rt ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ? 0.0 ?0.0 ? 0:00.85 migration/0
? ?10 root ? ? ?rt ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ? 0.0 ?0.0 ? 0:00.86 watchdog/0
? ?11 root ? ? ?rt ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ? 0.0 ?0.0 ? 0:00.18 watchdog/1
? ?12 root ? ? ?rt ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ? 0.0 ?0.0 ? 0:00.14 migration/1
? ?13 root ? ? ?20 ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ? 0.0 ?0.0 ? 0:00.26 ksoftirqd/1
? ?14 root ? ? ?20 ? 0 ? ? ? 0 ? ? ?0 ? ? ?0 S ? 0.0 ?0.0 ? 0:00.00 kworker/1:0
? ?15 root ? ? ? 0 -20 ? ? ? 0 ? ? ?0 ? ? ?0 S ? 0.0 ?0.0 ? 0:00.00 kworker/1:0H


top是可交互的命令工具
按下A/M/N/P/T可以進行排序,如下:
?SORTING of task window
? ? ? ? ?For ?compatibility, ?this top supports most of the former top sort keys. ?Since this is primarily a service to former top
? ? ? ? ?users, these commands do not appear on any help screen.
? ? ? ? ? ? command ? sorted-field ? ? ? ? ? ? ? ? ?supported
? ? ? ? ? ? ? A ? ? ? ? start time (non-display) ? ? ?No
? ? ? ? ? ? ? M ? ? ? ? %MEM ? ? ? ? ? ? ? ? ? ? ? ? ?Yes
? ? ? ? ? ? ? N ? ? ? ? PID ? ? ? ? ? ? ? ? ? ? ? ? ? Yes
? ? ? ? ? ? ? P ? ? ? ? %CPU ? ? ? ? ? ? ? ? ? ? ? ? ?Yes
? ? ? ? ? ? ? T ? ? ? ? TIME+ ? ? ? ? ? ? ? ? ? ? ? ? Yes
按下f鍵(Fields)可以打開或者關閉指定的列,如下,


Fields Management for window 1:Def, whose current sort field is TIME+
? ?Navigate with Up/Dn, Right selects for move then <Enter> or Left commits,
? ?'d' or <Space> toggles display, 's' sets sort. ?Use 'q' or <Esc> to end!


* PID ? ? = Process Id ? ? ? ? ? ? ENVIRON = Environment vars ? ?
* USER ? ?= Effective User Name ? ?vMj ? ? = Major Faults delta ?
* PR ? ? ?= Priority ? ? ? ? ? ? ? vMn ? ? = Minor Faults delta ?
* NI ? ? ?= Nice Value ? ? ? ? ? ? USED ? ?= Res+Swap Size (KiB)?
* VIRT ? ?= Virtual Image (KiB) ? ?nsIPC ? = IPC namespace Inode?
* RES ? ? = Resident Size (KiB) ? ?nsMNT ? = MNT namespace Inode?
* SHR ? ? = Shared Memory (KiB) ? ?nsNET ? = NET namespace Inode?
* S ? ? ? = Process Status ? ? ? ? nsPID ? = PID namespace Inode?
* %CPU ? ?= CPU Usage ? ? ? ? ? ? ?nsUSER ?= USER namespace Inode
* %MEM ? ?= Memory Usage (RES) ? ? nsUTS ? = UTS namespace Inode?
* TIME+ ? = CPU Time, hundredths
* COMMAND = Command Name/Line ??
? PPID ? ?= Parent Process pid ?
? UID ? ? = Effective User Id ??
? RUID ? ?= Real User Id ? ? ? ?
? RUSER ? = Real User Name ? ? ?
? SUID ? ?= Saved User Id ? ? ??
? SUSER ? = Saved User Name ? ??
? GID ? ? = Group Id ? ? ? ? ? ?
? GROUP ? = Group Name ? ? ? ? ?
? PGRP ? ?= Process Group Id ? ?
? TTY ? ? = Controlling Tty ? ??
? TPGID ? = Tty Process Grp Id ?
? SID ? ? = Session Id ? ? ? ? ?
? nTH ? ? = Number of Threads ??
? P ? ? ? = Last Used Cpu (SMP)?
? TIME ? ?= CPU Time ? ? ? ? ? ?
? SWAP ? ?= Swapped Size (KiB) ?
? CODE ? ?= Code Size (KiB) ? ??
? DATA ? ?= Data+Stack (KiB) ? ?
? nMaj ? ?= Major Page Faults ??
? nMin ? ?= Minor Page Faults ??
? nDRT ? ?= Dirty Pages Count ??
? WCHAN ? = Sleeping in Function
? Flags ? = Task Flags <sched.h>
? CGROUPS = Control Groups ? ? ?
? SUPGIDS = Supp Groups IDs ? ??
? SUPGRPS = Supp Groups Names ??
? TGID ? ?= Thread Group Id ?
??
? 其中如下幾個filed 與內存有關。
? SWAP ? ?= Swapped Size (KiB) ?
? CODE ? ?= Code Size (KiB) ? ??
? DATA ? ?= Data+Stack (KiB) ? ?
? nMaj ? ?= Major Page Faults ??
? nMin ? ?= Minor Page Faults ??
? nDRT ? ?= Dirty Pages Count?
??
page fault 又分為幾種,major page fault、 minor page fault、 invalid(segment fault)。
major page fault也稱為hard page fault, 指需要訪問的內存不在虛擬地址空間,也不在物理內存中,需要從慢速設備載入。從swap回到物理內存也是hard page fault。
minor page fault也稱為soft page fault, 指需要訪問的內存不在虛擬地址空間,但是在物理內存中,只需要MMU建立物理內存和虛擬地址空間的映射關系即可。?
(通常是多個進程訪問同一個共享內存中的數據,可能某些進程還沒有建立起映射關系,所以訪問時會出現soft page fault)
invalid fault也稱為segment fault, 指進程需要訪問的內存地址不在它的虛擬地址空間范圍內,屬于越界訪問,內核會報segment fault錯誤。


3.vmstat
vmstat - Report virtual memory statistics
root@ubuntu:/home/ricky# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
?r ?b ? swpd ? free ? buff ?cache ? si ? so ? ?bi ? ?bo ? in ? cs us sy id wa st
?0 ?0 ? ? ?0 980532 134948 520236 ? ?0 ? ?0 ? ?34 ? ?10 ? 41 ? 70 ?1 ?1 98 ?0 ?0


?
? ? Memory
? ? ? ?swpd: the amount of virtual memory used.
? ? ? ?free: the amount of idle memory.
? ? ? ?buff: the amount of memory used as buffers.
? ? ? ?cache: the amount of memory used as cache.
? ? ? ?inact: the amount of inactive memory. ?(-a option)
? ? ? ?active: the amount of active memory. ?(-a option)


? ?Swap
? ? ? ?si: Amount of memory swapped in from disk (/s).
? ? ? ?so: Amount of memory swapped to disk (/s).


?
?4. slabtop
?slabtop - display kernel slab cache information in real time
?/proc/slabinfo
?
?Active / Total Objects (% used) ? ?: 350745 / 352998 (99.4%)
?Active / Total Slabs (% used) ? ? ?: 7986 / 7986 (100.0%)
?Active / Total Caches (% used) ? ? : 67 / 96 (69.8%)
?Active / Total Size (% used) ? ? ? : 59301.82K / 59760.34K (99.2%)
?Minimum / Average / Maximum Object : 0.01K / 0.17K / 8.00K


? OBJS ACTIVE ?USE OBJ SIZE ?SLABS OBJ/SLAB CACHE SIZE NAME
?70944 ?70944 100% ? ?0.12K ? 2217 ? ? ? 32 ? ? ?8868K dentry
?62342 ?62342 100% ? ?0.05K ? ?854 ? ? ? 73 ? ? ?3416K buffer_head
?40742 ?40742 100% ? ?0.61K ? 1567 ? ? ? 26 ? ? 25072K ext4_inode_cache
?34752 ?34483 ?99% ? ?0.06K ? ?543 ? ? ? 64 ? ? ?2172K kmalloc-64
?21252 ?21156 ?99% ? ?0.09K ? ?506 ? ? ? 42 ? ? ?2024K kmalloc-96
?19840 ?18831 ?94% ? ?0.03K ? ?155 ? ? ?128 ? ? ? 620K kmalloc-32
?19456 ?19456 100% ? ?0.03K ? ?152 ? ? ?128 ? ? ? 608K ext4_extent_status
?13568 ?13568 100% ? ?0.02K ? ? 53 ? ? ?256 ? ? ? 212K kmalloc-16
?10212 ?10212 100% ? ?0.34K ? ?444 ? ? ? 23 ? ? ?3552K inode_cache
? 8704 ? 8704 100% ? ?0.03K ? ? 68 ? ? ?128 ? ? ? 272K anon_vma
? 7875 ? 7745 ?98% ? ?0.19K ? ?375 ? ? ? 21 ? ? ?1500K kmalloc-192
? 7168 ? 7168 100% ? ?0.01K ? ? 14 ? ? ?512 ? ? ? ?56K kmalloc-8
? 6205 ? 6205 100% ? ?0.05K ? ? 73 ? ? ? 85 ? ? ? 292K Acpi-State
? 5772 ? 5772 100% ? ?0.30K ? ?222 ? ? ? 26 ? ? ?1776K radix_tree_node
? 4420 ? 4420 100% ? ?0.02K ? ? 26 ? ? ?170 ? ? ? 104K nsproxy
? 3654 ? 3598 ?98% ? ?0.37K ? ?174 ? ? ? 21 ? ? ?1392K proc_inode_cache


?
?5. pmap
? pmap - report memory map of a process
? root@ubuntu:/home/ricky/code# pmap 5162
5162: ? ./a.out
08048000 ? ? ?4K r-x-- a.out
08049000 ? ? ?4K r---- a.out
0804a000 ? ? ?4K rw--- a.out
b756a000 ? ?408K rw--- ? [ anon ]
b75d0000 ? 1700K r-x-- libc-2.19.so
b7779000 ? ? ?8K r---- libc-2.19.so
b777b000 ? ? ?4K rw--- libc-2.19.so
b777c000 ? ? 12K rw--- ? [ anon ]
b7794000 ? ? ?8K rw--- ? [ anon ]
b7796000 ? ? ?4K r-x-- ? [ anon ]
b7797000 ? ?128K r-x-- ld-2.19.so
b77b7000 ? ? ?4K r---- ld-2.19.so
b77b8000 ? ? ?4K rw--- ld-2.19.so
bfdaf000 ? ?132K rw--- ? [ stack ]
?total ? ? 2424K


?6.dmesg
? dmesg - print or control the kernel ring buffer
? 顯示內核啟動的日志 - 內存相關log:
?1 [ ? ?0.000000] PERCPU: Embedded 14 pages/cpu @f7b82000 s36096 r0 d21248 u57344
? ? ? 2 [ ? ?0.000000] pcpu-alloc: s36096 r0 d21248 u57344 alloc=14*4096
? ? ? 3 [ ? ?0.000000] pcpu-alloc: [0] 0 [0] 1 [0] 2 [0] 3 [0] 4 [0] 5 [0] 6 [0] 7
? ? ? 4 [ ? ?0.000000] Built 1 zonelists in Zone order, mobility grouping on. ?Total pages: 522373
? ? ? 5 [ ? ?0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.13.0-32-generic root=UUID=80483beb-4610-4202-8e4f-6e3774c72ce6 ? ? ? ? ro find_preseed=/preseed.cfg auto noprompt priority=critical locale=en_US quiet
? ? ? 6 [ ? ?0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)
? ? ? 7 [ ? ?0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes)
? ? ? 8 [ ? ?0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes)
? ? ? 9 [ ? ?0.000000] Initializing CPU#0
? ? ?10 [ ? ?0.000000] xsave: enabled xstate_bv 0x3, cntxt size 0x240
? ? ?11 [ ? ?0.000000] allocated 4194296 bytes of page_cgroup
? ? ?12 [ ? ?0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
? ? ?13 [ ? ?0.000000] Initializing HighMem for node 0 (00037bfe:00080000)
? ? ?14 [ ? ?0.000000] Memory: 2044664K/2096628K available (6528K kernel code, 639K rwdata, 2760K rodata, 872K init, 924K bss, 51964K ? ? ? ? reserved, 1183624K highmem)
? ? ?15 [ ? ?0.000000] virtual kernel memory layout:
? ? ?16 [ ? ?0.000000] ? ? fixmap ?: 0xfff14000 - 0xfffff000 ? ( 940 kB)
? ? ?17 [ ? ?0.000000] ? ? pkmap ? : 0xffc00000 - 0xffe00000 ? (2048 kB)
? ? ?18 [ ? ?0.000000] ? ? vmalloc : 0xf83fe000 - 0xffbfe000 ? ( 120 MB)
? ? ?19 [ ? ?0.000000] ? ? lowmem ?: 0xc0000000 - 0xf7bfe000 ? ( 891 MB)
? ? ?20 [ ? ?0.000000] ? ? ? .init : 0xc19b4000 - 0xc1a8e000 ? ( 872 kB)
? ? ?21 [ ? ?0.000000] ? ? ? .data : 0xc1660532 - 0xc19b3e80 ? (3406 kB)
? ? ?22 [ ? ?0.000000] ? ? ? .text : 0xc1000000 - 0xc1660532 ? (6529 kB)


?7. cat /proc/meminfo
?root@ubuntu:/proc# cat meminfo
MemTotal: ? ? ? ?2063844 kB
MemFree: ? ? ? ? ?746660 kB
Buffers: ? ? ? ? ?138740 kB
Cached: ? ? ? ? ? 656536 kB
SwapCached: ? ? ? ? ? ?0 kB
Active: ? ? ? ? ? 763260 kB
Inactive: ? ? ? ? 446108 kB
Active(anon): ? ? 415072 kB
Inactive(anon): ? ?10880 kB
Active(file): ? ? 348188 kB
Inactive(file): ? 435228 kB
Unevictable: ? ? ? ? ?32 kB
Mlocked: ? ? ? ? ? ? ?32 kB
HighTotal: ? ? ? 1183624 kB
HighFree: ? ? ? ? 489896 kB
LowTotal: ? ? ? ? 880220 kB
LowFree: ? ? ? ? ?256764 kB
SwapTotal: ? ? ? 2094076 kB
SwapFree: ? ? ? ?2094076 kB
Dirty: ? ? ? ? ? ? ? ? 0 kB
Writeback: ? ? ? ? ? ? 0 kB
AnonPages: ? ? ? ?414204 kB
Mapped: ? ? ? ? ? 155944 kB
Shmem: ? ? ? ? ? ? 11864 kB
Slab: ? ? ? ? ? ? ?61084 kB
SReclaimable: ? ? ?45424 kB
SUnreclaim: ? ? ? ?15660 kB
KernelStack: ? ? ? ?3160 kB
PageTables: ? ? ? ? 7428 kB
NFS_Unstable: ? ? ? ? ?0 kB
Bounce: ? ? ? ? ? ? ? ?0 kB
WritebackTmp: ? ? ? ? ?0 kB
CommitLimit: ? ? 3125996 kB?
Committed_AS: ? ?2766012 kB
VmallocTotal: ? ? 122880 kB
VmallocUsed: ? ? ? 23744 kB
VmallocChunk: ? ? ?61636 kB
HardwareCorrupted: ? ? 0 kB
AnonHugePages: ? ?186368 kB
HugePages_Total: ? ? ? 0
HugePages_Free: ? ? ? ?0
HugePages_Rsvd: ? ? ? ?0
HugePages_Surp: ? ? ? ?0
Hugepagesize: ? ? ? 2048 kB
DirectMap4k: ? ? ? 28664 kB
DirectMap2M: ? ? ?884736 kB


CommitLimit:CommitLimit
可以參考:
http://www.firefoxbug.com/index.php/archives/2800/


?8. /proc/sys/vm 目錄下的文件
?root@ubuntu:/proc/sys/vm# ll
total 0
dr-xr-xr-x 1 root root 0 Jun 10 05:31 ./
dr-xr-xr-x 1 root root 0 Jun 10 05:31 ../
-rw-r--r-- 1 root root 0 Jun 10 09:18 admin_reserve_kbytes
-rw-r--r-- 1 root root 0 Jun 10 09:18 block_dump
--w------- 1 root root 0 Jun 10 09:18 compact_memory
-rw-r--r-- 1 root root 0 Jun 10 09:18 dirty_background_bytes
-rw-r--r-- 1 root root 0 Jun 10 05:32 dirty_background_ratio
-rw-r--r-- 1 root root 0 Jun 10 09:18 dirty_bytes
-rw-r--r-- 1 root root 0 Jun 10 09:18 dirty_expire_centisecs
-rw-r--r-- 1 root root 0 Jun 10 05:32 dirty_ratio
-rw-r--r-- 1 root root 0 Jun 10 05:32 dirty_writeback_centisecs
-rw-r--r-- 1 root root 0 Jun 10 09:18 drop_caches
-rw-r--r-- 1 root root 0 Jun 10 09:18 extfrag_threshold
-rw-r--r-- 1 root root 0 Jun 10 09:18 highmem_is_dirtyable
-rw-r--r-- 1 root root 0 Jun 10 09:18 hugepages_treat_as_movable
-rw-r--r-- 1 root root 0 Jun 10 09:18 hugetlb_shm_group
-rw-r--r-- 1 root root 0 Jun 10 05:32 laptop_mode
-rw-r--r-- 1 root root 0 Jun 10 09:18 legacy_va_layout
-rw-r--r-- 1 root root 0 Jun 10 09:18 lowmem_reserve_ratio
-rw-r--r-- 1 root root 0 Jun 10 09:18 max_map_count
-rw-r--r-- 1 root root 0 Jun 10 09:18 memory_failure_early_kill
-rw-r--r-- 1 root root 0 Jun 10 09:18 memory_failure_recovery
-rw-r--r-- 1 root root 0 Jun 10 09:18 min_free_kbytes
-rw-r--r-- 1 root root 0 Jun 10 05:31 mmap_min_addr
-rw-r--r-- 1 root root 0 Jun 10 09:18 nr_hugepages
-rw-r--r-- 1 root root 0 Jun 10 09:18 nr_overcommit_hugepages
-r--r--r-- 1 root root 0 Jun 10 09:18 nr_pdflush_threads
-rw-r--r-- 1 root root 0 Jun 10 09:18 oom_dump_tasks
-rw-r--r-- 1 root root 0 Jun 10 09:18 oom_kill_allocating_task
-rw-r--r-- 1 root root 0 Jun 10 05:31 overcommit_memory
-rw-r--r-- 1 root root 0 Jun 10 09:18 overcommit_ratio
-rw-r--r-- 1 root root 0 Jun 10 09:18 page-cluster
-rw-r--r-- 1 root root 0 Jun 10 09:18 panic_on_oom
-rw-r--r-- 1 root root 0 Jun 10 09:18 percpu_pagelist_fraction
-rw-r--r-- 1 root root 0 Jun 10 09:18 scan_unevictable_pages
-rw-r--r-- 1 root root 0 Jun 10 09:18 stat_interval
-rw-r--r-- 1 root root 0 Jun 10 09:18 swappiness
-rw-r--r-- 1 root root 0 Jun 10 09:18 user_reserve_kbytes
-rw-r--r-- 1 root root 0 Jun 10 09:18 vdso_enabled
-rw-r--r-- 1 root root 0 Jun 10 09:18 vfs_cache_pressure


解釋:
swappiness:
(0~100), 該值越高則linux越傾向于將部分長期沒有用到的頁swap到交換磁盤。
swappiness=0,不會交換匿名頁面到交換磁盤,除非系統內存非常低
swappiness=100, 內核積極回收匿名頁面。


panic_on_oom:
用于控制如何處理out-of-memory,可選值包括0/1/2
0:當內存不足時內核調用OOM killer殺死一些rogue進程,每個進程描述符都有一個oom_score標示,oom killer會選擇oom_score較大的進程
1:發生了OOM以后,如果有mempolicy/cpusets的進程限制,而這些nodes導致了內存問題的時候,OOM Killer會干掉這些中的一個,系統也會恢復
2:OOM后必然panic
備注:每個進程有一個oom_score_adj (取值范圍:-1000 - 1000)與此參數有關,-1000表示不會被oom killer選中。
舊版本中用的是oom_adj(-17,15),不過oom_adj逐漸會被oom_score_adj 取代。
比如:
cat /proc/<pid>/oom_score_adj


如下鏈接非常重要:
https://www.cnblogs.com/tolimit/p/5065761.html
admin_reserve_kbytes:給有cap_sys_admin權限的用戶保留的內存數量(默認值是 min(free_page * 0.03, 8MB))


drop_caches:
寫入數值可以使內核釋放page_cache,dentries和inodes緩存所占的內存。
1:只釋放page_cache
2:只釋放dentries和inodes緩存
3:釋放page_cache、dentries和inodes緩存


oom_dump_tasks
如果啟用,在內核執行OOM-killing時會打印系統內進程的信息(不包括內核線程),信息包括pid、uid、tgid、vm size、rss、nr_ptes,swapents,oom_score_adj和進程名稱。這些信息可以幫助找出為什么OOM killer被執行,找到導致OOM的進程,以及了解為什么進程會被選中。
0:不打印系統內進程信息
1:打印系統內進程信息


memory_failure_early_kill:
控制發生某個內核無法處理的內存錯誤發生的時候,如何去殺掉這個進程。當這些錯誤頁有swap鏡像的時候,內核會很好的處理這個錯誤,不會影響任何應用程序,但是如果沒有的話,內核會把進程殺掉,避免內存錯誤的擴大
1:在發現內存錯誤的時候,就會把所有擁有此內存頁的進程都殺掉
0:只是對這部分頁進行unmap,然后把第一個試圖進入這個頁的進程殺掉
memory_failure_recovery:
是否開啟內存錯誤恢復機制
1:開啟
0:一旦出現內存錯誤,就panic


https://blog.csdn.net/joyeu/article/details/20063429
min_free_kbytes:代表系統所保留空閑內存的最低限,在系統初始化時會根據內存大小計算一個默認值,計算規則是:
min_free_kbytes = sqrt(lowmem_kbytes * 16) = 4 * sqrt(lowmem_kbytes)(注:lowmem_kbytes即可認為是系統內存大小)
min_free_kbytes的主要用途是計算影響內存回收的三個參數 watermark[min/low/high]
?三個watermark的計算方法:
?watermark[min] = min_free_kbytes換算為page單位即可,假設為min_free_pages。
?因為是每個zone各有一套watermark參數,實際計算效果是根據各個zone大小所占內存總大小的比例,而算出來的per zone min_free_pages)
?watermark[low] = watermark[min] * 5 / 4
?watermark[high] = watermark[min] * 3 / 2


https://blog.csdn.net/joyeu/article/details/20063429
lowmem_reserve_ratio
1.作用
除了min_free_kbytes會在每個zone上預留一部分內存外,lowmem_reserve_ratio是在各個zone之間進行一定的防衛預留,主要是防止高端zone在沒內存的情況下過度使用低端zone的內存資源。
例如現在常見的一個node的機器有三個zone: DMA,DMA32和NORMAL。DMA和DMA32屬于低端zone,內存也較小,如96G內存的機器兩個zone總和才1G左右,NORMAL就相對屬于高端內存(現在一般沒有HIGH zone),而且數量較大(>90G)。低端內存有一定的特殊作用比如發生DMA時只能分配DMA zone的低端內存,因此需要在 盡量可以使用高端內存時 而 不使用低端內存,同時防止高端內存分配不足的時候搶占稀有的低端內存


?
http://www.firefoxbug.com/index.php/archives/2800/
overcommit_memory:
0 — 默認設置。個人理解:當應用進程嘗試申請內存時,內核會做一個檢測。內核將檢查是否有足夠的可用內存供應用進程使用;如果有足夠的可用內存,內存申請允許;否則,內存申請失敗,并把錯誤返回給應用進程。舉個例子,比如1G的機器,A進程已經使用了500M,當有另外進程嘗試malloc 500M的內存時,內核就會進行check,發現超出剩余可用內存,就會提示失敗。
1 — 對于內存的申請請求,內核不會做任何check,直到物理內存用完,觸發OOM殺用戶態進程。同樣是上面的例子,1G的機器,A進程500M,B進程嘗試malloc 500M,會成功,但是一旦kernel發現內存使用率接近1個G(內核有策略),就觸發OOM,殺掉一些用戶態的進程(有策略的殺)。
2 — 當請求申請的內存 >= SWAP內存大小 + 物理內存 * ?N,則拒絕此次內存申請。
解釋下這個N:N是一個百分比,根據overcommit_ratio/100來確定,比如overcommit_ratio=50,那么N就是50%。
overcommit_ratio:
只有當vm.overcommit_memory = 2的時候才會生效,內存可申請內存為
SWAP內存大小 + 物理內存 * overcommit_ratio/100


percpu_pagelist_fraction:
每個CPU能從每個zone所能分配到的pages的最大值(單位每個zone的1/X),0為不限制


9. sync
NAME
? ? ? ?sync - flush file system buffers
DESCRIPTION
? ? ? ?Force changed blocks to disk, update the super block.
??
11./proc/pagetypeinfo
root@ubuntu:/usr/local# cat /proc/pagetypeinfo
Page block order: 9
Pages per block: ?512


Free pages count per migrate type at order ? ? ? 0 ? ? ?1 ? ? ?2 ? ? ?3 ? ? ?4 ? ? ?5 ? ? ?6 ? ? ?7 ? ? ?8 ? ? ?9 ? ? 10?
Node ? ?0, zone ? ? ?DMA, type ? ?Unmovable ? ? ?1 ? ? ?1 ? ? ?3 ? ? ?0 ? ? ?0 ? ? ?1 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0?
Node ? ?0, zone ? ? ?DMA, type ?Reclaimable ? ? ?1 ? ? ?1 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?1 ? ? ?1 ? ? ?0 ? ? ?1 ? ? ?1 ? ? ?0?
Node ? ?0, zone ? ? ?DMA, type ? ? ?Movable ? ? ?2 ? ? ?1 ? ? ?1 ? ? ?0 ? ? ?0 ? ? ?1 ? ? ?0 ? ? ?1 ? ? ?1 ? ? ?0 ? ? ?0?
Node ? ?0, zone ? ? ?DMA, type ? ? ?Reserve ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?1 ? ? ?0?
Node ? ?0, zone ? ? ?DMA, type ? ? ? ? ?CMA ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0?
Node ? ?0, zone ? ? ?DMA, type ? ? ?Isolate ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0?
Node ? ?0, zone ? Normal, type ? ?Unmovable ? ? ?7 ? ? ?1 ? ? ?0 ? ? ?0 ? ? ?3 ? ? ?7 ? ? 12 ? ? ?9 ? ? ?3 ? ? ?0 ? ? ?0?
Node ? ?0, zone ? Normal, type ?Reclaimable ? ? ?1 ? ? ?1 ? ? ?3 ? ? ?2 ? ? ?2 ? ? ?0 ? ? ?1 ? ? ?0 ? ? ?0 ? ? ?1 ? ? ?0?
Node ? ?0, zone ? Normal, type ? ? ?Movable ? ?136 ? ? 90 ? ? 63 ? ? 13 ? ? ?1 ? ? ?0 ? ? ?7 ? ? ?3 ? ? ?2 ? ? ?0 ? ? 78?
Node ? ?0, zone ? Normal, type ? ? ?Reserve ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?1?
Node ? ?0, zone ? Normal, type ? ? ? ? ?CMA ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0?
Node ? ?0, zone ? Normal, type ? ? ?Isolate ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0?
Node ? ?0, zone ?HighMem, type ? ?Unmovable ? ? ?0 ? ? ?1 ? ? ?0 ? ? ?7 ? ? 21 ? ? 11 ? ? ?8 ? ? ?8 ? ? ?2 ? ? ?2 ? ? ?2?
Node ? ?0, zone ?HighMem, type ?Reclaimable ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0?
Node ? ?0, zone ?HighMem, type ? ? ?Movable ? ? 27 ? ? 27 ? ? 42 ? ? 13 ? ? 24 ? ? ?8 ? ? ?5 ? ? ?2 ? ? ?3 ? ? ?5 ? ?148?
Node ? ?0, zone ?HighMem, type ? ? ?Reserve ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?1?
Node ? ?0, zone ?HighMem, type ? ? ? ? ?CMA ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0?
Node ? ?0, zone ?HighMem, type ? ? ?Isolate ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0 ? ? ?0?


Number of blocks type ? ? Unmovable ?Reclaimable ? ? ?Movable ? ? ?Reserve ? ? ? ? ?CMA ? ? ?Isolate?
Node 0, zone ? ? ?DMA ? ? ? ? ? ?1 ? ? ? ? ? ?2 ? ? ? ? ? ?4 ? ? ? ? ? ?1 ? ? ? ? ? ?0 ? ? ? ? ? ?0?
Node 0, zone ? Normal ? ? ? ? ? 44 ? ? ? ? ? 24 ? ? ? ? ?368 ? ? ? ? ? ?2 ? ? ? ? ? ?0 ? ? ? ? ? ?0?
Node 0, zone ?HighMem ? ? ? ? ? 23 ? ? ? ? ? ?0 ? ? ? ? ?555 ? ? ? ? ? ?1 ? ? ? ? ? ?0 ? ? ? ? ? ?0?


12. oom killer
人為制造一個oom killer:
echo f > /proc/sysrq-trigger
另外,向sysrq寫入命令的幫助文件如下,上例中寫入的f: memory-full-oom-kill(f),也就是執行oom kill
SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) show-blocked-tasks(w) dump-ftrace-buffer(z)

總結

以上是生活随笔為你收集整理的Linux 的内存管理工具和调优参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一区二区日韩国产 | 黄色片久久久久 | 高潮毛片无遮挡 | 无人在线观看高清视频 | 国产精品久久久99 | 亚洲AV无码一区二区三区蜜桃 | 国产不卡免费视频 | 手机在线精品视频 | 巨乳动漫美女 | 人妖一区二区三区 | 国产一区二区三区福利 | 视频在线一区二区三区 | 国产精品女人精品久久久天天 | 一级看片 | 天堂va蜜桃一区 | 男人天堂网在线观看 | 国产精品乱码妇女bbbb | 中文字幕在线一区二区三区 | 亚洲欧美一区二区三区情侣bbw | julia一区二区三区在线观看 | av在线中文 | 天天干天天碰 | 国产美女黄色片 | 精品久久久99 | 男人视频网站 | 天堂网资源 | 亚洲男人天堂av | 精品一区二区三区四区五区六区 | 免费在线播放 | 一女双乳被两男吸视频 | 国产精品自拍合集 | 操她视频在线观看 | 96精品在线 | 欧美人体做爰大胆视频 | 日韩在线看片 | 久久97久久97精品免视看 | 成人ay| 青草久久网 | 黄色在线免费看 | 久久精品国产一区二区电影 | 日韩一区二区免费视频 | 三级第一页| 欧美xxxx胸大 | 91精品国产色综合久久不卡粉嫩 | 青青青国产精品一区二区 | 麻豆精品免费视频 | 麻豆av在线 | 欧美精品videos极品 | 国产精品成人一区二区三区 | 美女被艹视频网站 | 蜜臀久久99精品久久久久宅男 | 亚洲av毛片一区二二区三三区 | 无码少妇一区二区三区 | 国产成人免费电影 | 天天爱综合 | 被绑在床强摁做开腿呻吟 | 91视频一区 | 伊人院| 玖玖精品国产 | 厕拍极品 | 欧美日韩一区二区在线播放 | 在线亚洲综合 | 亚洲国产区 | 一边摸上面一边摸下面 | 国产做爰xxxⅹ高潮视频12p | 亚洲狠狠操 | 每日更新av | 日本在线视频二区 | 午夜久久久久久久久久 | 大桥未久av在线 | 国产老妇视频 | 美日韩av | 欧美一级做性受免费大片免费 | 天天拍夜夜拍 | 亚洲精品国产精品乱码不66 | 香蕉视频久久 | 成人久久视频 | 久久久无码人妻精品无码 | av中文字幕网址 | 国产亚洲精品成人av在线 | www.黄色片 | 亚洲一区二区天堂 | 第一次破处视频 | 国产精视频 | 色老头一区二区三区在线观看 | 亚洲精品污 | 丁香社区五月天 | 亚洲欧美另类中文字幕 | 日韩毛片视频 | 极品美女被c | 丝袜人妻一区二区 | 日日操狠狠操 | 亚洲欧美日韩在线一区 | www.sesehu| 国产成人福利在线 | 国产白丝精品91爽爽久久 | 永久免费在线观看视频 | 伊人久久国产 | 成人91av|