apache / apache/cloudstack

Storage bandwidth is wasted during template uploads/imports

オープン
#5,697 コメント 6 件 リアクション 0 件 担当者 0 名 GitHub で見る
component:secondary-storage component:templates no-issue-activity status:stale type:improvement
主要言語
Java
スター
3.1k
フォーク
1.4k
平均マージ
6日 19時間
マージ済み PR(30日)
32

説明

At the moment when a template is being imported (via url or upload) there is a phase called "Installing template" or something similar. From what I noticed this phase calculates a hash and saves it to the database by reading the downloaded file over the storage network.
During this phase the template is not usable and I believe that should not be the case. I understand that the hash has a purpose and I am not saying it should be removed but I believe this should be an optional task that should be done in background.

In the following examples I do not consider disk speeds, just network speed/bandwidth.
For normal templates this is not necessarily noticeable. Consider this scenario (best case):
Template size: 4GB
Ingress bandwidth: 100 mb/s
Storage bandwidth: 1 gb/s
Download time required: 5.45 seconds
Installing template time required: ~0.6 seconds

Most templates (not ISOs) however are considerably larger, some could be even up to 500 GB (I do have a few templates that I have to import with very large sizes).
In such a case, installing template time required would be about 75 seconds (best case).

During this time (installing template time) the whole bandwidth available for the storage network (if it even is on a separate NIC) would be used up by this process resulting in bad performance for the cluster.

Ways to fix this would be:
1. either compute the hash as the transfer is happening.
2. make it optional (maybe even opt-in) and do it in background only (maybe even limit the bandwidth used for this)

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず「Installing template」フェーズ周辺のtemplate URL/uploadのインポート経路を追跡し、次に、ダウンロードしたファイルがストレージから再読み込みされる箇所と、そのハッシュが保存される箇所を特定します。転送とストレージからの読み取りの手順を比較します。テンプレートの利用可能性がストレージからの別個の完全な読み取りによってブロックされず、必要なハッシュが正しいまま維持され、提案するバックグラウンド処理または帯域幅の挙動が定義されていれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
java
領域
cloud, infrastructure, performance
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。