Yumeville

Holochain デベロッパーパルス No.60

パフォーマンスとゴシップの改善

概要

過去数週間にわたって、Holochain Coreは、11月にsim2hが導入された後に発生したいくつかの重大なバグとパフォーマンスの問題を修正するいくつかのリリースを出荷しました。これらの問題により、hAppのテストが困難になっていました。我々のチームの賢明な努力で、Holochain Coreとネットワーキングシミュレーターにはこれらの障害がなくなり、新しい機能の追加とHolochain Coreの大規模なパフォーマンスの改善に貢献できました。これにより読者やホロチェーンアプリ開発者にとってエキサイティングな、ユーザーへのアプリの展開、テスト、フィードバックの獲得が容易になりました!

Holoscape 0.0.4-alphaリリースには、Holochain Coreリリースで以前に導入されたコンダクターが含まれていたため、パフォーマンスが大幅に向上し、ユーザーエクスペリエンスも向上しました。また、インスタンスのzome関数呼び出しとDHT状態を表示する、デバッグビューの改善も実現しました。これは、アプリ内のレイテンシでの問題を理解するのに役立ちます。

トピック

  1. Holochain Coreで0.0.39-alpha1と0.0.40-alpha1をリリースし、開発者とユーザーが使用できるスタック提供
  2. Holoscape 0.0.4-alphaには、更新されたHolochainコンダクターが含まれ、新しいデバッグツールを提供

詳細

Holochain Coreで0.0.39-alpha1と0.0.40-alpha1をリリースし、開発者とユーザーが使用できるスタック提供

11月にsim2hをリリースし、Holochainにネットワークレイヤーを機能するように実現し、開発者がアプリケーションを半集中型テストネットに展開できるようにしました。これにより、実際のインターネット上でアプリを使用できるようになりましたがその過程で、Holochain Coreのいくつかのバグが発見されました。これらに含まれるものは:

オーバーフローするスレッド – Holochain Coreコンダクターは無制限の数のスレッドを生成していました。これは小さなテストケースでは問題ありませんでしたが、大規模な環境ではシステムが壊れてしまいます。たとえば、Zomeの呼び出しとエントリーの保持には、ルートスレッドが本来は1つしかありませんが、今回のバグでは多数のサブスレッドが生成されていました。ルートスレッドは、サブスレッドが完了するまで停止していました。
単純なタイムアウトの実装 –クエリーとDM(ダイレクトメッセージ)がスレッドを生成し、タイムアウトまでスレッドをスリープさせてから、アクションをディスパッチしていることが判明しました。
Rustテストの失敗 – インスタンスがシャットダウンされると、ステートのロックをできなかった後にreduxアクションループがパニックし、Rustテストに合格できなくなるバグもありました。
接続が失われた後、Sim2hがノードを保持してしまう – これにより、エージェントが再接続したときに問題が発生しました。
無限ゴシップループ – ソースチェーンヘッダーエントリの仮想ヘッダーは、現在のつまり動的なタイムスタンプとチェーンリンクで作成されたため、要求されるたびにエントリが異なり無限ゴシップループを引き起こしていました。

これらのバグはデッドロックとパフォーマンスの問題を引き起こし、アプリケーションをすぐに使用できなくしました。言うまでもなく、これは開発者とエンドユーザーにアプリのテストを提供する上で大きな障害となりました。

デッドロックの除去 – コードベースを調べて、上記のデッドロックのすべての原因を見つけ、それらをすべて解決しました。これには、スレッドをより効率的に管理するためのHolochain Coreプロセスの作成、タイムアウト用の最適化されたプロセスの実装、無限のゴシップループの問題の修正が含まれます。また、ノードがオフラインになった後に整頓するためにsim2hを改良しました。
ゴシップの改善 – エントリとメタデータの伝達のためのより高性能なロジックを開発し、sim2hでのテスト中のネットワーク負荷を大幅に削減しました。
パフォーマンスの向上 – Holochain Coreで長時間実行されるインスタンスで問題になったメモリリークを修正し、メモリ使用量を削減し、コア処理ループのパフォーマンスを改善しました。いくつかの重要な箇所では、これにより速度が5倍に向上し、アプリケーションを実行する体験がより良いものになりました。

これらのバグ修正によって、Holo開発者はすでにインターネット上でHoloFuelおよびその他のホロチェーンアプリのテストを開始でき、Holochain Crewチームにとっては、現時点では、バグの修正、スケーラビリティ、およびパフォーマンスの向上を重点的に行える環境が出来て来ました。また、Holochain Coreの大規模なスケールで稼働する際のパフォーマンスの微調整をすることに加えて、Holochain Coreの機能とUXの改善に注力することができます。

Holoscape 0.0.4-alphaには、更新されたHolochainコンダクターが含まれ、新しいデバッグツールを提供

Holoscapeのリリース0.0.4-alpha自体はそれほど改善されていませんが、新しいコンダクターとデバッグツールが追加されたことにより、パフォーマンスとユーザーエクスペリエンスが大幅に改善されています。

Holoscapeの0.0.4-alphaのバンドルされたコンダクターの本バージョンは、バージョン0.0.40-alpha1です。上記で述べたすべてのバグ修正と改善を含んでいます。

Holoscapeは、使いやすいhAppランタイムであることに加えて、開発者に強力なステートの検査ツールを提供します。コンソールログはすべての情報を出力しますが、その情報のほとんどは、人間が容易に理解して洞察を得るために使用できる形式で生成されていません。一方、コンダクターのデバッグツールを使用すると、エージェントのソースチェーンとDHTシャードのステートを検査できるため、何が書き込まれ、受信されたかを正確に知ることができます。これにより、問題がアプリのコードに起因するのか、DHTの最終的な一貫性のプロセスの動作に起因するのかを判断できます

このリリースでは、DHTシャードの「ホールディングキュー」、つまり検証および保存待ちのエントリとメタデータのリストを検査する機能を追加しました。これにより、エントリがまだDHTに表示されていない理由を知ることができます。依存関係によってブロックされているか、それともただインターネットの速度の問題かなど判断できます。

また、インスタンスごとのキューに入れられた、実行中の、および完了したzome関数の呼び出しを、それらに提供されたパラメーターとともに表示できます。完了したzome関数の呼び出しには戻り値も表示されます。

また、デバッグビューのレスポンシブネスを改善し、いくつかの小さなバグを修正しました。 HoloFuelアプリを例として使用して、デバッグプロセスの仕組みを説明したビデオがあります。 Holoscapeインスタンスのデバッグビューのデモビデオをご覧ください!

Holochain Crewアップデートパート2をお楽しみに!最新のHolochain Core 0.0.41-alpha3およびHoloscape 0.0.5-alphaリリースについて今度は説明します。

Holochain Core Conceptsとチュートリアル

皆さんの意見が聞きたいです!Holochainの理解に最も有益なドキュメントの作成の支援をお願いしたいと思います。Holochain Core Concepts(英語)やチュートリアル(日本語版)をすでに読んだり、完了している場合は、この簡単なスレッドに(日本語で大丈夫です!)回答して、あなたの経験についての感想や、今後あなたをどの様に支援できるか教えてください!

開発ステータス

Holochain Coreリリース: 0.0.41-alpha4| 変更ログ 次リリース:0.0.42-alpha1

Holoscapeリリース:v0.0.5-alpha

Holonixリリース:v0.0.56

Try-o-rama(エンドツーエンドテストツール)リリース:v0.3.1

出典:Performance and Gossip Improvements