略過巡覽連結首頁 > 產品與服務 > 技術分享

技術分享

[技術分享]NonStop Server系統效能技術分析(中)

作者/馬先讓
作者簡歷

作者擁有26年IT服務資歷,現職凌群電腦NSK服務總處副總工程師,主要負責HPE Nonstop 證券、期貨、銀行客戶交易系統維運服務,專長為HPE NonStop系統整合。

前言

HPE NonStop Server系統效能分析包含了很多面向,上一期文章針對DISK硬體環境設定、檔案屬性等效能分析進行說明,本期文章會針對系統效能分析MEASURE做詳細說明。

系統效能分析-MEASURE
  • MEASURE是用來分析系統效能的子系統,它能分析以下系統元件的效能


  • MEASURE針對檔案有三種Entity可分析
    • DISCOPEN:分析DISK PROCESS對檔案的每一個獨立file open的I/O行為;Measure會對每一個file open產生獨立的record。


    • DISKFILE:分析所有PROCESS對特定檔案的I/O行為。Measure會對該檔案產生一個record。


    • FILE:分析單一PROCESS對檔案的I/O行為,可分析$RECEIVE, LINKMON $ZLnn。

我們主要使用到CPU、DISC、PROCESS、DISCOPEN等四個Entity。以下介紹MEASURE操作、啟動/停止MEASURE子系統、定時/即時收集MEASURE DATA、手動/自動分析MEASURE DATA。

一、MEASURE操作
  • Online Help-HELP

    MEASCOM 線上HELP 可以看command,object 和error number的HELP。


  • ADD

    ADD支援三種object,說明如下:

    (1)ADD Entities
    如:ADD CPU *; ADD PROCESS 0,*; ADD DISC *

    (2)ADD Measure datafile
    如:ADD MEASDATA

    (3)ADD Plot
    如:ADD PLOT CPU-BUSY-TIME,可以畫出PLOT,範例
    LIST CPU *
    ADD PLOT CPU-BUSY-TIME
    LIST PLOT
    LIST PLOT, TIME-BASE OFF
    LIST PLOT, VERT-BASE OFF, TIME-BASE OFF
    以上的方式能很快速的分析出收集的MEASURE DATA,那個時間點CPU 最忙碌。


  • DELETE

    DELETE支援三種object,說明如下:

    (1)DELETE Entities
    如:DELETE DISCOPEN $*.#*

    (2)DELETE Measure datafile
    如:DELETE MEASDATA

    (3)DELETE Plot
    如:DELETE PLOT CPU-BUSY-TIME (A),可以刪除加的PLOT
    範例:DELETE PLOT CPU-BUSY-TIME (*)


  • DELETE

    DELETE支援三種object,說明如下:

    (1)DELETE Entities
    如:DELETE DISCOPEN $*.#*

    (2)DELETE Measure datafile
    如:DELETE MEASDATA

    (3)DELETE Plot
    如:DELETE PLOT CPU-BUSY-TIME (A),可以刪除加的PLOT
    範例:DELETE PLOT CPU-BUSY-TIME (*)


  • INFO

    INFO支援四種object,說明如下:

    (1)INFO Entities
    如:ADD CPU *後再用INFO CPU * 看是否有加入

    (2)INFO User-defined counters

    (3)INFO Measure datafile
    如:INFO MEASDATA,可以看這個MEASURE DATA收集的Entities和時間。

    (4)INFO Plot
    如:INFO PLOT CPU-BUSY-TIME (A) ,可以查看加入的PLOT



  • LIST

    LIST用於看收集的MEASURE DATA內的資料,支援二種OBJECTs

    (1)LIST Entities
    如:LIST CPU * ; LIST DISC *;

    (2)LIST Plot
    如:LIST PLOT (請參考ADD的PLOT範例)

    LIST Entity 有以下幾種用法:


    • 直接LIST ENTITY
      如:LIST CPU *; LIST PROCESS $ABC


    • 查看某個時間點
      如:LIST CPU *, FROM 9:00, TO 10:00


    • 查看某個時間點後
      如:LIST CPU *, FROM 9:00, FOR 1 HOURS


    • 依ENTITY內的欄位值查詢
      如:LIST CPU *,BY CPU-BUSY-TIME(看所有CPU的內容,依CPU-BUSY-TIME值由高列到低)


    • 依ENTITY內的欄位值特定範圍查詢
      如:LIST CPU *,IF CPU-BUSY-TIME > 10(看所有CPU的內容,當CPU-BUSY-TIME值>10才列出)


    • 也可以將BY和IF合用,如:LIST PROCESS *,BY CPU-BUSY-TIME,IF CPU-BUSY-TIME > 10,FORMAT BRIEF


    • LIST加上REPORT 屬性,以下為REPORT常用的幾種屬性:

      FORMAT
      Brief: 精簡列顯示ENTITY較重要的欄位值,如LIST CPU *, FORMAT BRIEF
      Normal: 顯示ENTITY所有欄位的值(預設)
      Structured: 將指令要顯示ENTITY的內容寫到DDL 結構內,產生CODE 170的DATA FILE, 之後可以用ENFORM來做排序。
      XML/CSV/JSON: 將要顯示ENTITY的內容轉換成XML/CSV/JSON格式,轉換出來的檔案最大為1T。

      RATE
      ON:顯示ENTITY的值用%表示(系統預設)
      OFF:顯示ENTITY的值用數量表示

      TOTALS
      INCLUDE:顯示ENTITY的REPORT再加上TOTAL RECORD筆數
      ONLY:顯示整個ENTITY的總合值
      SUPPRESS:顯示ENTITY的REPORT(系統預設)

      ZERO-VALUES
      INCLUDE:顯示counter實際的值
      SUPPRESS:當counter值小於0.005時就當成0或空格(系統預設)

      ZERO-REPORTS
      INCLUDE:當counter為0時也會顯示該筆RECORD
      SUPPRESS:當counter為0時,就不顯示該筆RECORD (系統預設)


    • LISTALL
      LISTALL的用法和LIST相同,LISTALL主要是將每個INTERVAL收集的資料都顯示,LIST則是將整個時段的資料統計後顯示。LISTALL最常用是將CPU 值LISTALL,然後就可以匯出成EXCEL,畫出CPU BUSY的圖表。


    • START
      START 主要是啟動以下兩個object
      1.START MEASSUBSYS:啟動MEASURE SUBSYSTEM。
      2.START MEASUREMENT filename:啟動MEASURE收集MEASURE DATA。

      註:系統預設的MEASURE DATA 大小若不足時,可以在START MEASUREMENT後加上FILESIZE 放大MEASURE DATA FILE。


    • STOP
      STOP主要是停止以下兩個object
      1.STOP MEASSUBSYS:停止MEASURE SUBSYSTEM。
      2.START MEASUREMENT filename:停止收集MEASURE DATA FILE。

二、啟動/停止MEASURE子系統
  • 啟動MEASURE:MEASCOM START MEASSUBSYS;
    停止MEASURE:MEASCOM STOP MEASSUBSYS;


  • 目前系統上執行的程式與檔案愈來愈多,所以在啟動MEASURE 前要放大CID,完整程序如下(通常這段會加到系統開機的START FILE,之後只要收集MEASDATA即可):
    MEASCOM STOP MEASSUBSYS;
    ADD DEFINE =_SET_MAX_CIDS_TO_1024K, FILE M1
    MEASCOM START MEASSUBSYS;

三、定時/即時收集MEASURE DATA
  • 定時收集MEASURE DATA

    定時收集MEASURE程序:

    步驟說明:
    (1)編輯如上的TACL OBEYFILE。
    (2)設定要收集MEASURE的時間,並存成不同的MEASURE DATA FILE,以及設定要收的interval 間隔時間,最低可以到1秒。
    (3)執行這個OBEYFILE,當系統時間到就會自動收集那段時間的MEASURE,並產生CODE 175的檔案。
    (4)如要停止某個時段的measure,指令如下:
    MEASCOM STOP MEASUREMENT measdata


  • 即時收集MEASURE DATA

    即時收集MEASURE程序:

    執行方式:RUN MEASSTRT MEASDATA

    即時停止MEASURE

    執行方式:RUN MEASSTOP MEASDATA

    檢查系統目前MEASURE啟動收集的檔案有那些,執行方式:MEASCOM STATUS MEASSUBSYS


四、手動分析MEASURE DATA
  • 加入要分析的MEASURE DATA
    將要分析的MEASURE DATA加入,並確認它收集的時間和項目,指令:ADD MEASDATA
    INFO MEASDATA


  • 分析CPU

    • 要分析CPU負載是否平均,不平均時要從該CPU上最忙的幾個PROCESS 去做分配調整,若忙碌的PROCESS是DISK PROCESS,就要分析DISCOPEN內最忙碌的檔案(read次數最高的幾個檔案分散至其他不忙的DISK上)。


    • CPU ENTITY包含了下面幾個子系統,各子系統重要的欄位說明如下:
      • CPU Subsystem
        Cpu-Busy-Time:顯示該顆CPU的BUSY值。
        Cpu-Qtime:顯示這段時間內Processes在ready list等待的總時間(rate off)或平均等待的時間(秒)(rate on),該值太高,表示CPU可能資源不夠。
        Dispatches:顯示這段時間內Processes從ready list進入CPU處理的頻率。


      • Memory Subsystem
        Ending-Free-Mem:顯示該CPU剩下的記憶體
        swaps:Memory Manager做程式在記憶體中SWAP的次數,若該值太高有兩個原因,一個是記憶體不足,另一個該CPU上的的程式太多transient processing。


      • Disk Subsystem
        Disc-IOs:顯示該顆CPU上的DISK I/O的次數頻率
        Cache-Hits:顯示該顆CPU上的DISK在DISK CACHE命中的次數頻率


      • 常用的指令
        LIST CPU * --看全部CPU和全部CPU的欄位值
        LIST CPU *, FORMAT BRIEF --看全部CPU和精簡CPU的欄位值
        LIST CPU *, FROM time, TO time --看某段時間內的CPU值

  • 分析DISC
    • 主要分析DISC上DEVICE-QBUSY-TIME過高的DISK(超過15%就需要分散該DISK內WRITE/READ過重的檔案至其他不忙的DISK)


    • DISC ENTITY重要的欄位說明如下:
      Device-Qbusy-Time:排隊等待的時間,若該值大於15%,磁碟的效能會明顯下滑,需要分析該顆DISK內WRITE/READ過重的檔案分散至其他DISK。


    • 常用的指令
      LIST DISC * --看全部DISC和全部DISC的欄位值
      LIST DISC *, FORMAT BRIEF --看全部DISC和精簡DISC的欄位值
      LIST DISC *, FROM time , To time --看某段時間內的DISC值

  • 分析PROCESS
    • 主要分析每顆CPU上最忙的PROCESS是那些,好做為分散CPU上PROCESS負載的依據,若該PROCESS是DISK PROCESS,就必須再分析該DISK的DISCOPEN內那些READ/WRITE過重的檔案,將他們分散到其他DISK上。


    • PROCESS ENTITY重要的欄位說明如下:
      CPU-BUSY-TIME:PROCESS 執行花費的時間,愈高代表該PROCESS耗費CPU資源愈高。有些process可能是瞬間BUSY,很快就結束,所以必須要注意BUSY的PROCESS耗時佔MEASURE收集時間的比例。
      RECV-QTIME:Process message 傳送等待的時間,愈高代表該process本身處理訊息傳遞能力不足,通常這個值大於2位數時,需特別注意。


    • 常用的指令
      LIST PROCESS * --看全部PROCESS和全部PROCESS的欄位值
      LIST PROCESS *, FORMAT BRIEF --看全部PROCESS和精簡PROCESS的欄位值
      LIST PROCESS *, FROM time,To time --看某段時間內的PROCESS值
      LIST PROCESS *, BY CPU-BUSY-TIME, FORMAT BRIEF --依CPU-BUSY-TIME 值從大到小列出忙碌的PROCESS
      LIST PROCESS *,BY RECV-QTIME,FORMAT BRIEF--依RECV-QTIME值從大到小列出忙碌的PROCESS,這個指令能快速找出系統在QUEUE的PROCESS,通常這個值太高(2位數)的PROCESS就會是卡住的瓶頸原因。

  • 分析DISCOPEN
    • 主要分析每顆DISK上的檔案READ/WRITE次數和CACHE READ/WRITE的次數,可找出每顆DISK忙碌的主要檔案是那些,以及有那些檔案出現LOCKWAIT TIME,發生LOCKWAIT TIME過高的檔案,要再分析是那些PROCESS造成的。


    • DISCOPEN ENTITY重要的欄位說明如下:
      Driver?Input?Calls:檔案做read的次數(包含在cache和沒在cache的次數)
      Driver?Output?Calls:檔案做write的次數(包含在cache和沒在cache的次數)
      Cache?Hits:檔案做READ時,資料能在CACHE中找到的次數。
      Cache?Write?Hits:檔案做WRITE時,資料能在CACHE中找到的次數。
      Block?Splits:檔案在做WRITE時發生BLOCK-SPLIT的次數,若該值太高,建議將該檔案重做RELOAD,放大SLACK到20。
      Lockwait-Time:檔案花在等待LOCK的時間。
      Max-Lockwait-Time:檔案被LOCK等待最長的時間。


    • 常用的指令:
      LIST DISCOPEN $DATA.FUDATA.FUTPAB --看該檔案的統計內容
      LIST DISCOPEN $DATA.FUDATA.FUTPAB, FORMAT BRIEF --看該檔案的精簡欄位值
      LIST DISCOPEN $DATA.FUDATA.FUTPAB, FROM time, To time --看該檔某段時間內的統計值
      LIST DISCOPEN $*.*.*, BY Max-Lockwait-Time, FORMAT BRIEF –查全部檔案中,Max-Lockwait-Time最高的檔案
      LIST DISCOPEN $*.*.*, BY Block?Splits–查全部檔案中,Block?Splits最高的檔案(這時不能加FORMAT BRIEF)


參考資料
‧Performance Analysis and Tuning for NonStop Systems
‧Measure Users Guide
‧Measure Reference Manual

 

回上一頁