命令SETOBJACC可以使檔案或程式常駐記憶體

2022-08-27 00:45:14 字數 3117 閱讀 3900

1.0 簡介:

在作業系統os/400 r220上,命令setobjacc可以將物理檔案,索引或程式調入儲存池,這使得客戶可以對儲存池內的內容實施一定的控制。這裡所說的儲存池指的是私有儲存池,作業執行的儲存池,或者是系統共享的儲存池。

這樣做的主要目的是為了提高作業以隨機的順序訪問某個物理檔案,或一系列作業訪問相同的物理檔案的效率。如果儲存池有足夠大的空間容納所有資料,那麼一旦物件被裝入儲存池,所有對檔案的讀取操作就會在乙個讀磁碟的週期完成,減少了將資料裝入磁碟的時間。從而達到大大提高作業執行效率的目的。

如果乙個私有儲存池只存放預裝的資料,那麼這些資料將一直駐留記憶體直到它們被用命令setobjacc,被其它檔案覆蓋(也使用setobjacc命令),或者該儲存池被清空(使用clrpool命令)清除出去。我們可以使用命令setobjacc *purge 將物理檔案,索引和程式從主存中(不僅僅是從某個儲存池)清除。這也是我們建議的管理儲存池內部物件的方法。

以下介紹命令setobjaccde在使用步驟和應該注意的事項,包括該命令如何工作,以及以乙個具體使用該命令的例項的效果。

1.1 使用時的注意事項

1.1.1 在使用命令setobjacc之前

1. 選擇那些在整個作業執行過程中要大量使用i/o並花費大部分作業執行時間的檔案,通常是指那些被隨機訪問的檔案(get by key);

2. 判斷這些物理檔案,邏輯檔案,或它們的一部分是否能夠整個的放進主存,如果不能,判斷它們是否都需要立刻放入主存,或者它們可以被單獨地裝入,這個將由具體的作業流程控制決定;

3. 決定使用哪個儲存池:您可以使用作業執行的儲存池(我們不建議),系統共享的儲存池,或者乙個私有的儲存池;

我們建議使用私有儲存池。如果您使用作業執行的儲存池,將不能保證資料駐留記憶體,因為資料不能夠被鎖入記憶體,它們會因為錯頁而從記憶體中消失。

如果您打算使用系統共享的儲存池,那麼請確保您沒有使用ibm的qpfradj或者任何其它oem廠商的效能調節工具,因為這些工具會根據錯頁率自動動態地調節系統共享儲存池的大小。

4. 決定您要預先裝入資料的儲存池的大小。這需要您清楚地知道檔案的大小和作業使用這些檔案的行為。判斷乙個物理檔案是否適合裝入記憶體,首先應該考慮該檔案是否被同步讀取(例如:有許多隨機讀取的動作並且交錯i/o很少的檔案)的機率很高,並且可以放入記憶體。順序i/o的檔案將不是乙個好的選擇;

5. 考慮工作負載壓縮的效果

乙個作業的執行時間,通常情況下,是由cpu時間和磁碟i/o時間組成。如果使用命令setobjacc可以減少磁碟i/o的時間,那麼無疑可以縮短整個作業的執行時間。但是。我們應該考慮到,當作業使用的cpu時間還和以前一樣,由於磁碟i/o的時間的減少,作業將縮短執行時間。這將使得相應的增加總體的cpu使用率,從而,我們無疑是從乙個瓶頸(磁碟i/o)轉向另乙個瓶頸(cpu能力)。

1.1.2 其它注意事項

1. 對於批處理作業中不同階段用到的同乙個檔案,使用setobjacc可以用於將該檔案在整個處理階段儲存在記憶體中;

2. 對命令setobjacc *purge的考慮:如果作業沒有使用單獨的儲存池,並且作業使用 了多個檔案,或者這些檔案被用在幾個順序的作業階段中,可以嘗試使用該命令。它可以清除在下乙個作業步驟中用不到的檔案,這樣有助於儲存幾個常用的檔案。

3. 如果對批處理過程使用命令setobjacc,您應該時常地檢視以下作業執行日誌,確保預先裝入的物件還駐留在儲存池中。 

1.2 使用步驟

在乙個單獨的子系統中建立乙個私有儲存池:

1. 建立子系統描述:

crtsbsd sbsd(name) ((1 size 1))

2. 啟動子系統:

strsbs sbsd(name)

將私有儲存池加入已建立的子系統中:(假定子系統中儲存池3可用)

1. 將儲存池3加入子系統定義:

chgsbsd sbsd(name) ((3 size 1))

如何確定檔案的大小和檔案的活動:

1. 檔案活動

a. 對於您要調查的檔案執行效能工具dspaccgrp命令,並將結果輸出到乙個輸出檔案中;

b. 使用效能工具anzaccgrp命令,分析哪個檔案具有最高的i/o特性;

另乙個方法是使用命令wrkjob,選項14.顯示開啟的檔案。該命令可以顯示當前開啟的檔案,並以檔名,i/o操作的數量排列。

2. 檔案大小

可以使用dspfd命令來確定檔案的大小。但是通常用setobjacc將檔案裝入記憶體時所用到的空間大小,將比您用dspfd命令檢視時大20kb - 30kb的記錄空間。

如果乙個檔案中有很多被刪除的記錄,並且您沒有使用"重用刪除記錄"的選項,那麼,最好在做之前,整理這些被刪除的記錄占用的空間。

將乙個程式裝入記憶體時用到的空間將比用dspobjd命令中看到的物件大小要少;但是確切使用了多少空間將顯示在命令setobjacc執行結束後顯示的訊息cpc1141中。

1.3 如何使用 setobjacc 

1. 一旦檔案被調入記憶體,資料庫讀的操作將會很少,但是對於資料庫寫操作還會和以前一樣。資料庫寫操作通常是非同步的。由於檔案被調入記憶體,所以資料庫讀操作會處理得很快,這樣就會造成資料庫寫操作產生過多的系統輸出,這樣使得很多資料庫寫操作回被非同步地執行,使用者會感覺作業執行並不象預期希望的那樣快。經管如此,還是會比不執行setobjacc快。

2. 如果乙個物件沒有全部放入儲存池,那麼該物件的一部分將在setobjacc的過程中被覆蓋;

3. 每一次setobjacc都會假設整個儲存池都是可用的。因此,儲存池現存的物件都可能被覆蓋,以滿足當前的請求。使用setobjacc *purge功能,可以避免該問題。 

4. 物件的裝入是非同步的,以塊來傳遞磁碟的操作的。

由於setobjacc是同時非同步提交的,所以如果要裝入的物件比儲存池大,將不能保證首先裝入的部分不被後裝入的部分覆蓋;

5. 如果乙個物件只被裝入了一部分,那麼會引起作業所在的儲存池的錯誤,同時有可能在處理記錄追加時出錯;

6. 在沒有執行setobjacc *purge 或 clrpool 之前,資料庫寫操作是最有可能造成錯頁的。如果乙個儲存池中的某個頁面是被用命令setobjacc保留的,那麼只有執行另一條setobjacc命令才能將其替代;

7. setobjacc命令總是盡可能地在第一次將物件清除出記憶體的時候將所有的頁面放在特定的儲存池中,如果有其它作業要使用到這些物件時,它們可能被重新裝入另乙個儲存池中。

可以使用xmp格式預設嗎 強制傳喚可以使用警械嗎

強制傳喚是針對行政案件的,特別是違反治安管理處罰法的行為人,如果行為人沒有正當的理由而拒絕公安機關傳喚的,那麼可以強制傳喚。一 強制傳喚可以使用警械嗎 可以使用警械。強制傳喚,是公安機關在辦理行政案件時,對無正當理由不接受傳喚或者逃避傳喚的違反治安管理的違法嫌疑人,使用強制方法將其帶至公安機關或指定...

vim 中可以使用 s 命令來替換

1.全域性替換 1 v g 選定全部,然後輸入 s 原始字串 目標字串 2 s 原始字串 目標字串 2.清除頁面中所有行尾的空白符 s s 3.清除所有空白 s s n r 4.去掉所有的 注釋 s s 5.去掉所有的 注釋 s s s 6.做某些內部資料重複替換 有些時候我們需要組織一些批量的資料...

Git 指定轉殖日誌可以使用命令

git 提交歷史一般常用兩個命令 在使用 git 提交了若干更新之後,又或者轉殖了某個專案,想回顧下提交歷史,我們可以使用 git log 命令檢視。針對我們前一章節的操作,使用 git log 命令列出歷史提交記錄如下 git log commit d5e9fc2c811e0ca2b2d28506...