調優之記憶體調優 容量調節

2021-07-31 10:53:18 字數 4788 閱讀 1701



memory 容量調節

/etc/sysctl.conf

與容量相關的記憶體可調引數 /proc/sys/vm/

[root@uplook ~]# sysctl -a |grep vm

[root@uplook ~]# yum -y install kernel-doc

[root@uplook ~]# ls /usr/share/doc/kernel-doc-2.6.32/documentation/sysctl/

00-index  abi.txt  ctl_unnumbered.txt  fs.txt  kernel.txt  net.txt  readme  sunrpc.txt  vm.txt

1. 如何接受大記憶體分配請求

[root@uplook ~]# sysctl -a |grep vm.overcomm

vm.overcommit_memory = 2

vm.overcommit_ratio = 50     物理記憶體百分比

vm.overcommit_memory = 0|1|2

-0:  智慧型識別

-1:  不做任何檢查,完全可以分配

-2:  不做超過能力的事

能力:會將swap + percentage(vm.overcommit_ratio) of the ram (default 50)作為分給單個程序最大的虛存的最大值

swap + 物理記憶體的50%(vm.overcommit_ratio值預設是50%,可以超過100%)

swap 8g    +   物理記憶體4g * 50%  = 10g

swap 8g    +   物理記憶體4g * 150%  = 14g

2. thp設定

nr_hugepages

vm.nr_hugepages = 100 大頁設定   sysctl.conf

3. buffer cache and page cache

drop_caches  

- 1  block data to free pagecache 檔案系統快取的實際block資料

- 2  meta data to  free dentries  and  inodes 快取資料的元資料

- 3  block and meta data to free   pagecache,    dentries    and    inodes   所有資料

sysctl -a | grep drop_caches

4. reclaiming dirty pages 髒頁**

髒頁:把磁碟上的檔案讀入到記憶體中發生修改過的頁來還未寫回磁碟 

[root@uplook ~]# less /proc/meminfo

free   未分配

inactive     buffer cache and page cache 但沒有修改,這一部分也是可以被分配的

dirty   如果從磁碟上讀出來的檔案修改過,但沒有存檔

active  程序正在使用

[root@uplook ~]# grep -i dirt /proc/meminfo  

dirty:               212 kb

方法一:手動**

[root@uplook ~]# sync   髒頁寫回磁碟

方法二:由kernel自動**

vm.dirty_writeback_centisecs              kernel每隔多久喚醒flush-major:minor執行緒,預設為5秒,之用版本為pdflush daemons 數字x10 釐秒

vm.dirty_expire_centisecs               髒頁過期時間,單位是1/100秒,即10毫秒,預設為3000,即30秒

vm.dirty_background_ratio(default 10)     ratio(比),當系統的記憶體有10%髒頁,kernel會在後台刷髒頁

vm.dirty_background_bytes = 0

vm.dirty_ratio(default 40)               髒頁有40%,掛起所有程序的寫操作,flush髒頁,至到10%,例如1g記憶體,有400m都是髒頁

vm.dirty_bytes = 0                                 到達多少位元組 強制重新整理

釐秒 1%秒

數字(ratio)越小,i/o壓力越大

資料(ratio)越大,i/o壓力越小

out-of-memory kill 可調引數

記憶體不足(oom)指的是所有可用記憶體,包括 swap 空間都已被分配的計算狀態。預設情況下,這個狀態可造成系統 panic,並停止

如預期般工作。但將 /proc/sys/vm/panic_on_oom 引數設定為 0 會讓核心在出現 oom 時呼叫 oom _killer 功能。通常

oom _killer 可殺死偷盜程序,並讓系統正常工作。

sysctl -a | grep panic

panic_on_oom   記憶體不足是否掛起  不開啟掛起殺死程序

[root@uplook ~]# cat /proc/7649/oom_adj 0

[root@uplook ~]# cat /proc/`pgrep sshd`/oom_adj  免死

-17

-16 ----- 15         資料越大,被oom _killer 殺死的可能性越大

-17                     將 oom_adj 值設定為 -17 則為該程序禁用 oom _killer

殺程序可能導致資料丟失

與容量相關的記憶體可調引數 /proc/sys/kernel/

==訊息對列==

kernel.msgmax

以位元組為單位規定資訊佇列中任意資訊的最大允許大小。這個值一定不能超過該佇列的大小

(msgmnb)。預設值為 65536。

kernel.msgmnb

以位元組為單位規定單一資訊佇列的最大值。預設為 65536 位元組。

msgmni

規定資訊佇列識別符的最大數量(以及佇列的最大數量)。64 位架構機器的預設值為 1985;  32位架構機器的預設值為 1736。

==共享記憶體==

shmall

以位元組為單位規定一次在該系統中可以使用的共享記憶體總量。64 位架構機器的預設值為

4 294 967296;32 位架構機器的預設值為 2684 354 56。

shmmax

以位元組為單位規定核心可允許的最大共享記憶體片段。64 位架構機器的預設值為 68719476736;

32 位架構機器的預設值為 4294967295。注:但核心支援的值比這個值要多得多。

shmmni

規定系統範圍內最小共享記憶體片段。在 64 位和 32 位架構機器中的預設值都是 4096。

[root@uplook ~]# ipcs

------ shared memory segments --------

key        shmid      owner      perms      bytes      nattch     status     

0x6c6c6536 0          root       600        4096       0                      

0x00000000 1867777    root       600        393216     2          dest        

0x00000000 1900546    root       600        393216     2          dest        

0x00000000 1933315    root       600        393216     2          dest      

------ semaphore arrays --------

key        semid      owner      perms      nsems    

0x00000000 0          root       600        1        

0x00000000 32769      root       600        1        

0x00000000 786434     apache     600        1        

0x00000000 819203     apache     600        1        

------ message queues --------

key        msqid      owner      perms      used-bytes   messages  

甲骨文配置建議值

fs.aio-max-nr = 1048576

fs.file-max = 6815744

kernel.shmall = 2097152

kernel.shmmax = 4294967295

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

eclipse 效能調優之記憶體分配

eclipse 效能調優之記憶體分配 如果覺得自己的 eclipse 比較慢,可以通過修改 eclipse home eclipse.ini 檔案進行調整 將 xms 和 xmx 的記憶體調整至 512m 你本機可用記憶體的 1 4,2g 記憶體的話就是 512m xms512m xmx512m 然...

eclipse 效能調優之記憶體分配

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!eclipse 效能調優之記憶體分配 如果覺得自己的 eclipse 比較慢,可以通過修改 eclipse home eclipse.ini 檔案進行調整 將 xms 和 xmx 的記憶體調整至 512m 你本機可用記憶體的 1 4,2g 記憶體的...

spark調優,調節並行度

spark並行度指的是什麼?並行度 其實就是指的是,spark作業中,各個stage的task數量,也就代表了sprark作業的各個階段 stage 的並行度。如果不調節,那麼導致並行度過低,會怎麼樣?假設,現在已經在spark submit指令碼中給我們的spark作業分配了足夠的資源,比如50個...