欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Linux內存監控與調優(yōu)

 

首先,內存在被使用是被分為區域的

32位系統:zone_DMA

    zone_NORMAL (正常內存區域 16M) 

    zone_RESRVED(用於高地址內存空間 896M)

    zone_HIGHMEM(高地址內存空間 )

 

64位系統:

    zone_DMA(16G)

    zone_DMA32(4G)

    zone_normal(大於4G)

內存大頁(yè) 

    HugePage:大頁(yè)面,在rhel 6 x64位系統上不但支持大頁(yè)面而且支持使用透明大頁(yè)

    THP:透明大頁(yè),簡(jiǎn)單來(lái)講就是對匿名內存的使用,不需要用戶(hù)的參與自動(dòng)在背後使用大頁(yè)面來(lái)管理匿名內存段

    匿名內存頁(yè):RSS - 內存段 = 匿名頁(yè)

     

它支持兩種內存大?。?/span>

CentOS 6.4 x86_64 : 

    單個(gè)頁(yè)面大小可達到1G,在TB級的內存使用上通常有效

    小於TB級的內存,2M比較常見(jiàn)的

varnish是實(shí)現可以支持在內存中提供緩存的,而varnish據說(shuō)跟透明大頁(yè)是不兼容的,而透明大頁(yè)通常情況下是系統在背後使用的,既然不兼容則需要將透明大頁(yè)的功能關(guān)閉

 

查看內存大頁(yè)相關(guān)信息

[root@node3 ~]# cat /proc/zoneinfo

Node 0, zone     DMA                #顯示出是否使用透明大頁(yè)

  pages free     3936

        min      83

        low      103

        high     124

       scanned  0

       spanned  4095

       present  3837

    nr_free_pages3936

    nr_inactive_anon0

    nr_active_anon0

   nr_inactive_file 0

    nr_active_file0

    nr_unevictable0

    nr_mlock     0

    nr_anon_pages 0

    nr_mapped    0

    nr_file_pages 0

    nr_dirty     0

    nr_writeback 0

   nr_slab_reclaimable 0

   nr_slab_unreclaimable 0

   nr_page_table_pages 0

    nr_kernel_stack0

   nr_unstable  0

    nr_bounce    0

    nr_vmscan_write0

   nr_writeback_temp 0

   nr_isolated_anon 0

   nr_isolated_file 0

    nr_shmem     0

    numa_hit     1

    numa_miss    0

    numa_foreign 0

    numa_interleave0

    numa_local   1

    numa_other   0

    nr_anon_transparent_hugepages 0             #匿名的透明矩形頁(yè)有0個(gè),0說(shuō)明沒(méi)有使用

 

        protection:(0, 2004, 2004, 2004)

  pagesets

    cpu: 0

             count: 0

             high:  0

             batch: 1

  vm statsthreshold: 6

    cpu: 1

             count: 0

             high:  0

             batch: 1

  vm statsthreshold: 6

    cpu: 2

             count: 0

             high:  0

             batch: 1

  vm statsthreshold: 6

    cpu: 3

             count: 0

             high:  0

             batch: 1

  vm statsthreshold: 6

 all_unreclaimable: 0

 prev_priority:     12

  start_pfn:         1

 inactive_ratio:    1

 

#以下是32位系統相關(guān)信息

Node 0, zone    DMA32

  pages free     219541

        min      11180

        low      13975

        high     16770

       scanned  0

       spanned  520189

       present  513077

    nr_free_pages219541

   nr_inactive_anon 2190

    nr_active_anon77259

   nr_inactive_file 64767

    nr_active_file70570

    nr_unevictable0

    nr_mlock     0

    nr_anon_pages27601

    nr_mapped    6761

    nr_file_pages137536

    nr_dirty     5

    nr_writeback 0

   nr_slab_reclaimable 24374

   nr_slab_unreclaimable 7081

   nr_page_table_pages 3912

    nr_kernel_stack172

   nr_unstable  0

    nr_bounce    0

    nr_vmscan_write0

   nr_writeback_temp 0

   nr_isolated_anon 0

   nr_isolated_file 0

    nr_shmem     2200

    numa_hit     40788326

    numa_miss    0

    numa_foreign 0

    numa_interleave15094

    numa_local   40788326

    numa_other   0

   nr_anon_transparent_hugepages 97           #自動(dòng)啟動(dòng)透明大頁(yè),而一個(gè)頁(yè)面的小小為2MB

        protection:(0, 0, 0, 0)

  pagesets

    cpu: 0

             count: 127

             high:  186

             batch: 31

  vm statsthreshold: 30

    cpu: 1

             count: 87

             high:  186

             batch: 31

  vm statsthreshold: 30

    cpu: 2

             count: 50

             high:  186

             batch: 31

  vm stats threshold:30

    cpu: 3

             count: 148

             high:  186

             batch: 31

  vm statsthreshold: 30

 all_unreclaimable: 0

 prev_priority:     12

  start_pfn:         4096

 inactive_ratio:    3

一個(gè)頁(yè)面大小為2M,以上沒(méi)有顯示頁(yè)面大小,所以我們要來(lái)查看另外一個(gè)文件

[root@node3 ~]# cat /proc/meminfo

MemTotal:       1922112 kB

MemFree:         893856 kB

Buffers:          77136 kB

Cached:          473116 kB

SwapCached:           0 kB

Active:          591384 kB

Inactive:        267860 kB

Active(anon):    309040 kB

Inactive(anon):    8760 kB

Active(file):    282344 kB

Inactive(file):  259100 kB

Unevictable:          0 kB

Mlocked:              0 kB

SwapTotal:      2097144 kB

SwapFree:       2097144 kB

Dirty:              104 kB

Writeback:            0 kB

AnonPages:       308996 kB

Mapped:           27052 kB

Shmem:             8800 kB

Slab:            125692 kB

SReclaimable:     97508 kB

SUnreclaim:       28184 kB

KernelStack:       1376 kB

PageTables:       15616 kB

NFS_Unstable:         0 kB

Bounce:               0 kB

WritebackTmp:         0 kB

CommitLimit:    3058200 kB

Committed_AS:   1085080 kB

VmallocTotal:  34359738367 kB

VmallocUsed:      12468 kB

VmallocChunk:  34359720976 kB

HardwareCorrupted:    0 kB

AnonHugePages:    198656 kB               #匿名的透明大頁(yè)

HugePages_Total:       0                  #矩形頁(yè)面的總數

HugePages_Free:        0                  #矩形頁(yè)面的空閑總數

HugePages_Rsvd:        0                  #預留數

HugePages_Surp:        0

Hugepagesize:       2048 kB               #Hugepagesize為 2M ,與nr_anon_transparent_hugepages對應

DirectMap4k:       8180 kB

DirectMap2M:    2088960 kB

AnonHugePages 除以 Hugepagesize結果為 nr_anon_transparent_hugepages 的數量,如下所示

[root@node3 ~]# echo '198656/2048 ' | bc

97

 

 

查看當前主機內存空間的使用情況

使用free -m 查看內存使用情況

free命令是最常用的,所以一般我們喜歡使用free -m 以兆為單位的顯示內存使用狀況

[root@node3 ~]# free -m

            total       used       free    shared    buffers     cached

Mem:         1877       1032        844          0         75        462

-/+ buffers/cache:       495       1381

Swap:        2047          0       2047

total :            物理內存總空間

Used :             已用的物理內存 

free :              剩餘的物理內存

shared:            共享內存

buffers/cache:     緩存緩存

Mem :              虛擬內存

 

這裏顯示844的空閑內存其實(shí)並非如此,因此空閑空間加上可以清理的buffer/cache一共是1405,這才是真正的空閑內存

buffer/cache的作用:訪(fǎng)問(wèn)IO設備,尤其硬盤(pán)上的文件,是非常慢的,為了加速訪(fǎng)問(wèn)使其緩存至內存中,如果後期用戶(hù)對其訪(fǎng)問(wèn)則直接在內存中訪(fǎng)問(wèn)而不直接再到IO設備上檢索

因此Linux在使用buffer/cache是毫不吝嗇的,只要內存有空間則直接用來(lái)緩存

 

關(guān)於 "-/+ buffers/cache"

[root@node3 ~]# free -m

            total       used       free    shared    buffers     cached

Mem:         1877       1043        683          0        178       462

-/+ buffers/cache:        471       1405

Swap:        2047          0       2047

很顯然,如果已用了1877 的內存,但是大部分都被buffer和cache使用了,所以壓根用的沒(méi)有這麼多,如果將buffer/cache減掉的話(huà)那麼實(shí)際用了471的內存

 

清理buffer/cache

如果一定要清理buffer/cache的話(huà),只需要將/proc/sys/vm/drop_caches 更改其數值即可

可以使用man proc來(lái)獲取幫助進(jìn)而查看其每個(gè)文件的意義

[root@node3 ~]# man proc

      /proc/sys/vm/drop_caches (since Linux 2.6.16)

             Writing to this file causes the kernel to drop clean caches, dentriesand inodes from memory, causing that

             memory to become free.

 

              Tofree pagecache, use echo 1 > /proc/sys/vm/drop_caches; to free  dentries and  inodes,  use echo  2  >

             /proc/sys/vm/drop_caches; to free pagecache, dentries and inodes, useecho 3 > /proc/sys/vm/drop_caches.

 

             Because  this  is a  non-destructive  operation and  dirty objects are notfreeable, the user should run

             sync(8) first.

以上可以得出大概信息,如果想釋放pagecache,那麼則執行 echo 1 > /proc/sys/vm/drop_caches

只不過(guò)buffer/cache緩存的時(shí)候被分為了兩大類(lèi):

1.cache:專(zhuān)門(mén)用來(lái)緩存page cache 頁(yè)緩存,這種緩存通常緩存的是文件數據,比如打開(kāi)的文件內容

2.buffers:所緩存的是文件的元數據(inode+denty),或者通常用來(lái)緩存用戶(hù)的寫(xiě)請求同步到硬盤(pán)上去的時(shí)候,先在內存中緩存一段時(shí)間再同步至硬盤(pán)

 

下面我們來(lái)清理buffer/cache,並觀(guān)測free、buffer和cache這兩個(gè)值的變化

先來(lái)查看我們當前內存資源使用情況

[root@node3 ~]# free -m

            total       used      free     shared    buffers    cached

Mem:         1877       1004       872          0         75        462

-/+ buffers/cache:       467       1409

Swap:        2047          0       2047

清理buffer/cache

[root@node3 ~]# echo 1 > /proc/sys/vm/drop_caches

[root@node3 ~]# free -m

            total       used       free    shared    buffers     cached

Mem:         1877        483       1393          0          0         26

-/+ buffers/cache:       456       1420

Swap:        2047          0       2047

所以echo 1 未必是只針對於buffer的,而cached這個(gè)值卻還有數據,說(shuō)明我們修改參數的時(shí)候,它的元數據在裏面也存在

這時(shí)候如果我們大量去訪(fǎng)問(wèn)文件會(huì )發(fā)現buffers/cache又會(huì )增加,因為對linux而言是利用內核緩沖進(jìn)行加速的

 

交換內存的優(yōu)化

簡(jiǎn)單來(lái)講,最好不要用交換內存,但是linux系統的傾向性是非常高的,在服務(wù)器上它的默認值是相當不理想的,很多默認值只是適合於交互式桌面型的

涉及參數文件:/proc/sys/vm/swappiness

於是我們man一下proc 找一下swappiness相關(guān)說(shuō)明

      /proc/sys/vm/swappiness

              Thevalue in this file controls how aggressively the  kernel  will swap  memory  pages.  Higher  values

             increase agressiveness, lower values descrease aggressiveness.  The default value is 60.

我們內核有多大傾向性使用交換內存的,這個(gè)值越大,那麼越傾向使用交換內存;

值越小越不傾向使用,而默認值是60,它的取值範圍通常是0-100的;

[root@node3 ~]# cat /proc/sys/vm/swappiness

60

建議設置參數為0,因為0代表交換內存能不用則不用,而這正是恰恰是我們所需要的

在服務(wù)器上,尤其是物理內存緩存服務(wù)器上,比如varnish,一定強烈建議將此值改為0

 

一般而言當我們目前已經(jīng)映射進(jìn)頁(yè)表中的內存百分比,也就是說(shuō)物理內存的百分比已經(jīng)被多少頁(yè)表所使用了,各個(gè)進(jìn)程頁(yè)表映射目錄裏會(huì )映射出來(lái)每個(gè)線(xiàn)性地址到物理地址的空間,所以多個(gè)進(jìn)程都啟動(dòng)了而且都啟動(dòng)映射了,那所以物理內存中的進(jìn)程當中的已經(jīng)被直接映射進(jìn)進(jìn)程頁(yè)表中的空間大小的百分比 + swappiness的值 大於或等於100 的時(shí)候則啟動(dòng)交換內存,也就是說(shuō)當我們的進(jìn)程啟動(dòng)起來(lái)之後,會(huì )有大量的數據實(shí)現了頁(yè)表映射,除了有些不能移除的之外,那這些映射頁(yè)表中已經(jīng)使用的映射內存空間超出了物理內存的值從而加上swapiness的值,這裏swappiness是百分比) 只要大於等於100則開(kāi)始啟用交換存在

 

默認是60,如果這裏是40%則啟動(dòng)交換內存,所以說(shuō)不理想,如果將其調整為0,那麼就表示是100%,當然是不可能到達100%,如果到達100%表示內存耗盡,如果內存耗盡對系統來(lái)將會(huì )達到另外一種狀態(tài)--內存溢出(內存耗盡)

 

內存溢出/內存耗盡

在linux內核一定要有預警性的,在內存耗盡之前會(huì )將相當消耗內存的進(jìn)程kill掉,一般而言linux內核會(huì )觀(guān)測每個(gè)系統進(jìn)程,為每個(gè)進(jìn)程做標記,如發(fā)現相當占用內存的進(jìn)程會(huì )將其結束,如果我們服務(wù)上運行類(lèi)似於varnish的內存緩存服務(wù)的話(huà),那麼毫無(wú)疑問(wèn)將結束的則是這個(gè)進(jìn)程

 

所以我們要手動(dòng)調整其對應的級別的,不讓其內核對服務(wù)進(jìn)行幹擾

涉及參數文件:/proc/sysrq-trigger

調整內存相關(guān)屬性:

echo f > /proc/sysrq-trigger

f表示 手動(dòng)調整oom-kill 會(huì )手動(dòng)啟動(dòng)oom-kill 會(huì )kill掉占內存級別最高的進(jìn)程,當讓一旦資源耗盡其也會(huì )自動(dòng)啟動(dòng)kill的

手動(dòng)指定服務(wù)級別:

echo n > /proc/pid/comm_adj

用2的N次方來(lái)估值

 

禁止oom-kill

修改內核參數 :vm.panic_on_oom = 1

意味著(zhù)當系統資源耗盡的時(shí)候使系統資源崩潰

 

關(guān)注的文件:

 /proc/進(jìn)程的pid /oom_score

 

需要修改的文件

#調整指數,如果不期望使某個(gè)進(jìn)程級別過(guò)高,盡可能降低此值,就不會(huì )被kill

 /proc/進(jìn)程的pid/comm_adj 

 

手動(dòng)啟動(dòng)oom-kill

echo f > /proc/sysrq-trigger

 

禁用oom-kill

vm.panic_on_oom = 1

只要有交換內存可用,在交換內存中仍然有些交換內存可用,而且物理內存都是活動(dòng)頁(yè)的時(shí)候就不會(huì )發(fā)生oom 所以有些時(shí)候交換內存還是有用的,只要物理內存沒(méi)有達到所有頁(yè)面都為活動(dòng)狀態(tài),那麼交換內存在這種場(chǎng)景下還是可以起到一定額外緊急狀態(tài)時(shí)的功能,所以交換內存也是必要的

 

交換內存如何設定 本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

以下是IBM給出的建議,應在服務(wù)器上設置多大的交換內存設定,望各位參考:

在執行批處理服務(wù)器計算的服務(wù)器上,尤其做科學(xué)計算的服務(wù)器上,要使用 4 x RAM 都不算過(guò)分,當然RAM也就達到64G以上,那麼確實(shí)有些過(guò)分了,因需而調,一般來(lái)講小於4G; 

如果是數據庫服務(wù)器,不管物理內存多大,那麼交換內存要小於1G

   以mysql為例,在系統上運行的時(shí)候,mysql為了提高性能大多數數據都使用在內存當中,因為mysql需要大量的數據查詢(xún)排序,尤其在查詢(xún)排序的時(shí)候需要大量?jì)却娌僮鞯?,如果放在交換內存中的話(huà)其性能一定嚴重下降的,或者下降到不可接受的地步; 本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

   所以,數據庫服務(wù)器盡可能做到以下兩點(diǎn):

   1.盡可能不用交換內存

   2.讓交換內存的空間足夠小

應用服務(wù)器,比如apache、tomcat之類(lèi)的服務(wù)器0.5 X RAM,物理內存的一半即可,如果物理內存一共有64g 那麼它的交換內存也不小,所以當內存大於4G的時(shí)候 我們需要規劃一個(gè)指導線(xiàn),如果物理內存大於4G的話(huà)還是依然被耗盡,那麼依然需要加物理內存,因為交換內存是沒(méi)有意義的,在這種情況下物理內存大於4G或者16G的話(huà),一般交換內存分配4G左右即可;

 

不得不使用交換內存的建議

如果不得不使用交換內存,將交換內存放在越靠外的磁道上效果越好,那意味著(zhù)將其放在最靠外的分區上

如果我們有多塊硬盤(pán)而且沒(méi)有做RAID的話(huà),那麼可以將每個(gè)硬盤(pán)最外面的分取都用於實(shí)現交換內存,假如有4塊硬盤(pán),那麼將每個(gè)硬盤(pán)的最外道拿出1G來(lái)做交換內存

linux內核在使用硬盤(pán)的交換分區的時(shí)候有一特性:可以將交換分區定義優(yōu)先級,我們可以讓這4個(gè)的優(yōu)先級一樣,意味著(zhù)內核以負載均衡的方式均分對交換內存的使用(負載均衡)這樣就可以大大提高交換內存的使用

/dev/sda1  swap        swap   pri=5   0 0

/dev/sdb1  swap        swap   pri=5  0 0

/dev/sdc1  swap          swap   pri=5  0 0

/swaps/swapfile1         swap   pri=1   0 0  #當以上的空間全用光了再向此文件中存放數據 

當然,以上是在沒(méi)有做RAID的情景下,如果有RAID0 或RAID5的話(huà)則更好 

   

手動(dòng)配置大頁(yè)面(Hugetable Page)

[root@node3 ~]# sysctl -a | grep hugepage
vm.nr_hugepages = 0                   #
使用多少自定義即可
vm.nr_hugepages_mempolicy = 0
vm.hugepages_treat_as_movable = 0
vm.nr_overcommit_hugepages = 0

我們可以手動(dòng)定義將其當做共享空間來(lái)掛載,直接掛載到某個(gè)目錄,而後創(chuàng )建文件快速刪除很有用,有時(shí)候我們寫(xiě)腳本的時(shí)候可能會(huì )生成很多臨時(shí)文件,如果我們將臨時(shí)文件都放在這樣的內存中,效果會(huì )更好

所以這時(shí)我們可以定義幾個(gè)透明大頁(yè),將這些透明大頁(yè)定義成共享內存空間並掛載

hugetable page主要是提高TLB性能,這樣頁(yè)表項就會(huì )變小,所以能提高TLB的性能

配置hugetable page

x86info ?a | grep 'Data TLB'

dmesg

cat /proc/meminfo

更改大頁(yè)

vim /etc/sysctl.conf

將值自定義更改:

vm.nr_hugepages = n

#hugepages = n

掛載

mkdir /hugepages

mount ?t hugetlbfs none hugepages

通過(guò)掛砸可以將其當做內存磁盤(pán)來(lái)使用了,當然平時(shí)的時(shí)候不需要自己指定,如果不是自己想寫(xiě)腳本並創(chuàng )建臨時(shí)文件的話(huà)是不需要掛載它的,只要啟動(dòng)透明大頁(yè),而後在mysql服務(wù)器上將服務(wù)器變量當做定義使用透明大頁(yè),它會(huì )自動(dòng)使用

所以tlbfs只有在必要的時(shí)候,或想自己手動(dòng)指定在某個(gè)位置使用內存磁盤(pán)的時(shí)候才有必要去定義的

定義透明大頁(yè)的個(gè)數:

[root@node3 ~]# cd /proc/sys/vm/
[root@node3 vm]# cat nr_hugepages

0

將其值改為理想的數值即可,或者在grub中為內核啟動(dòng)的時(shí)候定義內核參數

 

觀(guān)察內存的使用情況

比如觀(guān)察內存有多少被交換出去或有多少被交換進(jìn)來(lái),page頁(yè)面有多少被分配出去或有多少寫(xiě)入到磁盤(pán)中等

涉及命令:

vmstat -n 1 2

sar -r  1 2

1表示采樣時(shí)間間隔

2表示采樣時(shí)間次數

 

使用vmstat -n觀(guān)察內存活動(dòng)信息

 [root@node3 ~]#vmstat -n 1 2

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 1216352  10392 225308    0   0     0     1   3    5  0  0100  0 0 

 0  0     0 1216344  10392 225264    0   0     0     0 170  308  0  0100  0 0 

 

參數解釋?zhuān)?/span>

swap : 虛擬內存的使用情況,當然我們這裏沒(méi)用

    si: 從磁盤(pán)中讀進(jìn)來(lái)的swap數據量

    so: 寫(xiě)到swap中的數據量

 

free:空閑內存量

    buffer:用於buffer空間
    cache:如上

 

另外還有兩個(gè)沒(méi)有顯示需要使用-a參數查看

inact: 非活動(dòng)內存 意為已有一段時(shí)間沒(méi)有被程序所使用了

但是inact非活動(dòng)該內存有兩類(lèi):

  幹凈頁(yè):  指的是沒(méi)有被修改的,可以將其回收,直接清理即可

  臟頁(yè)  :  指的是必須將其同步到磁盤(pán)上才可以回收資源

active :活動(dòng)內存 意為正在被程序所使用的

 

如果我們發(fā)現大量的si so 意味著(zhù)交換內存以及被使用了,而且有大量的換進(jìn)換出,意味著(zhù)物理內存不夠用,那麼提高性能的方法無(wú)非就是加大物理內存;

但是需要注意的是當觀(guān)測一個(gè)值的時(shí)候,有可能會(huì )有一些比較獨特的情況,比如CPU使用率100%並不意味著(zhù)CPU慢,因為CPU可能花費很長(cháng)時(shí)間去等待IO完成,也就是說(shuō)去進(jìn)行swap in/out  所以很多時(shí)候看上去CPU利用率高,但是最後發(fā)現是I/O的問(wèn)題,完全是有可能的

如果出現這種I/O,由於是swap產(chǎn)生的io,意味著(zhù)內存不夠用,所以要做綜合評判

 

使用sar -r 進(jìn)行觀(guān)測

[root@node3 ~]# sar -r 1

Linux 2.6.32-431.20.3.el6.x86_64 (node3.test.com) 09/14/2014    _x86_64_(4 CPU)

 

04:06:29 PM kbmemfreekbmemused  %memused kbbuffers  kbcached  kbcommit  %commit

04:06:30 PM   1216344   705768     36.72     10408   225348   1091764     27.16

04:06:31 PM  1216336    705776     36.72    10408    225348   1091764    27.16

04:06:32 PM  1216336    705776     36.72    10408    225348   1091764    27.16

04:06:33 PM  1216336    705776     36.72    10408    225348   1091764    27.16

04:06:34 PM  1216336    705776     36.72    10408    225348   1091764    27.16

04:06:35 PM  1216336    705776     36.72    10408    225348   1091764    27.16

04:06:36 PM  1216336    705776     36.72    10408    225348   1091764    27.16

需要關(guān)注前四個(gè)參數的值的變化

參數解釋?zhuān)?/span>

kbmemfree:  以kb為單位顯示內存的空閑空間

kbmemused: 以kb為單位顯示內褲空間的使用

memused :  內存使用百分比

kbbuffers:  略 

kbcached : 略

kbcommit  :內存的提交

需要關(guān)注的是前四個(gè)值,如果數據量變化非常頻繁的話(huà),則表明內存被頻繁的使用/釋放;

如果釋放回收的比例過(guò)高,而free空間過(guò)小 use的空間過(guò)大,而且變化過(guò)於頻繁的時(shí)候,那麼很可能是內存活動(dòng)劇烈導致的,有可能是像varnish之類(lèi)的服務(wù)由於頻繁的內存釋放回收等實(shí)現緩存對象創(chuàng )建和清除的活動(dòng)帶來(lái)的,只要對比沒(méi)有到100% 就可以任由他去 ,但是注意實(shí)時(shí)監控

 

使用sar -R 觀(guān)測內存其活動(dòng)速率 本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

[root@node3 ~]# sar -R 1

Linux 2.6.32-431.20.3.el6.x86_64 (node3.test.com) 09/14/2014    _x86_64_(4 CPU)

 

04:08:42 PM   frmpg/s   bufpg/s  campg/s

04:08:43 PM   -33.00      0.00      0.00

04:08:44 PM     0.00      0.00      0.00

04:08:45 PM     0.00      0.00      0.00

04:08:46 PM     0.00      0.00      0.00

frmpg/s : 每秒釋放了多少個(gè)內存頁(yè),如果我們想要知道多大內存需要將這個(gè)數值乘以4

bufpg/s : 每秒被用於哪來(lái)實(shí)現buffer的頁(yè)面個(gè)數

campg/s : 如上,每秒被用於哪來(lái)實(shí)現cache的頁(yè)面個(gè)數

bufpg+campg-frmpg = 真正釋放的個(gè)數

如果一直是負值,那麼內存空間肯定是一直有限的,總有一定時(shí)間總會(huì )被耗盡,所以一直為負值就意味著(zhù)可能會(huì )內存泄露了

這個(gè)觀(guān)測值還可以長(cháng)時(shí)間評判出內存是否有泄露情況發(fā)生,釋放和分配的值大致可以相同

 

使用sar -W查看交換內存使用情況

[root@node3 ~]# sar -W
Linux 2.6.32-431.20.3.el6.x86_64 (node3.test.com)     09/13/2014      _x86_64_     (4 CPU)

12:00:01 AM  pswpin/s pswpout/s
12:10:01 AM      0.00     0.00
12:20:01 AM      0.00     0.00
12:30:01 AM      0.00     0.00

由於沒(méi)跑任何服務(wù)所以這裏為0,如果有頻繁的pswpin 和pswpout 就意味著(zhù)我們的物理內存太小了

交換內存用了沒(méi)有關(guān)系,但是變化量很小但是使用空間很大也沒(méi)有問(wèn)題

如果變化值很高,通常會(huì )有問(wèn)題需要我們關(guān)注了

 

使用sar -B查看I/O使用情況

[root@node3 ~]# sar -B

Linux 2.6.32-431.20.3.el6.x86_64 (node3.test.com) 09/14/2014    _x86_64_(4 CPU)

 

12:00:01 AM pgpgin/s pgpgout/s   fault/s  majflt/s pgfree/s pgscank/s pgscand/s pgsteal/s   %vmeff

12:10:01 AM     0.00      1.45     11.83     0.00      4.00      0.00     0.00      0.00      0.00

12:20:01 AM     0.00      0.82    147.74     0.00    176.60      0.00     0.00      0.00      0.00

12:30:01 AM     0.00      2.18      4.40     0.00      1.66      0.00     0.00      0.00      0.00

12:40:01 AM     0.00      1.30      3.31     0.00      1.53      0.00     0.00      0.00      0.00

12:50:01 AM     0.00      0.77    146.06     0.00    174.63      0.00     0.00      0.00     0.00

01:00:01 AM     0.01      2.14      5.73     0.00      1.80      0.00     0.00      0.00      0.00

pgpgin :   每秒頁(yè)面載入個(gè)數

pgpgout:   頁(yè)面寫(xiě)出個(gè)數,以頁(yè)為單位直接與內核內存交互的,而內核內存最終是與I/O交互

#一通不同到磁盤(pán)中通常都是臟頁(yè),需要pgpgin一般需要用到buffer/cache

fault  :   每秒出現的異常個(gè)數

majflt :   大異常的個(gè)數

 

#以下參數不需要被關(guān)心

pgfree :每秒鐘有多少個(gè)頁(yè)被放到空閑列表中去,說(shuō)明被回收回來(lái)的頁(yè)面個(gè)數

pgscank:每秒被kswap所掃描的頁(yè)面個(gè)數

pgscand:直接被內核掃描的頁(yè)面個(gè)數

 

以上是跟真正I/O相關(guān)的參數(跟硬盤(pán)交互的時(shí)候數據載入內核內存並載入到進(jìn)程內存中,或從臟頁(yè)中寫(xiě)入到磁盤(pán)中的數據

 

題外:使用dstat觀(guān)察內存狀況

dstat是非常好用的工具,能客觀(guān)明了的顯示出內存當前使用情況,個(gè)人比較喜歡用,這裏略過(guò)

[root@node3 ~]# dstat -g -m -s

---paging-- ------memory-usage----- ----swap---

  in   out | used buff  cach  free| used free

   0     0 | 496M 10.4M  220M 1151M|  0  2048M

   0     0 | 496M 10.4M  220M 1151M|  0  2048M

   0     0 | 496M 10.4M  220M 1151M|  0  2048M

   0     0 | 496M 10.4M  220M 1151M|  0  2048M

   0     0 | 496M 10.4M  220M 1151M|  0  2048M

 本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

調整內核參數

容量調節

比如我們內存空間一共只有1G的容量,而是否能讓內存使用大於1G,大於物理內存則意味著(zhù)要使用交換內存進(jìn)行存儲數據,也就意味著(zhù)只要允許過(guò)量那就必然會(huì )使用交換內存

如果確確實(shí)實(shí)不能加物理內存不得不使用交換內存的時(shí)候,尤其是在批量處理的環(huán)境上,比如hadoop,其不提供實(shí)時(shí)處理的,所以批量提交處理作業(yè),和提交作業(yè)的輸出中間可能有一段時(shí)間間隔,這種情況下是允許可以過(guò)量使用內存的

涉及參數文件:

/proc/sys/vm/overcommit_memory

/proc/sys/vm/overcommit_ratio

/proc/sys/vm/max_map_count

  本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

overcommit_memory

[root@node3 ~]# cat /proc/sys/vm/overcommit_memory

0

相關(guān)參數:

0 :默認設置,是否允許過(guò)量,由內核決定是否可以過(guò)量而且允許過(guò)量多少

1 :允許使用交換內存,但是不明確使用大小,有可能會(huì )導致崩潰的

2 :允許使用交換內存,但是過(guò)量多少是需要手動(dòng)定義的

   本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

如果設定為2,那麼可用總的內存大小是:所有的交換內存空間 + 物理內存空間的一部分

使用多少物理內存是由overcommit_ratio進(jìn)行定義的內存比例,用這個(gè)比例乘以物理內存的大小再加上交換內存的大小就是所有可用的內存空間

 

overcommit_ratio

    假如這個(gè)ratio 為0.5的話(huà),swap為4G 那麼最大可用內存空間為6G

    如果overcommit_ratio的值為0的話(huà),那就意味著(zhù)所有可用大小是交換內存的全部+物理內存x0% 最終還是4G  本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

 

很顯然,如果交換內存是4G 物理內存也是4G 又通過(guò)這種方式定義最多只能使用4G,那就意味著(zhù)交換內存可能會(huì )用到 本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

如果將swapiness的參數設置為0,那麼意味著(zhù)盡量不使用交換內存,而我們這裏又明確說(shuō)明內存總共可用空間只有4G,因為我們設置overcommit_ratio為0 而overcommit_memory的值為2,那毫無(wú)疑問(wèn)肯定總共大小為4G,那就意味著(zhù)我們交換內存可能會(huì )派不上用場(chǎng),這就起到類(lèi)似禁用交換內存的效果

 本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥! 本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

有些場(chǎng)景下,如果我們期望盡可能不使用交換內存可用使用這種方式

swapiness = 0

overcommit_memory = 2

overcommit_ratio = 0

這是一個(gè)非常常見(jiàn)的內存內核優(yōu)化機制

 本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

 

進(jìn)程間通信內存性能調節 

涉及參數配置文件路徑:/proc/sys/kernel/

msgmax

    進(jìn)程間通信如果基於消息間通信的話(huà)有可能一個(gè)進(jìn)程與N個(gè)進(jìn)程交互

    如果各worker發(fā)現其處理速度很快的話(huà),而master處理速度很慢,那同樣的速率下一個(gè)進(jìn)程只能處理有限的幾個(gè),那麼則有很多會(huì )處於等待狀態(tài)(將其放在隊列中)

    所以其參數的意思為:以字節為單位,用來(lái)定義單個(gè)消息大小的,默認值為65536

msgmnb

  以字節為單位,指定消息隊列的大小,單個(gè)消息上限

msgmni

  是否允許多少隊列個(gè)數

 

假如一個(gè)隊列為10k,那我們有10個(gè)隊列,10個(gè)隊列加一起則為100k也就是說(shuō)一共允許使用多少個(gè)消息隊列,而每個(gè)隊列有多大,而每個(gè)隊列中的消息有多大,都是通過(guò)以上三個(gè)參數進(jìn)行定義的

如果某個(gè)進(jìn)程通信量的確很大,而且單個(gè)消息量也大,那我們可以將單個(gè)隊列長(cháng)度進(jìn)行調整,將單個(gè)消息的上限調整;如果消息量也很大,則可以增加隊列數

前提是進(jìn)程間通信是根據消息通信的,如果不是則進(jìn)入第二種方法:

  本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

 

以共享內存作為通信方式

涉及參數配置文件路徑:/proc/sys/kernel/

shmmni

   可用於共享內存的最大內存大小,指的是片段,因為共享內存不一定是連續的,所以指的是用於共享內存的內存段的個(gè)數,默認值為4096

   有些服務(wù),比如oracle,oracle內部有許多子進(jìn)程這些進(jìn)程各自負責不同的任務(wù),而彼此之間通信都是基於共享內存所實(shí)現的,所以通常需要調整其值

shmmax

    可允許最大共享內存片段(單個(gè)內存片段大小上限),64位系統默認值為68719476736,在紅帽6.x 64位系統則不用調整了

shmall

    單次在系統中可以使用的共享內存量,某一次申請共享內存,最多可申請多少個(gè)

    比如:一個(gè)片最大10k,一共4096片,我們規定一次只能使用20k,那麼意味著(zhù)我們最多可以使用2片;那麼如果我們定義單片最大上限為20k,那麼意味著(zhù)一次只能申請一片。

     在紅帽6.4,如果內存夠多通常是不用調整的

threads-max   本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

   最大線(xiàn)程,規定內核使用的最大線(xiàn)程數

  threads-max最小為20 

計算最大值:

  max_threads = mempages / (8 * /THREAD_SIZE / PAGE_SIZE )

  如果多個(gè)進(jìn)程大小值通常很難平均的時(shí)候,這個(gè)值可能會(huì )用的到

 

與容量相關(guān)的文件系統可調整參數 

主要關(guān)心的參數:

file-max 

設置最大的文件描述符

echo '*    -      nofile     65535 ' >>/etc/security/limits.conf

#nofile 表示所能打開(kāi)的最大的文件數

 

min_free_kbytes

最小空閑的內存空間,我們的物理空間不能全部分配出去,必須要預留一部分供內核所使用、分配,設置這個(gè)數值務(wù)必要小心,因為過(guò)高或過(guò)低都有風(fēng)險的,多數情況下如果不清楚可以不調

 

dirty_ratio

當物理內存中臟頁(yè)比例超出一定比值的時(shí)候一定會(huì )使用pdflush定期刷寫(xiě)到硬盤(pán)上去,但是如果變化量非???,如果不到一秒鐘就會(huì )有很多,那麼用定時(shí)刷寫(xiě)則效率會(huì )比較低

通常將臟頁(yè)刷寫(xiě)到硬盤(pán)通常有兩個(gè)策略

    按照時(shí)間,固定周期 本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

    按照刷寫(xiě)的內容,達到一定比例,到達一定比值的時(shí)候

時(shí)間間隔越小就意味著(zhù)刷鞋頻率越高,頻率越高就意味著(zhù)數據在內存中可能丟失的越小,但是IO活動(dòng)量就越大,所以很多時(shí)候取得一個(gè)理想值是很關(guān)鍵的

 

比如:如果有時(shí)候3秒鐘的數據丟失,就意味著(zhù)數據量可以在內存中存儲3秒以上,意味著(zhù)3秒刷寫(xiě)一次,那麼IO量會(huì )降低,IO是性能的瓶頸所在

dirty_ratio默認值為20,當臟頁(yè)比例所占據的總內存空間所達到了總內存空間的百分之二十之後則自動(dòng)刷寫(xiě)到硬盤(pán)中

如果認為這個(gè)值比較低,可以將其調高,可以降低刷寫(xiě)次數,提高性能表現,但是可能會(huì )丟失數據,具體調整多少值需要自己去衡量

在對於數據要求非常高的場(chǎng)景中,比如數據庫,這個(gè)值不可以調高;但是對於varnish這種內存緩存服務(wù)器來(lái)講,緩存的數據丟失也沒(méi)有關(guān)系,這樣的話(huà)可以調高,但是緩存是不能夠寫(xiě)數據的,或者說(shuō)在內存中存儲緩存是不可能刷寫(xiě)的硬盤(pán)上去的,但是有的時(shí)候需要的,比如用磁盤(pán)進(jìn)行緩存數據,這時(shí)候可以極大的調整此值;

 

dirty_background_ratio

與上面不同,此值定義全局百分比 本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

 

dirty_background_ratio和dirty_ratio的區別:

dirty_ratio是由當某個(gè)進(jìn)程自己所使用的內存數據的臟頁(yè)將達到總體內存的百分比,於是進(jìn)程自動(dòng)向內核申請激活pdflush 由pdflush將進(jìn)程的臟頁(yè)同步至磁盤(pán)(與單進(jìn)程相關(guān))

dirty_background_ratio: 如果某個(gè)進(jìn)程使用比例都是5% 但是所有進(jìn)程所占的比例加一起都有可能超過(guò)某一數值,所以所有數值加一起達到這個(gè)比例的時(shí)候則由內核啟動(dòng)pdflush,當某個(gè)進(jìn)程自己的比例達到dirty_ratio的比例的時(shí)候,進(jìn)程將自己向內核申請執行pdflush

以上是常調的兩個(gè)參數

那麼啟動(dòng)多少個(gè)pdflush線(xiàn)程比較合適:

一般默認而言,一個(gè)硬盤(pán)一個(gè)pfflush即可,多了反而會(huì )起到反作用

 

總結:對我們而言最常要調的有三組

1.swapinice overcommit

2.msgmax msgmin mnb

3.pdflush

而在有些特殊場(chǎng)景下,比如database 單進(jìn)程大量使用的場(chǎng)景下,需要自己手動(dòng)定義大頁(yè)的,這樣能夠顯著(zhù)降低數據庫的頁(yè)表條目,以及提高tlb命中率的

 

以上,為linux內存調優(yōu)的學(xué)習筆記,感謝各位

 

  本文來(lái)自 http://go.rritw.com/yijiu.blog.51cto.com/ 轉載請與博主聯(lián)系,翻版可恥!

 

本文出自 “心情依舊” 博客,轉載請與作者聯(lián)系!


From:51CTO
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Linux服務(wù)器Cache占用過(guò)多內存導致系統內存不足問(wèn)題的排查解決
oom killer
Linux hugepages
linux free命令中buffer與cache的區別
美創(chuàng )運維日記|我的內存都去哪里了?
手動(dòng)釋放linux內存cache
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久