Fabric & Premium 容量のスムージングとスロットリング

## Premium 容量、Fabric 容量とは？
Fabric アイテムを作成・使用したり、Power BI の参照ユーザーに対して有償のユーザー ライセンスを割り当てることなく (人数制限なく) 共有したり (※)、Power BI を含む Fabric の Copilot を使用したり (※) するために必要なのが Premium 容量あるいは Fabric 容量です。
P1 とか F64 とかのサイズ (SKU) を契約して使用します。サイズによって使用可能なリソースに上限が設定されていて、その範囲内で利用することができます。
サイズとしては P1 = F64 なのですが、この時使用できるのが 64CU (Capacity Unit) となります。

::: note
 (※) の用途には Fabric 容量の場合 F64 以上が必要です。
:::

面倒なので、以降まとめて **Fabric 容量** として書いていきます。
Fabric 容量の素晴らしいところは、CU使用量を分割して計上してくれることです。これにより、**一時的に**容量サイズを超えるような重い処理を実行することが可能になります。
この記事ではこの使用率の計算の仕組みをざっくりと説明してみます。
詳細はこちらのドキュメントをご覧ください。

https://learn.microsoft.com/ja-jp/fabric/enterprise/throttling

# CU使用率の計算方法
クレジットカードの場合、限度額が50万円の場合、100万円の品物は一括払いでは購入できませんが、分割払いなら買えますよね。月の限度額を超えて欲しい物をすぐに手に入れられますが、分割して負債が残り、負債が月の限度額に達するまでは、更にお買い物できます。
Fabric 容量の使用率の計算は同じような仕組みになっていて、実際は SKU サイズを超えた処理をすぐに実行してくれるけど、使用量としては分割して計算してくれます。すべての操作で使用されたCUは 24時間または 5分間に渡って平滑化=分割されます。分割の単位は 30秒です。30秒ごとに使用率を評価します。
(分割するのに手数料がかかりません。すごく親切だと思いませんか？)

分割した使用量は、実際の処理が終わっていても24時間または5分間残ります。30秒ごとに使用率を評価するので、評価のタイミングで上限となるCUは、64CU の場合、64*30=1,920 **CU秒** です。この 1,920 CU秒を 100% としてCU使用率 = CU% が算出されます。

Fabric 容量の消費量を監視する [Fabric Capacity Metrics アプリ](https://learn.microsoft.com/ja-jp/fabric/enterprise/metrics-app) の右上の Utilization グラフ (下図の右側) は、この分割された使用量を%で表しています。左上のグラフで特定の日を選択すると、右上のグラフはその日のCU使用率を30秒ごとの棒グラフで表示します。
![fabric-cross-filter.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/eb8a9bc7-bc72-a743-05b1-7507e8abda05.gif)

:::note
サイズを超えた処理能力で実行することをバースティング、
使用量を分割して計算することを**スムージング** (Smoothing) と言います。
分割された使用量が積み重なって上限に達してしまうと、操作に制限がかかります。これを**スロットリング** (Throttling) と言います。
(上限に達したらすぐに制限がかかるわけではありません。これについては後述します。)
:::

# 操作の種類とスムージング
「すべての操作は**24時間または5分間**に渡って分割されます」と書きましたが、操作の種類によってスムージングの内容が変わります。
Fabric 容量での操作はバックグラウンドとインタラクティブのどちらかに分類されます。
分類についてはこちらのドキュメントをご覧ください。

https://learn.microsoft.com/ja-jp/fabric/enterprise/fabric-operations

Power BI で言うと、セマンティック モデルの更新はバックグラウンド操作、レポートの閲覧はインタラクティブ操作となります。
バックグラウンド操作は24時間にわたって、インタラクティブ操作は5分間にわたってスムージングされます。
CUは30秒ごとに評価するので、バックグラウンド操作の場合は24時間で2,880分割され (24\*60\*2)、インタラクティブ操作は5分間なので10分割されます。
絵にすると次のようになります。(イメージなので正確ではありません)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/9ba0c698-1929-aba7-2874-711527d10368.png)

# スロットリング
スムージングにより分割されたCU使用量 (負債) は、操作の数だけ積みあがっていきます。繰り越された負債が上限に達すると、利用制限 = **スロットリング** が発生します。ただし 100% に達成したらすぐ制限されるのではなく、さらに向こう10分間に使用できるCUリソースを消費すると制限を開始します。
制限は実行中の操作には影響しません。まず影響を受けるのはインタラクティブな操作 (対話型の操作) です。下図のように設定されています。
| 使用量 | 制限 | 操作への影響 |
|:-:|:-:|:-|
| 使用量 <= 10分 | 超過分の保護 | ジョブは、スロットリングなしで将来 10 分間の容量使用量を消費できます。 |
| 10 分 < 使用量 <= 60 分 | 対話型の遅延 | ユーザーが要求した対話型ジョブは、送信時に 20 秒だけ遅延されます。 |
| 60 分 < 使用量 <= 24 時間 | 対話型の拒否 | ユーザーが要求した対話型ジョブは拒否されます。 |
| 使用量 > 24 時間 | バックグラウンドの拒否 | すべての要求が拒否されます。 |

スロットリングの詳細はこちらのドキュメントをご覧ください。

https://learn.microsoft.com/ja-jp/fabric/enterprise/throttling

:::note warn
Microsoft は、お客様の容量使用量を管理する必要性のバランスを取りつつ、お客様がサービスを利用するうえでの柔軟性を向上させるように努めています。 このため、Microsoft はファブリックの調整 (Throttling) ポリシーを変更または更新する場合があります。
:::

## スロットリングする前に通知する方法
容量管理者は、容量の設定画面で、CU使用率に対してしきい値を指定して通知を送信するよう設定することができます。15分ごとに容量を確認して、条件に合致すると指定したユーザーにメールが送信されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2668909/1e02d655-7336-7697-dd71-4d1534c421ce.png)

詳細はこちらをご覧ください。

https://learn.microsoft.com/ja-jp/fabric/admin/service-admin-premium-capacity-notifications

## スロットリングからの回復方法
スロットリングが発生すると、バックグラウンド操作は24時間にわたってスムージングされているため、放っておくと解消するのが24時間後だったりします。Power BI レポートの閲覧に影響が出るため、早急に解消したくなると思います。対応方法は Premium 容量と Fabric 容量で異なります。

### Premium 容量におけるスロットリングの回避方法
Premium 容量の場合、**自動スケーリング**一択です。容量に対する対話型操作に遅延が発生すると、超過分をカバーするために自動スケーリングによりCUが追加されます。利用には Azure サブスクリプションが必要です。自動スケーリングはサイズアップするのと比較して割高なので、スロットリングの頻度が高い場合には、スケールアップする (容量のサイズを上げる) かスケールアウトする (もう一つ容量を追加して、一部のワークスペースを新しい容量に割り当てる) ことを検討してください。また、**既にスムージングされているCUを解消することはできない**ことに注意してください。

### Fabric 容量におけるスロットリングの回避方法
Fabric 容量は現在、自動スケーリングの設定はできないため、**手動でスケールアップし、問題が解消したら手動でスケールダウンします。** 手動なので、24時間を待たずにサイズを元に戻すことができます。
また、**容量を一時停止することで負債を繰り上げ返済**することができます。繰り上げ返済なので、**停止したタイミングで ~~超過分~~ 残っているCUの課金が発生する**ことに注意してください。

Premium 容量、Fabric 容量のどちらにも**サージ保護**という新しい手段が提供されています。別記事を書いているので、こちらをご覧ください。

https://qiita.com/ayumito/items/e4ec43bf5a6e7e4a6d8a

それでは、快適な容量ライフを！