2009年11月30日 星期一

DB2 檢視 Snapshot的內容

Snapshot可以抓取某一個時間點下,monitor switches所收集的資料。因此在進行snapshot前,需先開啟monitor switches,這裡以lock的switch為例

db2 update monitor switches using lock on

接著查一下monitor  switch是否被打開了

db2 get monitor switches

image

確定LOCK的switch被打開後,執行下列指令,就可以抓取LOCK這個monitor switches所收集的資料了

db2 get snapshot for locks on db_name




以下為範例結果




Database Lock Snapshot

Database name = SAMPLE
Database path = C:\DB2\NODE0000\SQL00001\
Input database alias = SAMPLE
Locks held = 5
Applications currently connected = 1
Agents currently waiting on locks = 0
Snapshot timestamp = 06-05-2002 17:08:25.048027

Application handle = 8
Application ID = *LOCAL.DB2.0098C5210749
Sequence number = 0001
Application name = db2bp.exe
CONNECT Authorization ID = DB2ADMIN
Application status = UOW Waiting
Status change time = Not Collected
Application code page = 1252
Locks held = 5
Total wait time (ms) = 0

List Of Locks
Lock Name = 0x02000300050000000000000052
Lock Attributes = 0x00000000
Release Flags = 0x00000001
Lock Count = 1
Hold Count = 0
Lock Object Name = 5
Object Type = Row
Tablespace Name = USERSPACE1
Table Schema = DB2ADMIN
Table Name = STAFF
Mode = U

Lock Name = 0x02000300000000000000000054
Lock Attributes = 0x00000000
Release Flags = 0x00000001
Lock Count = 1
Hold Count = 0
Lock Object Name = 3
Object Type = Table
Tablespace Name = USERSPACE1
Table Schema = DB2ADMIN
Table Name = STAFF
Mode = IX

Lock Name = 0x01000000010000000100810056
Lock Attributes = 0x00000000
Release Flags = 0x40000000
Lock Count = 1
Hold Count = 0
Lock Object Name = 0
Object Type = Internal Variation Lock
Mode = S

Lock Name = 0x41414141414A48520000000041
Lock Attributes = 0x00000000
Release Flags = 0x40000000
Lock Count = 1
Hold Count = 0
Lock Object Name = 0
Object Type = Internal Plan Lock
Mode = S

Lock Name = 0x434F4E544F4B4E310000000041
Lock Attributes = 0x00000000
Release Flags = 0x40000000
Lock Count = 1
Hold Count = 0
Lock Object Name = 0
Object Type = Internal Plan Lock
Mode = S



由上面的例子可以看到,目前資料有1個應用程式連接,而這個應用程式產生了5個lock,目前這個應用程式花費0秒在等lock

DB2 locklist 參數

locklist - Maximum storage for lock list configuration parameter

Configuration Type
Database
Parameter Type
Configurable Online
Propagation Class
Immediate
Default [Range]
UNIX®
Automatic [4 - 524 288]
Windows® Database server with local and remote clients
Automatic [4 - 524 288]
Windows 64-bit Database server with local clients
Automatic [4 - 524 288]
Windows 32-bit Database server with local clients
Automatic [4 - 524 288]
Unit of Measure
Pages (4 KB)
When Allocated
When the first application connects to the database
When Freed
When last application disconnects from the database

----------------------------------------------

這個參數設定lock list所使用的記憶體數量。每個資料庫都會有一個lock list,它的功能是放置所有連線到該資料庫的應用程式所持有的lock。Lock是資料庫用來保護con-current存取時,資料完整性的方法。Lock的範圍可以是一個row,也可以是一個表格。除了應用程式外,資料庫本身為了internal user,有時候也會有lock的動作。

當這個數設為Automatic,資料庫的memory tuner會動態地依照workload的需求,調整這個參數的值。因為memory tuner之間會在不同的memory consumer間交易memory資源,因此最少必需有二個以上的memory consumer被enabled。

Locklist值的優化會和maxlocks這個參數一起考慮,因些若取消locklist的自動化調整會同時取消掉maxlocks這個參數的自動化調整。另外,這個參數的自動化調整要運作,前提是 self_tuning_mem這個參數需被設為ON。

在32 bit的平台下,每個lock需要48或96 byte的lock list空間,決定的因子在於

  • 對資料庫物件來說,若這是一個全新的lock(即該物件沒有被其它lock hold住),則需96 byte
  • 若該物件已經有其它的lock了,則只需48byte來記錄這個額外的lock

在64 bit的平台下(HP-UX/PA-RISC除外),每個lock需要64或128 byte,決定的因子在於

  • 對資料庫物件來說,若這是一個全新的lock(即該物件沒有被其它lock hold住),則需128byte
  • 若該物件已經有其它的lock了,則只需64byte來記錄這個額外的lock

對於HP-UX/PA-RISC的64 bit 平台,每個lock的需求則為 80或160 byte

當某個應用程式使用的lock list空間百分比大於maxlocks的設定值,資料庫就會進行lock escalation,把原來的record lock升級成table lock。雖然escalation的動作不會花太久時間,但是lock住整個table會大大降低concurrency,且降低資料庫在存取這些被lock的table的效能。因此,為了控制lock list的使用空間,建議注意下列事項

  • 儘早進行commit,以儘快釋放lock
  • 當做大量update時,在update前使用table lock鎖住整個表格,這樣只會產生一個lock,節省lock list的使用,不過這樣會降低該表格的concurrency。另外,也可以用ALTER TABLE的LOCKSIZE option來控制針對該table,如何進行lock。若使用到 Repeatable Read的isolation level的話,會自動造成 table lock
  • 儘量使用Cusor Stablity isolation level來減少share lock的數目。在不影響應用程式的integrity的前提下,建議使用Uncommited Read而不是Cusor Stability isolation,可進一步減少lock的數目
  • locklist值設為自動,資料庫會自動增加locklist的空間,以避免 lock escalation或 lock滿掉的狀況

一但lock list滿了,效能會因為lock escalation的關係而降低。除此之外,deadlock的狀況也會增加,而造成有些交易會被rolled back。當lock滿了,應用程式會收到 SQLCODE -912的錯誤訊息

建議事項:

如果常因lock escalation而造成效能的降低,建議將locklist參數或maxlocks參數值調大。若要觀察lock escalation的狀況,可以使用 database system monitor來觀察lock_escals這個monitor element。

資料來源:http://publib.boulder.ibm.com/infocenter/db2luw/v9//topic/com.ibm.db2.udb.admin.doc/doc/r0000267.htm?resultof=%22%6c%6f%63%6b%6c%69%73%74%22%20

DB2 DFT_DEGREE 參數

dft_degree - Default degree configuration parameter

Configuration Type
Database
Parameter Type
Configurable Online
Propagation Class
Immediate
Default [Range]
1 [ -1, 1 - 32 767 ]

----------------------------------------------------------------------------------------------------------------------------------------

這個參數可以設定CURRENT DEGREE這個特殊的REGISTER及DEGREE bind option的值,系統的預設值為1。

值為1時表示沒有intra-partition parallelism的情形,若把它設為-1,系統的optimizer會依照CPU的數目及查詢的種類,自動決定 intra-partition parallelism的值

SQL語句的 Degree of intra-partition parallelism是在該語句的編譯時期,用CURRENT DEGREE這個特殊的REGISTER或DEGREE bind option所指定。一個active application的最大的執行時期的 degree of intra-partition parallelism則是透過SET RUNTIME DEGREE命令來達行。最大的query degree of parallelism(max_querydegree)參數指定所有SQL查詢的最大的query degree of intra-partition parallelism

而執行時期實際的 degree則是取下列三個值中最小的

  • max_querydegree =>即上面提到的所有SQL查詢中,最大的query degree of intra-partition parallelism
  • application runtime degree=>即上面提供的一個active application的最大執行時期的 degree of intra-parition parallelism
  • SQL statement compilation degree=>即這個dft_degree參數定義的值

資料來源:http://publib.boulder.ibm.com/infocenter/db2luw/v8//topic/com.ibm.db2.udb.doc/admin/r0000346.htm?resultof=%22%64%66%74%5f%64%65%67%72%65%65%22%20

2009年11月29日 星期日

zSecure Audit的Status Report

zSecure Status Report的功能是弱點掃描,看看目前系統中的設定(主要是RACF)是否夠安全,它的特點在於可以整合RACF與其它z/OS系統的資訊,整體地分析目前系統的安全狀態。它可以產生的報表可分成MVS tables、MVS extended、RACF control、RACF user及RACF resource等5大類。

image

MVS tables:此類的Report可以找出目前系統的設定需要注意的地方,如SMF的設定、JES的設定、PPT的設定、SVC的設定…等

MVS extended:此類的Report主要是focus在檢查MVS的設定,如APF、CATALOG、LPA LIST…等的設定

RACF Control:此類的Report主要是focus在檢查RACF的configuration table設定,如STARTED、STCTABLE…的設定

RACF User:此類的Report則focus在列出RACF 中關於User profile需要注意的設定,如那些使用者具有特殊權限、那些使用者超過60天沒有更改密碼…等

RACF Profile:此類的Report列出RACF中關於Resource這類的Profile需要注意的地方

2009年11月28日 星期六

zSecure Audit架構

如下圖所示,作為一個自動化的安全性稽核軟體,zSecure Audit可以整合分析下列不同來源的資料,了解目前z/OS環境的安全狀況

  • 系統的Security database(如RACF)設定
  • z/OS IPL的參數及其實設定資訊  ==>會被收集到CKFREEZE檔案中
  • SMF的 audit trail資料
  • 其它的資料來源(HTTP log或 flat file)

由這些地方收集而來的Report會存放於zSecure本身的database,Auditor可以使用針對這個database進行分析,若熟悉CARLA這個語言,也可以用它來產生客製化的報表

image

DSMon Report種類

以下為呼叫DSMon Report Utility的JCL

//STEP1   EXEC  PGM=ICHDSM00
//SYSPRINT DD   SYSOUT=A
//SYSUT2      DD   SYSOUT=A
//SYSIN         DD
     LINECOUNT    55                            ==>定義產製出來的Report每頁要有幾行
     FUNCTION      ALL                           ==>要呼叫那些功能,這些功能對應到DSMon可以產生的11種報表
     USEROPT         USRDSN        PRODUCT.PLANS.SECRET  ==>User defined的選項

下圖為FUNCTION這個Control Statement參數與DSMon可以產生的11種報表的對應

image

image

下圖則列出USEROPT這個Control Statement參數所對應的報表

image

接下來簡單地介紹DSMon可以產生的11種報表。

SYSTEM REPORT

System Report包含下列資訊

  1. 機器的型號及ID (CPU ID)
  2. 作業系統的名稱、版本資訊
  3. 開機磁碟的Volume序號(SYSRES Volume)
  4. 定義在SMF內的系統ID
  5. RACF版本及RACF是否處於啟動狀態

System Report可以用來確認目前機器使用了正確的硬體。另外,若RACF是處於Inactive狀態, System Report會列出  “RACF VERSION n RELEASE  m  IS INACTIVE。下圖為System Report的內容

image

GROUP TREE REPORT

Group Tree Report預設會遞迴地列出所有SYS1這個群組下面所有的子群組樹。若使用者使用USEROPT這個control statement指定其它群組名稱,則會列出該群組的群組樹。所列出來的群組樹中,若任何群組的父群組不是該群組的Owner,會另外列出該群組 Profile的Owner名稱。

我們可以使用Group Tree Report來檢視RACF中任一群組的結構資訊,以了解群組的結構是否正確。下圖為Group Tree Report的內容
image

Program Properties Table Report

PPT report列出所有定義在Program Properties Tables中的程式,PPT這個Table可以訂定那些程式可以bypass掉RACF的密碼保護機制。下圖為PPT report的範例。其中BYPASS PASSWORD PROTECTION欄位定義該程式能否bypass掉RACF的密碼保護;SYSTEM KEY則指出該程式是否會執行於 Supervisor State中,且可存取系統的Control Block資訊

image

RACF Autorized Caller Table Report

這份報表可以列出所有列在 RACF Autorized Caller Table中的程式,通常應該不會有記錄,若有記錄表示有人寫exit來bypass RACF的功能,以下為範例。其中  RACINIT AUTHRIZED表示該程式有無權限發出 RACF的 VERIFY請求;RACLIST AUTHORIZED則表示該程式有無權限發出 RACF的 LIST請求。

這個Report非常重要,因為任何一個可發出VERIFY請求的程式可以建立或修改Accessor Environment Element(ACEE)的內容。因為ACEE放置的是當前使用者的資訊,如user ID、所屬的群組、使用者的一些屬性等。可以修改這些資訊的程式可以模擬任何使用者的ID。而任一個有RACLIST權限的程式可以Load任何RACF的任一個Profile到main storage中,可以檢視或修改這些Profile的內容

image

RACF Class Descriptor Table Report

這份報表可列出Class Descriptor Table所定義的General Resource classes。每個General Resource的Class都必需定義在 Class Description Table中,然後使用 SETROPTS CLASSACT(class_name) 指令啟動該class,讓RACF進行Authorization的檢查。這份報表列出所有定義在CDT中的class目前的狀態。下圖為範例。其中
STATUS        欄位標示這個class目前有無啟用;
AUDITING  標示有無logging這些class所保護的資源的存取;
STATISTICS標示是否保留這些class的統計數據
DEFAULT UACC標示這些class所管轄的Profile預設的UACC值,若值為ACEE,則值為定義該resource profile的User其user Profile中的UACC值
OPERATIONS ALLOWED標示在做Authorization checking時,要不要考慮存取者的OPERATION屬性?

image

RACF EXIT REPORT

EXIT report列出系統中定義的所有RACF exit routine,以及這些routine的大小,所以由此報表可以確認目前系統定義的RACF exit都是合法的,如果發現到這些exit routine的大小變動了,表示這些RACF exit有被變動過。以下為範例

image

RACF Global Access Checing Table Report

此報表列出所有定義在Global Access Checking Table的 Resource Class。當RACF在做authorization checking時,針對沒有用 RACLIST這個指令將其load到記憶體的profile,會先check這個Global Access Checking Table的內容,若這個表格定義錯誤,會導致錯誤的授權。下圖為範例

image

RACF Started Procedures Table Report

Started task在執行時,也必需是以某個ID及Group的身份執行,在RACF2.1之前,RACF用 Started Procedure Table指定User ID/Group 給Started Task,自從RACF2.1後,RACF可以定義STARTED這個class的Profile,來指定User ID/Group給Started Task。這份報表會顯示出定義在Started Procedures Table及STARTED 這個class的Profile。下圖為範例。其中

PRIVILEGED欄位表示該Started Task能否bypass所有security check
TRUSTED 欄位也是表示該Started Task能否bypass security check,不過最少在存取resource時,會被log起來

image

Selected User Attribute Report

此報表列出所有有SPECIAL、OPERATIONS、AUDITOR或REVOKE特殊屬性的使用者,並且顯示這些屬性的Scope是System level或Group level。儘量在系統離峰的時間產制這份報表,因為產生此報表需要較大的系統資源,會影響到系統的效能。下圖為範例

image

Selected User Attribute Summary Report

此份報表顯示出系統中具有SPECIAL、OPERATIONS、AUDITOR或REVOKE這些特殊屬性(不管是System level或Group level)的使用者的數目。下圖為範例。與Selected User Attribute Report一樣,這份報表的產製一樣較耗系統資源,儘量在離峰時間做

image

Selected Data Set Report

此分報表列出系統前Dataset(包含RACF database)的安全狀態,如果Volume Serial是空白的話,這個Dataset是未被catalog的Dataset。這裡選擇Dataset的原則如下

  • LNKLST : LNKLST concatenation 的dataset,包含SYS1.LINKLIB及SYS1.PARMLIB(LNKLSTxx)所描述的dataset
  • APF:APF list中所包含的dataset,包含SYS1.PARMLIB中的 IEAAPFxx或PROGxx 這兩個member的dataset
  • LNKLST-APF:既是LNKLST也是APF的dataset
  • MASTER CATALOG:z/OS的master catalog
  • USER CATALOG
  • RACF PRIMARY:primary的RACF dataset
  • RACF BACKUP:RACF的備分dataset
  • SYSTEM:
    • SYS1.CMDLIB:TSO command library
    • SYS1.LNKLIB: 主要的System library
    • SYS1.LPALIB: Pageable system code及common module。這些程式是以APF-authorized的方式執行
    • SYS1.NUCLEUS:System code 本身
    • SYS1.PARMLIB
    • SYS1.PROCLIB
    • SYS1.SVCLIB:舊的系統Supervisor call library
    • SYS1.UADS:TSO使用者的屬性 Dataset
  • USRDSN:在USEROPT這個Control Statement所指定的其它dataset

下圖為範例。其中

RACF INDICATED欄位可能的值如下

  • YES:表示RACF indicator被設為ON
  • NO:表示RACF indicator被設為OFF
  • N.C.:表示該dataset沒有被列在Master Catalog
  • N.M.:表示該dataset所在的volume沒有被mount進來
  • N.F.:DSMON utility無法在catalog記錄的volume中找到該dataset

RACF PROTECTED欄位表示RACF有無相對應的Profile保護該Dataset

UACC欄位表示這些Dataset的UACC值

image

2009年11月27日 星期五

RACF提供給Auditor的功能

為了讓Auditor更有效地監控系統的安全狀態,RACF提供了下列功能

  • Logging 的routine程式,可記錄系統發生的事件,將這些事件寫入 SMF record中
  • SETROPTS指令提供一些專門給Auditor才能用(連Special用戶都不能呼叫)的功能選項,以便Auditor進行查核
  • 提供 RACF SMF data unload公用程式,可以將SMF record倒出來,並轉換成易於import進 RDB的格式
  • RACF report writer,可以產生客制化的報表  (目前Report Writer已不出更新版了,因此不建議使用,現在建議使用 RACF SMF unload utility)
  • Dataset Security Monitor(DSMon),可以產生目前環境的安全狀態 (zSecure Audit提供類似功能,不過zSecure除了RACF的資料外,還可以結合其它MVS的資訊)

2009年11月22日 星期日

如何查詢Guest目前使用了多少的Virtual CP,以及增加Guest的Virtual CP

在z/VM的 guest zLinux環境中,若要知道該Linux image配置了多少的Virtual CP,只需打入下列命令

cat       /proc/cpuinfo       ###結果如下

[root@ihs01 ~]# cat /proc/cpuinfo
vendor_id       : IBM/S390
# processors    : 2
bogomips per cpu: 3447.19
features        : esan3 zarch stfle msa ldisp eimm dfp
processor 0: version = 00,  identification = 04F4C0,  machine = 2094
processor 1: version = 00,  identification = 04F4C0,  machine = 2094

若要增加Linux guest的 logical CP,則打入下列command

echo 1 > /sys/devices/system/cpu/cpu1/online    #把cpu1 bring online

2009年11月21日 星期六

WAS的 Profile管理

要建立一個新的Node時,可以在 was安裝目錄下的  bin目錄中,執行下列指令,其中templatePath裡面放置了建立一個Node所需要的資訊的範本,在/opt/IBM/WebSphere/AppServer/profileTemplates/ 這個目錄下有四個子目錄,分別是 managed、default、cell及dmgr等,分別放置建立 node、獨立was Server、1個cell(dmgr + 被管理的was server)以及 deployment manager所需的 profile範本。下面的例子是建立一個單獨的Node的例子,其中-hostName是放Node本身所在機器的hostname或IP,若要設hostname的話,記得在Dmgr那台機器的 /etc/hosts 裡面要設定hostname與 IP的對應。另外,-cellName所設定的名稱必需與將來要加到的Dmgr所在的cell名稱不同,否則在 addNode時,會出現錯誤訊息。在做完addNode之後,這裡所設定的cellName會被取代成 Dmgr所屬的Cell Name

./manageprofiles.sh -create -profileName SecNode02 -profilePath /var/wasprofiles/SecNode02 -templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/managed/ -cellName mycell -nodeName SecNode02 -hostName nodeServer_ip(or hostname)

建立完後,要到其profile下的bin目錄中,執行 addNode.sh,向deployment manager註冊這個Node。

./addNode.sh dmgr_host_ip

若要看目前的WAS環境中,已有多少的Profile,執行下列指令

./manageprofiles.sh -listProfiles

2009年11月15日 星期日

CPU time的定義

CPU Time指的是CPU實際工作的時間,理論上可用下列式子表示

image  
其中,

Cycle Time 是指CPU電路閃一次所需的時間,為我們平常聽到的頻率(GHz) 的倒數,與CPU的 model有關

Path length則是指完成一個交易,所要執行的CPU指令的數目。這個值與 CPU的架構以及Compiler的品質有關。不同的CPU架構決定了不同的指令集;而好的 Compiler能夠將程式轉換成執行起來較有效率的指令群。

Cycles/Instructions 則是指平均需要多少次的CPU cycle,才能執行完一個CPU指令。對於較簡單的指令,主機可在一次的CPU cycle中,指行多次;而對於較複雜的指令,則可能需要多個CPU cycle可能執行完成

由此定義可知,影響 CPU 速率的因子,除了一般大家所知的 Cycle time之外,還受Path length及 Cycles/Instructions所影響,因此不能單純由CPU的時脈,就決定那個CPU處理交易的速度較快

系統Utilization Rate與 ETR的關係

系統的Utilization Rate定義了單位時間內,系統真正有在做事情的時間百分比。依此定義,可以用下列公式表示

image

考慮只有一台Server的情況下,Busy_Time為單位時間的交易處理量   乘上   單一交易所需的處理時間,如下公式

image

將Busy_Time代入上面 U% 的式子,可得到

image

其中 #Transactions/Elapsed_time 即為 ETR(External Transaction Rate),因此,這個式子又可寫成

image

External Transaction Rate (ETR) 與 (Internal Transaction Rate) ITR的關係

在計算資訊系統的Capacity(處理能力)時,有兩個數值,一個是External Transaction Rate(ETR),另一個是Internal Transaction Rate(ITR)。

ETR:是系統外部的使用者所觀察到的單位時間內,系統能處理的交易數。依此定義,ETR可由下列公式表示


image

若將Elapse Time進一步分解,可得到下列公式:


image

其中,N是處理的交易量;Tt 是使用者在執行交易時的Think Time;而 Tr 則是系統的回應時間。對於ETR來說,IT人員能控制的因子只有Tr,因此要維持用 ETR定出來的Service Level Agreement會有困難。
另外,任何bottleneck都會影響ETR,如I/O的限制、page delay、tape mount delay…等


 

ITR:指的是系統內單位CPU時間內,能處理的交易數。依此定義,ITR可由下列公式表示

image

ITR與下列因子相關:  CPU的速度(CPU快愈快,ITR高)、作業系統(作業系統好,ITR高)、交易的屬性(交易愈簡單,ITR愈高)

若把ETR除以ITR,可以得到

ETR/ITR = CPU_time/Elapsed_time ,即

ETR/ITR = CPU utilization_rate。因此,當CPU的使用率在百分之百時,ETR會等於ITR

2009年11月13日 星期五

TCPIP的 TIME_WAIT

Description

Specifies the time that must elapse before TCP can release a closed connection and reuse its resources. This interval between closure and release is known as the TIME_WAIT state or 2MSL state. During this time, the connection can be reopened at much less cost to the client and server than establishing a new connection.

RFC 793 requires that TCP maintains a closed connection for an interval at least equal to twice the maximum segment lifetime (2MSL) of the network. When a connection is released, its socket pair and TCP control block can be used to support another connection. By default, the maximum segment lifetime is defined to be 120 seconds, and the value of this entry is equal twice that, or 4 minutes. However, you can use this entry to customize the interval.

Reducing the value of this entry allows TCP to release closed connections faster, providing more resources for new connections. However, if the value is too low, then TCP might release connection resources before the connection is complete, requiring the server to use additional resources to reestablish the connection.

出處:http://technet.microsoft.com/en-us/library/cc757512%28WS.10%29.aspx

根據上述的說明,TIME_WAIT值是在TCP connection關閉後,要經過多少時間,TCP才會真的釋出這個 connection,以及這個connection所用到的資源。這個設計的好處是,如果在TIME_WAIT時間內,要重新使用已關掉的connection,只要在TCP釋出它的資源之前,不需重新建立,而可以直接re-open該connection。一般來說,TIME_WAIT的值會是 2倍的 Maximum Segment Lifetime的時間。

2009年11月11日 星期三

Little's Law

Little's Law由 MIT Sloan School of Management的教授John Little﹐於1961年所提出與證明,用在估計一穩定流動的系統內元素的“庫存量“﹐例如商店中的客人數﹑生產線中的半成品數量。 下圖簡述一下Little's Law的精神。

假設元素進到某個系統的速率為 Q,元素離開該系統的速率為Q’,在這樣的情形下,平均在該系統內的元素量為 N,每個元系平均停留在該系統的時間為 T。則當系統處於一個穩定狀態時,Q 等於Q’,而此時Q’和 N及T存在一個關係

Q’ =  N/T

image

換個角度來看 在一個Queue(系統)中可觀察到的請求數量 N,會等於系統完成該請求的速率 與 處理請求平均所需時間的乘積。若再把處理請求所需的時間分成
Tr: 平均系統處理請求所需時間
Tt: 平均使用者的Think Time
上述方程式可寫成

Q’ =  N/ (Tr + Tt)

2009年11月8日 星期日

DFSMS的四種不同的功能性元件(Draft)

DFSMS依照其功能性,有下列四大不同的元件

DFSMSdfp:
DFSMSdfp(Data Processing Product)讓SMS系統可以在新的dataset建立的時候,自動assign其service requirement及其它屬性。另外,它也提供了ISMF(Interactive Storage Management Facility)這個介面,以供設定存儲管理的政策

DFSMSdss:
DFSMSdss(Dataset service)有四大功能

  • 提供在不同device type之間進行資料的搬移或複製,也可以複製已經被備份出來的資料(這有什麼特別?)。
  • 空間管理,dss可以減少或減輕DASD free-space的 fragmentation
  • 資料的備份及還原,dss提供dataset及volume層級的備份及還原的功能
  • Dataset及volume的轉換,dss可以用來將dataset及volume轉換成SMS管理,也可以將回復為非-SMS管理的資料

DFSMShsm:

DFSMShsm(Hierachical Storage Manager)
DFSMShsm提供下列功能

  • 存儲管理,hsm可以自動化地以階層式的方式,跨不同的device進行存儲管理,簡化需手動管理這些存儲的麻煩
  • 空間管理,hsm可以只將active的dataset放在可進行快速存取的device中,增近DASD使用效率。它可以自動地把不常用的dataset搬移至存取速度較慢的device中。減少成本較高的存儲空間浪費。
  • 磁帶掛載管理,hsm可以將多個output dataset集合起來,寫入單一的tape,可以大大減少mount tape的次數
  • 可用度的管理,hsm提供完善的備份管理(需再補充)

DFSMSrmm:
DFSMSrmm(Removable Media Manager)可管理移動式的儲存媒體如tape,其提供下列功能

  • Library管理,透過它可建立tape library,或是一組的tape媒體,可以減輕tape driver及operator的workload
  • Shelf管理,rmm能以Shelf(書架)的方式來管理tape,將這shelf中的這些tape的資訊建立成一個線上的倉儲,以追蹤所有列管在這些Shelf的Tape volume。
  • Volume的管理,rmm協助管理tape volume的移動及保留的life cycle(需再詳盡說明)
  • Dataset的管理,rmm可記錄tape上的dataset資訊,以鑑定volume和dataset的資訊以維護資料的完整性(integrity)。它也可以控制這些dataset的保留。(需再詳盡說明)

2009年11月7日 星期六

Tivoli Omegamon XE for Storage on z/OS簡介-1

此產品有下列重點好處
  • 可以在單一的Console介面上,監控SMS、non-SMS及DASD目前的使用狀況
  • 提供一組新的Toolkit(包含online及產生JCL等batch功能),可簡化日常的存儲管理
  • 能夠以group、volume甚至是 dataset的層次進行主動式的管理,以最佳化空間使用效率及效能
  • 可以監控離線的Tape存儲環境
  • 可監控所有針對dataset的存取,從z/OS的 Address space level到監控在系統中執行的重要workload
  • 協助快速找到效能不好的瓶頸,以最大化執行效能
  • 可以客製化詳細的Alert訊息
  • 與其它的Storage Management Tool整合,形成管理存儲的一個單一窗口
  • 自動化地修正一再發生的效能問題,以最大化管理人員的productivity

介紹產品前需問自已的幾個問題

  1. 要介紹的產品跟目前客戶已在使用的產品有什麼差別,能為客戶帶來什麼新的價值
    • 提供即時資訊?
    • 提供更方便的操作介面?

2009年11月5日 星期四

Business Rule Management System

將業務邏輯從程式原始碼獨立出來進行管理,有下列好處

  1. 讓程式更加有彈性,當業務邏輯/規則因應環境變化而需要進行改變時,不需重新檢視、修改程式碼,可加快新版程式上線的時間
  2. 將業務邏輯/規則集中管理,可以追蹤規則變動的記錄,什麼人在什麼時候修改了業務規則可以一清二楚
  3. 和程式開發人員相較,Line of Business的人員會更了解業務規則,透過將業務規則抽離, LOB的人可以直接針對業務規則進行修改,不需再透過程式開發人員,讓開發過程更有效率

2009年11月4日 星期三

主機程式開發流程

下圖為在主機中開發程式的流程。

image

在這裡有幾個名詞要事先說明

  • Machine instruction:Machine instruction指的是可以要求CPU做動作的指令,其可分為七大類,分別是: General、Decimal、Floating-point-support(FPS)、Binary-floating-point(BFP)、control、I/O及Hexadecimal-floating-point(HFP)等。每個指令都是由 operation code(標示要做的動作)及 operator(被更改的資料)所組成
  • Machine language:機器語言是CPU直接在使用的語言
  • Program:Program泛指由一連串的語句所組成,經過編譯或解譯後,能夠執行特定功能的東西,通常可分成三種種類
    • Source code:使用特定開發語言撰寫而成的一連串語句,經由編譯器或組譯器轉換而形成可執行的程式
    • Object code:為Source code經編譯器或組譯器後轉換的結果。轉換的過程中,原本的程式語句會被轉換成Machine instruction。Object code必需經過Link-edit步驟處理過後,才能被執行
    • Executale code:Executable code為Object code經Binder程式處理過後的輸出。Binder是z/OS內建的公用程式,負責”Link Edit”不同的Object code,以建立一個可執行的Executable code。Binder的輸入可以是Object code,也可以是其它的Executable code。而產生出來的Executable code可以放在PDS、PDSE及HFS等不同種類的Dataset中。上圖的Loader也是z/OS內建的元件,負責把Executable code載入記憶體,並管理程式的Library。在z/OS環境中,有兩種不同的executable code:
      • Load module:存放於PDS dataset
      • Program Object:存放於PDSE或HFS dataset

zSecure 安裝設定

zSecure支援安裝在多個z/OS image的環境,若主機有多個LPAR,分別裝了獨立的z/OS,可以安裝zSecure主程式在 dead system(從來不會開啟的系統),然在在其它active系統中放置custimize的 configuration dataset,如此一來,zSecure主程式可被多個z/OS分享。

zSecure有下列三種安裝方式

  1. 標準安裝
    這種方式可以完全掌握SMP/E的 RECEIVE、APPLY、ACCEPT流程,要Follow Program Directory上的說明來安裝,安裝完後要使用CKRINST這個Library中的member,進行Post-Installation的設定
  2. 快速安裝
    這個方法把所有的安裝流程放在一個單一Job中(也是放在CKRINST這個Library中),這個Job會把zSecure安裝於獨立的CSI中,如果要控制將其安裝在舊有的CSI zone的話,需要用標準安裝的方式。另外,若要使用zSecure Admin RACF offline的功能,需要將 zSecure安裝於含有z/OS的 zone中,所以要使用zSecure Admin RACF offline功能,也需使用標準安裝的方式。
  3. CBPDO方式的安裝
    如果選用此安裝方式,只要Follow TAPE內所附的安裝引導來安裝,不要照著Program Directory上的引導來安裝。安裝完之後,需再使用CKRINST這個Library中的member,進行post-Installation 的設定。

接下來,使用下列JCL來將Tape的內容倒到DASD中

image

修改上述JCL

  1. Uncomment掉 //* 處,資料來源是TAPE還是File,選定一種後,可以另一個清除掉,然後在SYSIN處,把xxxxIN改成相對應的設定(FILEIN或TAPEIN)。若果是來源資料是Tape的話,要知道 IBM.HCKR1A0.F1是位於TAPE的那個LABEL,要Check RIMLIB檔案
  2. 加上Job card
  3. 在OUT DD card中,把your-prefix修改為所要安裝的prefix

客制化 CKRINST

在執行CKRINST進行安裝後設定前,需先客制化CKRINST Library裡的內容,進行下列步驟以Global update CKRINST Library中的設定值

  1. 修改CKRZUPDI member中的安裝參數
  2. 指定ISPF component的位置(如ISPPLIB、ISPTLIB….之類的東西)
  3. Global更新CKRINST內的member

接下來依序說明這些步驟

修改CKRZUPDI member中的安裝參數

下圖為CKRZUPDI member的內容

image

依照下列說明,修改CKRZUPDI,大小寫都沒差

  1. 修改Jobcard參數,這裡的參數會套用到CKRINST內的所有 member中
    //Jobcard1=//JOBNAME  JOB  ACCT,ZSECURE…,
    //Jobcard2=//         NOTIFY=&&SYSUID
  2. 設定zSecure要安裝的Library位置,如果要將zSecure Distribute到多個z/OS系統,建議將這個prefix設成另一獨立的prefix,不要與其它客制化的 dataset相同,這樣就可以用PrefixForTargetDataset來指定這些客制化的 dataset
  3. 設定PrefixForDistributionLibraries
  4. 設定所要安裝的Volume序號,若不給,系統會自己挑一個合適的Volume進行安裝
  5. Enable JclLib=Yes
    如果這個選項是Yes,則指向 SCKRPROC這個Dataset 的JCLLIB statement就會加到整個 CKRJOBS的 Dataset中。CKRJOBS這個Dataset會在執行 CKRZPOST這個 custimization job時而產生
    若已經將SCKRPROC這個Proclib及其它含有客制化member的Dataset cacatenate到JES中的話,這個選項就可以設成No
  6. 再來,若有需要可以更改SmpeTargetZone和SmpeDistributionZone的名字
  7. 再來,若有需要可以更改PrefixForSmpeGlobalZone、PrefixForSmpeOtherData,以更改與SMP/E相關的 dataset prefix
  8. 修改SmpeCsiAndSmptlibVolume,如果是將zSecure安裝於新的zone,需要給這個資訊,因為SMP/E和IDCAMS需要它;若是安裝在舊有的 zone,則不需要,安裝時會乎略這個值
  9. 最後,挑選要安裝的Product,將No改為Yes

指定ISPF component的位置

由於安更新 CKRINST Library裡面的安裝參數的過程需要使用到 ISPF service,如tables、messages,因此需要系統實際的ISPF component位置設定在C2RIISPF這個 member。C2RIISPF裡面已有預設的值,若系統的ISPF 元件所在位置不同於預設值,需更改為實際的值

  1. 在Command Line下執行 TSO ISRDDN指令,列出目前ISPF component的 concatenation list
  2. 對照C2RIISPF裡面的預設值與 ISRDDN列出的 concatenation差異,修改 C2RIISPF的內容。如果ISPLOAD及ISPLPA dataset分別位於 LINKLIST及 LPALIST,則不需要 STEPLIB及ISPLLIB的值,可以把它comment掉;相反地,若不在LINKLIST及LPALIST,則需把這兩個 statement uncomment掉。
    image
  3. 為了避免 Enqueue的衝突,不要在C2RIISPF中加入其它的設定,尤其不要allocate 任永久的 ISPF Profile dataset

更新Installation member

在更新完CKRZUPDI的內容後,檢查一下CKRZUPDZ的內容沒問題後,就可以 Submit CKRZUPDZ進行Global change。執行CKRZUPDZ 時,可以先使用 CHECK mode,檢查沒問題後,再把CHECK拿掉,直接進行Update。

image