CALCPARALLEL 平行計算
若要從 Essbase 預設序列計算變更為 CALCPARALLEL 平行計算,您可以變更一或兩個組態設定並重新啟動伺服器,或將指示新增至計算命令檔。
如需指示,請參閱啟用 CALCPARALLEL 平行計算。
下一個主題討論平行計算的詳細資料。
CALPARALLEL 可行性分析
Essbase 會在您啟用平行計算的每個計算通過前,評估是否可以使用平行計算的 CALPARALLEL 方法。
Essbase 會分析大綱和針對每個計算通過要求的計算。請記住,一個計算可能需要多次計算。某些情況可能會建立多次傳遞的需求,包括動態計算、標記為二次傳送的成員存在,或建立特定種類相依性的計算。請參閱計算通過。
如果 Essbase 判斷使用 CALPARALLEL 方法的平行計算是可能的,則 Essbase 會將計算分割成彼此獨立的較小任務。在計算期間, Essbase 會同時執行較小的任務。
不過,如果參與階段的公式之間存在複雜的相互相依性, Essbase 會重新排序至序列計算。這類互相依性可能會導致無法進行平行計算。
請考量 FIXPARALLEL 方法是否更適合您的使用案例。請參閱 FIXPARALLEL 平行計算。
CALCPARALLEL 平行計算準則
您的 Essbase 大綱結構與應用程式設計會決定是否啟用平行計算可提升計算效能。在您啟用 CALCPARALLEL 樣式的平行計算之前,請先檢閱下列指導方針,以協助您獲得完整效益。
-
計算中存在的一或多個公式可能會阻止 Essbase 使用 CALCPARALLEL 平行計算 (即使已啟用)。如需可強制序列計算 (不論平行計算設定為何) 的公式描述,請參閱 CALCPARALLEL 平行計算與其他 Essbase 功能之間的關係。
-
計算工作會沿著大綱的最後一個 n 稀疏維度產生。這些用於識別任務的稀疏維度稱為任務維度。Essbase 會動態選取任務維度的數目 n,或者您可以指定計算命令 SET CALCTASKDIMS (或應用程式組態設定 CALCTASKDIMS) 的值來覆寫數字。
根據維度的實際大小 (如 MaxL 敘述句查詢資料庫 DBS-NAME 取得 dbstats 維度所報告) 將大綱中的稀疏維度從最小到最大排序。此排序建議與最佳化計算器快取大小的建議一致,並與其他大綱建議一致。如需可能需要使用其他維度 (超過最後一個稀疏維度) 的情況說明,以及有關如何增加所使用稀疏維度數目的指示,請參閱識別平行計算的其他工作。
-
CALCPARALLEL 平行計算在非分割的應用程式和這些分割的應用程式上有效:
-
複製的分割區
-
如果計算發生在目標資料庫,則為通透分割區。計算指令碼中 SET CALCTASKDIMS 所指定的稀疏維度數目必須設為 1。如需使用平行計算搭配透明分割區所施加的限制資訊,請參閱 CALCPARALLEL 平行計算與其他 Essbase 功能之間的關係;如需使用 SET CALCTASKDIMS 的相關資訊,請參閱識別平行計算的其他任務。
-
-
與 MDX 查詢或報表指令碼相比,更新交易 (例如計算和資料更新) 更耗資源。
CALCPARALLEL 平行計算與其他 Essbase 功能之間的關係
如果您在 Essbase 立方體中使用 CALCPARALLEL 平行計算,請考慮擷取效能、公式、計算器快取點陣圖和透明分割區的相關限制。
擷取效能
將最大稀疏維度置於大綱結尾以獲得最大平行計算效能,可能會降低擷取效能。
公式限制
某些公式的存在可能會強制序列計算。下列公式安置可能會強制進行序列計算:
-
密集成員上的公式,包括所有已儲存成員,以及任何已儲存成員可能相依的「動態計算」成員,這會導致維度成員的相依性,該成員用來識別平行計算的任務。
-
包含在使用 @VAR、@ARRAY、@XREF 或 @XWRITE 之計算指令碼中所宣告變數參考的公式。請考慮改用 FIXPARALLEL 進行平行計算。
-
使用 @XREF 的稀疏維度成員公式,稀疏成員的維度已完全計算。當 @XREF 在密集「動態計算」成員上,且在批次計算期間不相依於其他儲存成員時,不會強制序列計算。
-
導致循環相依性的成員公式。例如,成員 A 有參照成員 B 的公式,而成員 B 有參照成員 C 的公式,而成員 C 有參照成員 A 的公式。
-
密集或稀疏成員上的公式,其相依於維度的成員或成員,用來識別平行處理的任務。
-
包含來自其他稀疏維度之成員參照的稀疏維度成員公式。
如果您需要使用可能阻止平行計算的公式,請考慮使用 FIXPARALLEL。否則,您可以將公式的成員標示為「動態計算」,或從計算範圍中排除公式。若要查看公式是否阻止平行計算,請檢查應用程式日誌。如需相關的錯誤訊息,請參閱監督 CALCPARALLEL 平行計算。
計算機快取
計算通過開始時, Essbase 會檢查計算器快取大小與平行程度,然後使用適用於最大效能的計算器快取點陣圖選項。因此,用於平行計算的點陣圖選項可能會與用於序列計算的點陣圖選項不同。
例如,假設 Essbase 執行序列計算,並使用多個點陣圖和單一錨定維度。如果沒有明確變更計算器快取大小, Essbase 可能只使用單一點陣圖和單一錨定維度來執行平行計算。
您可以透過在每次計算傳送的開始時檢查應用程式日誌,來決定控制點陣圖選項的計算機快取模式,類似於下列項目:
Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.在多個點陣圖模式中使用平行計算時,可能會發生高記憶體使用量。如果是,您可以使用配置設定 PARCALCMULTIPLEBITMAPMEMOPT ,以在多個點陣圖模式下將記憶體使用最佳化。This setting can be used with, or separately from, MULTIPLEBITMAPMEMCHECK. 若要啟用 PARCALCMULTIPLEBITMAPMEMOPT,請將下列項目新增至您的應用程式組態:
PARCALCMULTIPLEBITMAPMEMOPT TRUE通透分割區限制
使用通透分割區的平行計算具有下列限制:
-
除非在目標進行計算,否則您無法在通透分割區之間使用平行計算。
-
您必須將任務維度設為 1。若要這麼做,請使用 SET CALCTASKDIMS 計算命令或 CALCTASKDIMS 組態設定。
-
您必須增加計算機快取,才能使用多個點陣圖。您可以識別計算機快取模式,以控制點陣圖選項,方法是在每次計算階段開始時檢查應用程式日誌,找出類似以下的項目:
Multiple bitmap mode calculator cache memory usage has a limit of [50000] bitmaps.
檢查目前的 CALCPARALLEL 設定值
您可以檢查您計畫使用的應用程式組態或計算命令檔,以查看是否已為 Essbase 立方體啟用 CALCPARALLEL 樣式平行計算。
若要檢查是否已在應用程式層級啟用 CALCPARALLEL 樣式平行計算,請搜尋組態參數 CALCPARALLEL ,然後檢查其指定的值。
或者,立方結構 (或計算命令檔) 可以使用 FIXPARALLEL 命令區塊進行平行計算。
對於 CALCPARALLEL,可同時執行任務以完成計算的執行緒數是由介於 1 與 128 之間的值所指定。在 64 位元平台上執行的區塊儲存 (BSO) 和彙總儲存 (ASO) 資料庫最多支援 128 個執行緒。
若要檢查計算命令檔是否設定 CALCPARALLEL 樣式平行計算,請尋找 SET CALCPARALLEL 命令。請仔細複查命令檔,因為命令檔可以多次啟用或停用平行計算。
啟用 CALCPARALLEL 平行計算
若要在 Essbase 立方體使用 CALCPARALLEL 樣式的平行計算,您可以為應用程式啟用它,或者只為一或多個計算命令檔實行它。
若要將 CALCPARALLEL 平行計算搭配 Essbase 立方體使用,請使用下列其中一種方法:
-
新增或編輯應用程式組態設定值 CALCPARALLEL 與 CALCTASKDIMS 。
-
在計算命令檔中使用 SET CALCPARALLEL 和 SET CALCTASKDIMS 計算命令。
請依照此工作流程啟用 CALCPARALLEL 樣式平行計算:
秘訣:
如果網站需要使用 CALCPARALLEL 和 SET CALCPARALLEL,您可以加以組合。例如,您可以在伺服器層次將 CALCPARALLEL 設為關閉,然後視需要使用計算命令檔來啟用和停用平行計算。
識別平行計算的其他任務
依預設, Essbase 會使用反覆技術來選取要用於 CALCPARALLEL 樣式平行計算的最佳任務維度數目。
例如,如果您在最後一個稀疏維度的成員上有一個 FIX 陳述式,則也可以包含大綱中的下一個到最後一個稀疏維度。由於這兩個維度的每個唯一成員組合都被識別為潛在任務,因此會建立更多且較小的任務,進而增加平行處理的機會並改善負載平衡。
若要指定平行計算的任務維度數目,請執行下列動作:
- 如果您不確定,請使用檢查目前 CALCPARALLEL 設定值中所述的程序,驗證是否啟用平行計算。若未啟用 CALCPARALLEL (或計算命令檔中使用的 SET CALCPARALLEL), CALCTASKDIMS 便無作用。
- 選擇性:Essbase 會選取用於平行計算之任務維度的預設數字 n,而此數字會列印在應用程式日誌檔中作為參考訊息;例如:
Parallelizing using [2] task dimensions。若要覆寫預設的 n 設定,請新增或修改應用程式的 CALCTASKDIMS 組態設定,或使用計算命令檔命令 SET CALCTASKDIMS 。 - 執行計算命令檔。
在某些情況下, Essbase 會使用較少的維度來識別 CALCTASKDIMS 或 SET CALCTASKDIMS 所指定的任務。
使用日誌訊息調整 CALCPARALLEL
小心分析日誌訊息可協助您最佳化 Essbase 如何將平行計算程序分成任務。
如果您使用 CALCPARALLEL 平行計算,可能會遇到下列日誌訊息:
Current selection of task dimensions [n] will generate insufficient number of tasks [n] for parallel calculation. See whether calculation time can be improved by increasing the number of task dimensions by one (see SET CALCTASKDIMS topic in the documentation). Also, consider using FIXPARALLEL to make custom task selections that are different from CALCPARALLEL.
如果遇到此訊息,則表示在平行計算期間, Essbase 會拒絕增加工作維度的數目,以免造成工作太小。當任務太小時,計算排程間接費用可能會帶來平行性的好處。不過,當工作太大時,平行計算執行緒可能沒有足夠的工作可以處理。
如果下一個潛在任務維度不是第一個稀疏維度,請考慮使用 SET CALCTASKDIMS 計算指令 (或 CALCTASKDIMS 組態設定) 將任務維度的數目增加一,並觀察該維度是否可提高計算速度。此外,請考慮使用 FIXPARALLEL 進行與 CALCPARALLEL 不同的自訂工作選擇 (請參閱 FIXPARALLEL 平行計算 )。
Current number of task dimensions [n] for parallel calculation might have caused too many tasks [n] to be generated. See whether calculation time can be improved by decreasing the number of task dimensions by one (see SET CALCTASKDIMS topic in the documentation). Also, consider using FIXPARALLEL to make custom task selections that are different from CALCPARALLEL.
對於平行計算,具有足夠的工作有助於減少資料偏差的影響。不過,太多任務 (即使是適當調整大小的任務) 可能會導致排程負荷超出其優點。Essbase 目標為最佳範圍。如果您看到上述訊息,表示 Essbase 嘗試透過新增一個以上的工作維度來達到建議的最少工作數;這樣做,可能會跨越工作計數的上限。
如果 Essbase 所選取的最後一個工作維度不是唯一的工作維度,請考慮使用 SET CALCTASKDIMS 計算命令 (或 CALCTASKDIMS 組態設定) 將工作維度減 1,並觀察該維度是否提高計算速度。或者,請考慮使用 FIXPARALLEL 來進行與 CALCPARALLEL 不同的自訂任務選擇。
監視 CALCPARALLEL 平行計算
您可以在應用程式日誌中檢視與平行計算相關的事件。每次計算通過時, Essbase 會將數種類型的資訊寫入應用程式日誌,以支援平行計算。
可使用平行計算時
如果您已啟用平行計算,且 Essbase 已決定可以執行平行計算, Essbase 會在應用程式日誌中寫入訊息:
Calculating in parallel with n threadsn 代表 CALCPARALLEL 或 SET CALCPARALLEL 中指定的並行工作數目。
因為公式而無法使用平行計算時
對於避免平行計算 (強制序列計算) 的每個公式, Essbase 會將訊息寫入應用程式日誌:
Formula on (or backward dependence from) mbr memberName prevents calculation from running in parallel.memberName 代表相關公式存在之成員的名稱。您可以查看應用程式日誌中的此類訊息,並考慮移除公式,或者,如果可能的話,將相關成員標記為動態計算,這樣它們就不會在計算階段發揮作用。
Essbase 會將訊息寫入應用程式日誌,指定可並行執行的工作數目 (根據資料,而非 CALCPARALLEL 或 SET CALCPARALLEL 的值):
Calculation task schedule [576,35,14,3,2,1]上方的範例訊息表示可以同時執行 576 個工作。在 576 個工作完成後,可以並行執行多 35 個工作,依此類推。
在前幾個步驟中,平行計算的優點是最大的,而且會減少執行較少的並行工作。
平行程度取決於工作排程中的工作數目。數字越大,可以平行執行更多的任務,以及提升效能。
當空白任務中的平行計算結果時
Essbase 會將訊息寫入應用程式日誌檔,指出有多少任務是空的 (不包含計算):
Info(1012681) Empty tasks [291,1,0,0,0,0]在上述範例中, Essbase 指示層次 0 的 291 工作是空的。
如果空白任務與計算任務排程中指定任務的比率大於 50% (例如,291 / 576),則由於資料模型中的稀疏程度高,平行程度可能無法改善效能。
您可以變更密集稀疏指派,以減少空白任務的數目,並提高平行計算的績效收益。