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個...