4

私はトランザクショナル メモリと、システム プログラミング (データベース、オペレーティング システム、サーバーなど) の実行可能性についていくつかの作業を行ってきました。トランザクションを使用した私自身の経験と、実際のコードでトランザクションを使用するコミュニティがいかに少ないかを見てきたことから、次のような疑問が生じました。実動コードを作成している開発者が、業務にトランザクション メモリを使用することを納得させるにはどうすればよいでしょうか?

一般採用になるのでしょうか?高速?信頼性の向上?いくらで?


まだ見ていない方のために説明すると、メモリ トランザクションはデータベース トランザクションのように動作します。操作は (明らかに) 並行して進行し、2 つのトランザクション間で競合が発生した場合 (両方とも同じ値を書き込むなど)、トランザクションの一方または両方が実行されます。ロールバックされて再起動されます。

トランザクション メモリにはいくつかの利点があります。

  1. 信頼性デッドロックから完全に解放されます (たとえば、間違った順序のロック)。
  2. パフォーマンスロックの競合が少ない場合は速度が向上します。
  3. プログラマビリティ 多くの同期オブジェクトを管理せずに、きめ細かい同時実行制御を実現します。

ただし、 TM が正しく、完全で、高速に実装されていると仮定しても、ロックと比較すると、このプリミティブには既知の欠点があります。

  1. トランザクションは数回実行される可能性があるため、経験的な実験以外でパフォーマンスを予測することはより困難です。

    パフォーマンスのバグを再現できますか?

  2. 正しい実装間で異なるポリシー決定がいくつかあります。たとえば、別のトランザクション内で終了するトランザクションはどうなりますか? 今コミットしますか、それとも待ちますか?

    コードの局所的な効果を十分に理解できるでしょうか?

  3. ロールバックされるトランザクションで取消不能な動作 (「ミサイル発射」コマンドの送信など) をサポートするために、ランタイムはより複雑になります。

    コードのグローバルな影響を適切に理解できますか?

最後に、ソフトウェア実装が最初に使用される可能性が高いため (いくつか例を挙げると、C、C++、Haskell、Clojure、および Scala には既に実装があります)、実際にはパフォーマンスの問題があります。競合が中程度の場合、ソフトウェア トランザクションはパフォーマンス ヒットを伴います。

パフォーマンスの予算はいくらですか? メリットが潜在的なコストを上回るのはどの時点ですか?

4

3 に答える 3

3

私はTBoost STMでいくつかの実験を行いましたが、使用できるように見えますが、製品版での使用はまだ快適ではありません。ただし、必要な考え方の変化は重要であるため、実際のアプリケーションで説得力のある利点が示されない限り、それが普及するとは思えません。

周波数が 2 倍になったように、CPU のコア数が 2 倍になり始めると、未来は超並列コンピューティングになるとよく耳にします。これまでのところ、4 コアおよび 8 コアのデスクトップは、一般的なワークロードに役立つとは言えません。私たちには鶏が先か卵が先かという問題があると思います: 並列マシンの採用は、最大限に活用できるソフトウェアを待っているのに対し、高度な並列ソフトウェアの主流の開発は、高度な並列ハードウェアの普及を待っています。

おそらく必要なのは、Web サーバーのようなものに STM モデルを採用するためのオープンソース ソフトウェア プロジェクトだと思います。このような成功したプロジェクトは優れたモデルであり、STM が現実の世界に対応できることを証明することで、ソフトウェア業界全体の関心を高めるのに役立つ可能性があります。

于 2009-11-19T17:41:11.377 に答える
3

いくつかのこと:

1) ソフトウェア トランザクショナル メモリ (STM) システムは、堅牢で信頼性が高く、実際に機能するようにテストされている必要があります。

2) 競合していない STM トランザクションのパフォーマンス オーバーヘッドは、競合していないロックを使用した同じルーチンと同等である必要があります。

3) STM システムは、複数のトランザクションが保留中の場合と、競合するリソースでロックを使用する場合のパフォーマンスが大幅に向上する必要があります。

于 2009-11-19T17:45:01.323 に答える
0

STM システムがユーザーの採用に提供しなければならない基準がいくつかあると思います。

単純さ:トランザクションの使用は、理論的にはロックを使用するよりも単純ですが、実際には使用する理由がないわけではありません。

パフォーマンス:ユーザーは、パフォーマンスがロックを使用するよりも少し遅いことを受け入れることができますが、それほど遅くはありません。

非トランザクションの世界との相互作用:トランザクションのみの世界でのみ機能する STM システムは、レガシー システムで作業する必要があるプロジェクト、または他のパラダイムを使用してより適切に解決できる他の制約があるプロジェクトで働く人々にとって成功することはできません。

正確性:ユーザーは、使用しているシステムがその基盤と実装において正しいことを確信する必要があります。現在の STM システムのほとんどは製品の段階にないため、人々は不安定なバージョンに一瞬苦しむことができます。

デバッグ ツール:デバッガ ツールは、この新しいパラダイムに適合させる必要があります (少なくとも STM システムが言語に組み込まれている場合)。これは、競合が発生した場合に同じコードが複数回実行されると、デバッグがより複雑になる可能性があるためです。

于 2010-05-18T12:55:24.397 に答える