關於AIX上VMO調整參數的若干說明

                                                  關於AIX上VMO調整參數的若干說明web

最近,關於AIX機器上虛擬內存參數調整的問題出現了好幾回,也調過好幾臺機器的參數,現結合網上的文檔,算法

把這部分知識理一理,作一下記錄。數據庫

1.在AIX系統中,內存能夠簡單的分爲兩類,計算型內存和文件型內存,
在AIX操做系統中,可使用topas命令查看整個系統的運行狀況,其中一個重要的部份是系統的內存使用狀況,緩存

以及交換狀況:安全

MEMORY
Real,MB   16032
% Comp     83.2
% Noncomp   9.9
% Client    9.9服務器

PAGING SPACE
Size,MB   16384
% Used      3.3
% Free     96.6oracle

在一個使用裸設備的系統中,文件型內存,即上面的%Noncomp,%Client,只須要使用整個系統不多的內存;而app

把大部份的內存做爲計算型內存(%Comp)來使用,這部分內存量主要爲ORACLE SGA和PGA所用,其中ORACLE SGA 爲ide

pinned memory.性能

根據系統內存大小,設定系統能夠pin住的最大值:

     maxpin% = 80   --此值能夠升高

     v_pinshm = 1   --容許pin住內存

     接下來是三個控制文件型內存的參數的值:

     maxclient% = 10 --文件型內存可以使用內存總的百分比的最大值,<=maxperm%

     maxperm% = 10    --文件型內存可以使用內存總的百分比的最大值

     minperm% = 5     --文件型內存可以使用內存總的百分比的最小值

這三個參數,能夠根據內存總量大小,進行適度調節。計算型內存與文件型內存,在實際的應用中,須要遵循

如下一些原則(前3條是參考別人的):

     1.使用的文件型內存百分比 + 使用的計算型內存百分比 < 100%

     2.計算型內存中的pinned memory設置要合理,即sga大小要設置合理,要留一部份給OS,OS也須要pinned

memory.當系統資源緊張時,OS的pinned memory具備最高的優先級.

     3.保證系統非pinned 計算型 memory有一個合理的成長空間,這部份主要是給ORACLE PGA使用,當鏈接數

增加過快時,此內存的使用增加也至關的明顯,而此增加頗有可能會致使操做系統的交換。

     當系統的使用的文件型內存百分比 + 使用的計算型內存百分比 >= 100%,系統便開始產生交換,系統的

PAGING SPACE會持續的增加,影響到產品庫的安全。

     4.通常的數據庫服務器,文件型內存可使用較少的空間,由於文件型內存並不主動釋放,可能形成內存

資源的短缺及Paging Space使用率太高,因此數據庫服務器上maxclient、maxperm、minperm的值不宜過大,典

型值以下:

     maxclient% = 8   

     maxperm% = 12  

     minperm% = 5   

如何更改這三個參數呢, 在AIX5.3上,可使用 vmo 命令,此命令設置或顯示全部虛擬內存管理器調整參數

的當前值或下一個引導值。還能夠用此命令進行永久性更改,或將更改推遲到下一次從新引導以後生效。此命令

是設置參數仍是顯示參數,要由所帶標誌來決定。帶 -o 標誌的話,兩個操做都執行。它既能夠顯示參數的值,

也能夠爲參數設置新值。

若是在修改這些參數前,想查看這些參數的值,則能夠用下面的命令:

vmo -L 或者 vmstat -v 或者vmo -a

調整:vmo -p -o maxclent%=8

     vmo -p -o maxperm%=12

     vmo -p -o minperm%=5

利用-p參數,是當即生效的,不須要重啓,下次重啓仍然有效。

若是是-r參數,是不當即生效的,重啓生效,turns on the updating of the
/etc/tunables/nextboot file.重啓生效的參數記錄在 /etc/tunables/nextboot。


由於參數maxperm充當的是軟限制,因此文件型內存的佔用率仍然能夠超過maxperm的設定值,若是須要進行強制

限制,則須要將參數strict_maxperm的值設爲1,該參數的缺省值是0,但此方法須要謹慎使用。

備註:也許有人不是很熟悉vmo,反而熟悉vmtune,其實他們是同樣的

AIX 5.3之前,查看參數值 vmtune -a

            修改minperm和maxperm的值爲5%和20%,vmtune -p 5 -P 20

            若是是64位內核,vmtune64 -p 5 -P 20

AIX 5.3:    vmo -p -o maxperm%=20

            vmo -p -o minperm%=5

 


------------------------------------------------------------
=-==========================================================

AIX 5.3主機性能評估-Memory性能評估
發佈: 2009-8-07 14:03 | 做者: webmaster | 來源: BBS整理 | 查看: 39次

  1.4.1VMM的管理簡介
  首先,仍是簡單講解一下內存以及的VMM的一點工做原理。
  內存和交換空間通常都是用頁面來進行分配和管理的。在內存中存在兩種類型的頁面:計算頁面(通常爲可執行文件段中的頁面)和文件頁面(存儲的數據文件的頁面)。當咱們執行程序或者讀入數據的時候,內存中的頁面就逐漸被佔用。當空閒的內存只剩maxfree的時候,vmm的調頁就被喚醒,經過調頁算法,將內存中的頁面轉移到交換空間中。一直到空閒內存達到maxfree,才中止調頁。
  在這裏,咱們涉及到兩個參數:
  1)Minfree:最小空閒頁鏈表尺寸。一旦低於該值,系統偷頁以填充頁鏈表,保證有足夠的內存頁面。偷頁就是將不經常使用的頁面替換出去。
  2)Maxfree:最大空閒頁鏈表尺寸。一旦高於該值,系統中止偷頁。

  若是發現空閒列表不足,能夠用下面的方法增長minfree參數
  #vmo -o minfree=1000 -o maxfree=1008
  Setting maxfree to 1008
  Setting minfree to 1000
  #vmo –o minfree=1000 –o maxfree=1008 –P  # -P參數使修改永久生效
  通常狀況下,minfree和maxfree經過下面的公式獲得:
  maxfree=minmum(memory/128,128) ,minfree=maxfree-8
  注意:在AIX 5.2以前的版本請使用/usr/samples/kernel/vmtune命令。
  #/usr/samples/kernel/vmtune –f 1000 –F 1008
  
  另外,關於內存的使用,咱們還有兩個常常碰到的參數須要關注:
  Minperm:用戶I/O文件訪問的最小緩衝區頁數
  Maxperm:用戶I/O文件訪問的最大緩衝區頁數
  Minperm和maxperm這兩個參數的默認值分別爲20%和80%。在這裏主要與性能相關的是maxperm參數。maxperm參數指定了文件頁面能夠佔用內存的上限,由於文件頁面不主動釋放,因此很容易形成內存的文件頁面太高的佔用,致使其餘的應用內存使用緊張。調整參數值的方法以下:
  #vmo -o maxperm%=80 -o minperm%=20
  Setting minperm% to 20
  Setting maxperm% to 80
  在AIX 5.2以前的版本請使用/usr/samples/kernel/vmtune命令。
  #/usr/samples/kernel/vmtune -p 20–P 80 將min和max的值分別設置爲20%和80%。
  
  查看當前的參數設置方法以下:
  1)vmo –a 顯示當前全部的參數設置
  在AIX 5.2以前的版本請使用 # /usr/samples/kernel/vmtune 顯示當前全部的參數設置
     #vmo -a
          cpu_scale_memp = 8
   data_stagger_interval = 161
                   defps = 1
     force_relalias_lite = 0
               framesets = 2
               htabscale = n/a
       kernel_heap_psize = 4096
    large_page_heap_size = 0
            lgpg_regions = 0
               lgpg_size = 0
         low_ps_handling = 1
         lru_file_repage = 1
       lru_poll_interval = 10
               lrubucket = 131072
              maxclient% = 80
                
  maxfree = 1088
                 maxperm = 4587812
                maxperm% = 80
                  maxpin = 4881650
                 maxpin% = 80
         mbuf_heap_psize = 4096
         memory_affinity = 1
           memory_frames = 6029312
           memplace_data = 2
    memplace_mapped_file = 2
  memplace_shm_anonymous = 2
      memplace_shm_named = 2
          memplace_stack = 2
           memplace_text = 2
  memplace_unmapped_file = 2
                mempools = 4
  
                 minfree = 960
                 minperm = 1146952
                minperm% = 20
               nokilluid = 0
                 npskill = 49152
               npsrpgmax = 393216
               npsrpgmin = 294912
             npsscrubmax = 393216
             npsscrubmin = 294912
                 npswarn = 196608
        num_spec_dataseg = 0
               numpsblks = 6291456
       page_steal_method = 0
            pagecoloring = n/a
         pinnable_frames = 5601758
   pta_balance_threshold = n/a
     relalias_percentage = 0
                rpgclean = 0
              rpgcontrol = 2
                   scrub = 0
              scrubclean = 0
   soft_min_lgpgs_vmpool = 0
        spec_dataseg_int = 512
        strict_maxclient = 1
          strict_maxperm = 0
                v_pinshm = 0
    vm_modlist_threshold = -1
        vmm_fork_policy = 1
      vmm_mpsize_support = 1
  2)vmstat -v
  # vmstat -v
                6029312 memory pages
                5734766 lruable pages
                2801540 free pages
                      4 memory pools
                 406918 pinned pages
                   80.0 maxpin percentage
                   20.0 minperm percentage
                   80.0 maxperm percentage
                    2.3 numperm percentage

                 135417 file pages
                    0.0 compressed percentage
                      0 compressed pages
                    0.0 numclient percentage
                   80.0 maxclient percentage
                      0 client pages
                      0 remote pageouts scheduled
                 312417 pending disk I/Os blocked with no pbuf
                      0 paging space I/Os blocked with no psbuf
                   2878 filesystem I/Os blocked with no fsbuf
                      0 client filesystem I/Os blocked with no fsbuf
                      0 external pager filesystem I/Os blocked with no fsbuf
  顯示minperm和maxperm和numperm的值。numperm值給出的是內存中文件頁數。
  系統調頁的規則:
  1)        若是numperm>maxperm,則只調出文件頁面。
  2)        若是numperm<minperm,則同時調出文件頁面和計算頁面。
  3)        若是minperm<numperm<maxperm,則只調出文件頁面,除非新調入的文件頁面大於計算頁面的總和。
      若是系統在向調頁空間調出頁面,可能使由於內存中的文件頁數低於maxperm,從而也調出了部分的計算頁面以達到maxfree的要求。在這種狀況下,能夠考慮把maxperm下降到低於numperm的某個值,從而阻止計算頁面的調出。在5.2 ML4之後的版本中,爲了防止計算頁面被調出,能夠採用另一個方法,就是設置參數lru_file_repage=0。將該參數設爲0,則告訴vmm在進行頁面替換的時候,優先替換文件頁面。
      maxclient一般應該設置爲一個小於或者等於maxperm的值。
      加強JFS文件系統爲它的緩衝區高速緩存使用客戶機文件,這不受maxperm和minperm的影響。爲了在限制加強JFS文件系統使用高速緩存,能夠指定maxclient的值,避免在它進行頁面替換的時候,替換其餘類型的頁。
  www.ixdba.net

        1.4.2    使用vmstat肯定內存的使用狀況      主要檢查vmstat輸出的 memory和pages列和faults列。詳細的說明見前一節cpu評估說明。       1.4.3    svmon命令  # svmon -G -i 2 2                 size      inuse       free        pin    virtual  memory      2097136     236845    1860291     152150     194943  pg space    1048576        960                    work       pers       clnt      lpage  pin          151904        246          0          0  in use       194960      41885          0          0                 size      inuse       free        pin    virtual  memory      2097136     236853    1860283     152150     194947  pg space    1048576        960                    work       pers       clnt      lpage  pin          151904        246          0          0  in use         194964      41889          0          0      memory段  ?         size 物理內存總頁數。4KB/頁  ?         inuse 物理內存中正在使用的內存頁面數。包含活動進程和已經終止的進程的持久文件頁面。  ?         free 空閒列表中的頁面數量  ?         pin 鎖定在內存中的頁面數量(鎖定的意思就是不能被替換出去)  ?         virtual   pg space段    ?         size 調頁空間總大小  ?         inuse 已經分配頁的總數,也就是已經使用的調頁空間頁數  pin段  ?         work 物理內存中的工做頁面數  ?         pers 物理內存中的持久頁面數  ?         clnt 物理內存中的客戶機頁面數(客戶機頁面就是一個遠程文件頁面)  inuse段  ?         work 物理內存中的工做頁面數  ?         pers 物理內存中的持久頁面數  ?         clnt 物理內存中的客戶機頁面數(客戶機頁面就是一個遠程文件頁面)        三、ps命令顯示當前運行的進程狀態信息。  運行下列命令,顯示內存佔用前10位的進程。  # ps gv |sort +6b -nr |head -10   2490538      - A    191:56    0 11840 32748    xx 45762 20924  0.1  0.0 ora_j00   2039970      - A    592:59   11 11728 32648    xx 45762 20924  0.3  0.0 ora_j00   2588922      - A    1118:31   22 11712 32632    xx 45762 20924  0.6  0.0 ora_j0   2523168      - A    305:01    1 11688 32608    xx 45762 20924  0.2  0.0 ora_j00   2474214      - A     0:01    0 11588 32512    xx 45762 20924  0.1  0.0 ora_j00   2007282      - A     0:01    0 10384 31308    xx 45762 20924  0.0  0.0 ora_j00    508120      - A    32:58  662  9344 27164    xx 45762 20924  0.0  0.0 ora_dbw   1351908      - A     0:02    1  5668 26560    xx 45762 20924  0.0  0.0 oracleo   3801250      - A    203:22    0  5648 26556    xx 45762 20924  0.1  0.0 oracleo  3915976      - A     0:00    0  5664 26556    xx 45762 20924  0.0  0.0 oracleo      若是是oracle的一些進程佔用了過分的內存,咱們也能夠經過前面相似的進程處理方法來分析。     1.4.4內存的調整  具體調整須要結合系統運行的應用程序對症下藥,如調整minperm/maxperm將改變內存與PAGING SPACE之間的交換算法,調整minpgahead/maxpgahead將改變內存塊請求機制,調整minfree/maxfree將改變內存緊張時的內存清理刷新機制,等等。若是數據庫使用裸設備,而且沒有太多其餘的應用,由於裸設備不須要文件系統的緩存,因此能夠下降minperm,maxperm,maxclient的默認值,下降操做系統對內存的沒必要要的佔用。  案例:  計費數據庫數據庫響應變慢,內存16G,裸設備,卻存在不少的PI,PO狀況。    在檢查與內存相關的系統參數,發現以下問題:  minperm% = 20,  maxperm% = 80, maxclient% = 80   說明:以上三個參數爲系統缺省配置,其表示,使用文件系統時,最多可以使用80% * 16G=10.8G,用於緩存所訪問的文件。  結論:因爲以上參數採用系統缺省配置,文件系統緩存最大能夠達到10.8G,在執行大量的文件cp操做後,系統的可用內存量迅速降低,在其後的計費過程當中,因爲大量page in/page out操做引發系統嚴重性能瓶頸。  優化:  將maxperm% = 30 ,maxclient% = 30  #vmo –o maxperm%=30 –P  #vmo –o maxclient%=30 –P  5.2之前版本  /usr/samples/kernel/vmtune –p 20 –P 30   /usr/samples/kernel/vmtune –t 30

相關文章
相關標籤/搜索