加入 PolkaWorld 社區,共建 Web 3.0!
本文是波卡的聯合創始人 Robert Habermeier 剛剛發布的關于 Kusama 首批平行鏈的網路穩定性報告!
在前 5 次平行鏈拍賣后,我們監控了 Kusama 網路的穩定性。目前 Kusama 網路上有 6 條平行鏈。
我們的監控集中在 4 個關鍵領域:
- 出塊穩定性
- 批準投票統計
- 網路連接
- 網路加載
我們從選擇加入的驗證人中進行了采樣,以通過 Prometheus 和 Grafana 兩個監測性能的工具來收集資訊,如下圖所示。
出塊穩定性
在理想情況下,協議的當前迭代中,每個平行鏈為每 2 個中繼鏈塊生成一個塊。我們可以通過將平行鏈上線期間產生的中繼鏈塊的數量除以該時間段產生的平行鏈塊的數量來確定每個平行鏈的出塊率。
下表顯示了截至最近的區塊編號 (#) 的 6 個當前平行鏈的值。
由于所有這些平行鏈都由相同的驗證人集保護并由隨機驗證人驗證,所以驗證人向平行鏈提供的服務應該沒有重大差異,
網路噪音的影響此時不值得考慮,因為在過去的幾天里,平行鏈沒有足夠的時間反復暴露于支持驗證人的所有可能組合。但是噪音當然不能解釋 Shiden(還有 Khala,在較小程度上)與其他平行鏈之間的巨大差異,這些平行鏈主要占據理想值的 5% 到 10% 之間的范圍。值得注意的是,Statemine 在推出的前幾周經歷了一段艱難的時期,這導致它每分鐘僅產生一次區塊,并且當前的數據因最初的問題而有所偏差,
這種差異有兩種可能的解釋,真正的原因可能是兩者之一或兩種都有:
1. 繁重的平行鏈執行或數據
2. 收集人與驗證人的連接性較差
目前,提供給收集人和驗證人產生平行鏈塊的時間窗口非常短,這使得系統脆弱并且在通信中經歷短暫的延遲,對于這兩個問題,長期的解決方案是改進平行鏈協議,為下一個平行鏈區塊的創建留出更長的時間。一個短期的解決方案是將收集人的地理位置更靠近大部分驗證人節點的位置,然而,這會造成暫時的區域集中風險 —— 長期解決方案可以減輕這種風險。
批準投票
批準投票協議負責提供平行鏈的大部分安全性。它與 GRANDPA 的最終性協議緊密集成。粗略地說,節點被隨機選擇來檢查平行鏈區塊的有效性。需要一定數量的節點來完成包含候選者的中繼鏈塊,并且宣布他們打算檢查但不跟進的“未出現”將被自動替換。關于有效性的爭議升級到整個驗證人集,導致至少一個驗證人被 Slash 懲罰。
為了對批準投票進行基準測試,我們可以觀察到以下幾點:
- 驗證人的 GRANDPA 最終性滯后意見
- 驗證人分配的平均“ 部分(tranche)”(理想情況下 = 0)
- 驗證人分配和批準的數量
最終延遲
上圖顯示了對數標度(logarithmic scale),應該落后于中繼鏈最終確定性的區塊數量的最大和平均意見,每個驗證人都有自己的意見,基于驗證人對中繼鏈引用的每個平行鏈塊的批準狀態的看法,
大多數情況下,這是在 2 到 5 之間,然而,它偶爾會跳到 50,這些事件有點令人震驚 —— 50 塊有一個故障保護,很明顯,每隔幾周就會被擊中一次。
目前正在調查這些最終失速事件,我們將提出治理解決方案,以在 Polkadot 平行鏈發布之前解決這個問題,
平均 Tranche
每個驗證人在技術上都被分配來檢查每個平行鏈塊,唯一的問題是什么時候 —— 通常只有第 0 批驗證人被實際征召進行檢查,并且只有在第 0 批驗證人未能出現時才會出現后續的一批。
上圖表明,除了最終失速事件外,第 50 和第 95 個百分位數分配的部分通常為 0,
分配和批準
該圖展示了驗證人在網路上的分配如何轉化為相應的批準投票,我們可以看到所有分配都被轉換為批準,盡管其中大多數報告為過時,該數據與報告的最終延遲不一致,因為“過時”批準是那些在最終確定后變得無關緊要的批準,
幾乎根據定義,大多數批準不應該是陳舊的,因為它們首先是最終確定所必需的。此類別有可能被節點或 Grafana(一個性能監測工具)誤報,在 Rococo,相應的圖表顯示了分配和成功批準的近乎 1:1 的映射。
網路連接
在 Kusama 上,有 900 個驗證人,每個 session 中隨機選擇 200 個參與平行鏈共識。每個當前驗證人都旨在連接到當前活躍驗證人集中的驗證人以及最后 6 個 session。
有許多驗證人有大約 200 個連接,這是因為它們是舊驗證人集的一部分,作為當前驗證人集的一部分的驗證人應該會遇到更高連接性的峰值。我們可以看到,在很大程度上,我們在網路中檢查的驗證人是過度連接的,并且連接到驗證對等集上的其他 899 個驗證人中的大多數。這對正確性沒有問題,但確實為提高效率提供了機會,
一些驗證人連接不足,并沒有像應有的那樣插入到傳播網路,盡管如此,沒有一個驗證人的連接數少于 100,因此資訊應該被驗證人傳播,盡管要經過更多的跳躍。
某些請求需要點對點通信,因此,所有驗證人都必須可以通過已發布的節點地址公開訪問。節點軟體自動執行此功能,但節點運營商負責確保節點可訪問,
該圖顯示了每秒發出的塊請求數,以及不同類型的失敗數,這里的請求類型并不重要,關鍵是“撥號失敗”失敗(下圖中的黃線)幾乎正好是請求數量的 10%,這表明 10% 的驗證人在其發布的地址上無法訪問。
加載 (CPU & 網路)
此圖顯示驗證人在內核中的 CPU 使用率。大多數驗證人都在 1.5-2 core 利用率范圍內。我們目前的建議是讓驗證人使用 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 個,
唯一的主要問題是網路遇到的不常見的區塊最終性的停頓(finality stalls),這些停頓被故障保護裝置捕獲,因此沒有造成太大損害,但我們正在調查根本原因,會在 Polkadot 啟動平行鏈之前提出解決方案,
原文鏈接:https://polkadot.network/network-stability-report-kusama-with-parachains/
翻譯:波卡第一中文社區
直播預告:
本周四(8 月 19 日)晚 7 點,PolkaWorld 視訊號直播準時開播,本期邀請到了 Astar 大陸區代表 sms 為大家講解 Shiden 平行鏈上線后的進展,點擊下方按鈕立即預約,