網路穩定性報告:Kusama 與平行鏈

買賣虛擬貨幣

在前 5 次平行鏈拍賣後,我們監控了 Kusama 網路的穩定性。此時,網路上有 6 條平行鏈。

我們的關注點主要集中在 4 個關鍵領域:

候選專案穩定性

批准投票統計

網路連線

負載情況

我們從選擇加入的驗證器中取樣了指標,旨在收集 Prometheus 和 Grafana 的資訊,詳情請見下文。

候選專案穩定性

在理想情況下,每個平行鏈會為每 2 箇中繼鏈生成一個塊。我們可以透過將平行鏈上線期間產生的中繼鏈塊的數量除以該時間段產生的平行鏈塊的數量來確定每個平行鏈的出塊率。

下表顯示了截至為止,最近區塊編號 (#) 當前 6 個平行鏈的值。

由於所有這些平行鏈都由相同的驗證器集保護並由隨機驗證器驗證,所以驗證器向平行鏈提供的服務應該沒有較大的差異。

網路噪音的影響此時無需考慮,因為在過去的幾天裡,平行鏈沒有足夠的時間反覆暴露於支援驗證器的每個可能的組合中。但是噪音不能解釋 Shiden 與其他平行鏈之間的巨大差異,這些平行鏈主要佔據到理想值的 5% 到 10% 之間的範圍。值得注意的是,Statemine 在推出的前幾周經歷了一段不穩定的時期,這導致它每分鐘僅產生一次區塊,並且當前的資料也因最初的不穩定而有所偏差。

這種差異有兩種可能的解釋。真正的原因可能包含以下兩種:

大量平行鏈執行程式或資料

收集者與驗證者的連線性較差

目前,給收集者和驗證者產生平行鏈塊的時間視窗非常短,這使得系統變得很脆弱並且在通訊中會經歷短暫的延遲。對於這兩個問題,長期性的解決方案是改進平行鏈協議,為下一個平行鏈區塊的建立留出更長的時間。短期性解決方案是將收集者定位在地理位置上更靠近大部分驗證者節點的位置。然而,這會造成暫時的區域集中風險 —— 長期解決方案可以減輕這種風險。

批准投票

批准投票協議負責提供平行鏈的大部分安全性。它與 GRANDPA 最終協議緊密整合。總體而言,即隨機選擇節點來檢查平行鏈區塊的有效性。這一過程需要一定數量的節點來完成包含候選者的中繼鏈塊。關於有效性的爭議會升級到整個驗證器集,最終將導致至少一個驗證器被削減。

為了對批准投票進行基準測試,我們可以觀察以下幾點:

驗證者 GRANDPA 最終滯後意見

驗證者分配的平均“部分”(理想情況下 = 0)

驗證者分配和批准的數量

//最終延遲

上圖顯示的是對數比例,最大和平均塊數應該落後於中繼鏈最終確定的區塊數量。每個驗證者都有自己的觀點,基於驗證者對中繼鏈引用的每個 parachain 塊的審批狀態的感知。

大多數情況下,資料會在 2 到 5 之間。但有時會跳到 50。達到 50 個區塊有一個故障保護,實際情況是每隔幾周就會被擊中一次。

我們將提出治理解決方案,旨在 Polkadot 平行鏈釋出之前解決這些問題。

//平均部分

每個驗證器在技術上都被分配來檢查每個平行鏈塊。通常只有第 0 批驗證者被實際徵召進行檢查,並且只有在第 0 批驗證者未能出現時才會出現後續的批。

上圖表明,除了最終失速事件之外,第 50 和第 95 個百分位分配的部分通常為 0。

//分配和批准

該圖展示了驗證者在網路上的分配如何轉化為相應的批准投票。該資料與報告的最終延遲不一致,因為“過時”批准是那些在最終確定後變得無關緊要的批准。

大多數批准應該是及時的,因為它們是最終確定結果所必需的內容。此類別有可能被節點或 Grafana 誤報。在 Rococo,相應的圖表顯示了分配和成功批准近乎 1:1 的對映。

網路連線

在 Kusama 上,有 900 個驗證者,在每個會話中會隨機選擇 200 個參與平行鏈共識。每個當前的驗證器都旨在連線到當前的驗證器集以及最後 6 個會話。

許多驗證器有大約 200 個連線,這是因為它們是舊驗證器集的一部分。作為當前驗證器集一部分的驗證器應該會遇到更高連線性的峰值。我們可以看到,在很大程度上,我們在網路中檢查的驗證器是過度連線的,並且連線到其他 899 個驗證器中的大多數。

一些驗證器連線不足,並沒有像應有的那樣連入網路。儘管如此,沒有一個驗證者的連線數少於 100,因此應該向驗證者分享更多的資訊。

某些請求需要點對點通訊,因此,所有驗證器都必須透過已釋出的節點地址公開訪問。節點會自動執行此功能,節點運營商負責確保節點可達。

該圖顯示了每秒發出的塊請求數,以及不同型別的失敗數。這裡的請求型別並不重要,關鍵是“撥號失敗”(下圖中的黃線)幾乎正好是請求數量的 10%。這表明 10% 的驗證者在其釋出的地址上無法訪問。

負載(CPU 和網路)

此圖顯示了驗證器在核心中的 CPU 使用率。大多數驗證器都在 1.5-2 核心利用率範圍內。我們目前的建議是讓驗證器使用 4 核 CPU 執行,因此 CPU 利用率在預期範圍內。

此圖按任務顯示 CPU 使用情況細分。前 3 個任務支配 CPU 使用率,按序是“libp2p-node”、“network-worker”和“grandpa-voter”。這些任務主要與網路相關,這表明網路利用率的最佳化將大大降低節點的 CPU 利用率。

節點使用的大部分流量發生在 /polkadot/validation/1 網路協議上。這會彙總節點之間的所有資訊,並佔網路流量的很大一部分。該圖顯示,總體而言,驗證器的平均網路速度穩定在 400-500KB/s 之間。

節點使用的大部分請求都在塊分佈協議中。有 200 個驗證器和 1MB 的最大 PoV 值,區塊的峰值約為 15KB。在這些平均請求/響應速率下,這意味著大約 307KB/s 的輸入和 138KB/s 的輸出速度。然而,目前 PoV 非常小,因為平行鏈還沒有接近峰值交易量。

建議

總體來說,網路執行很平穩。儘管平均對等點數和網路速度在整個網路中看起來沒有什麼差錯,但仍有一些異常節點過度連線並需要承擔更高階別的負載。

在目前的環境下,隨著網際網路的快遞連線,強大的 4 核 CPU 和 64GB 記憶體是足夠的。當前網路速度大約在 8-16Mbps 的範圍內,因此典型的 100Mbps 資料中心連線足以維持最終的 5 個會話。

唯一的問題是網路遭遇的停頓。這些停頓被故障保護裝置捕獲,因此沒有造成太大損害,相關工作人員正在調查起因,並將在平行鏈在 Polkadot 上啟動之前提出解決方案。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读