論文の概要: Unveiling and Vanquishing Goroutine Leaks in Enterprise Microservices: A
Dynamic Analysis Approach
- arxiv url: http://arxiv.org/abs/2312.12002v1
- Date: Tue, 19 Dec 2023 09:49:31 GMT
- ステータス: 処理完了
- システム内更新日: 2023-12-20 16:14:51.902781
- Title: Unveiling and Vanquishing Goroutine Leaks in Enterprise Microservices: A
Dynamic Analysis Approach
- Title(参考訳): エンタープライズマイクロサービスにおけるGoroutineリークの発見と回避 - 動的分析アプローチ
- Authors: Georgian-Vlad Saioc, Dmitriy Shirchenko, Milind Chabbi
- Abstract要約: 2500行以上をホストするUberのGoモノレポの7500万行で,メッセージパッシング部分デッドロックの頻度を調査した。
GoleakとLeakProfは、単体テスト中に部分的なデッドロックを検出し、新しいバグを発生させないように設計されている。
- 参考スコア(独自算出の注目度): 1.4548651568912525
- License: http://creativecommons.org/licenses/by-nc-sa/4.0/
- Abstract: Go is a modern programming language gaining popularity in enterprise
microservice systems. Concurrency is a first-class citizen in Go with
lightweight ``goroutines'' as the building blocks of concurrent execution. Go
advocates message-passing to communicate and synchronize among goroutines.
Improper use of message passing in Go can result in ``partial deadlocks'' , a
subtle concurrency bug where a blocked sender (receiver) never finds a
corresponding receiver (sender), causing the blocked goroutine to leak memory,
via its call stack and objects reachable from the stack.
In this paper, we systematically study the prevalence of message passing and
the resulting partial deadlocks in 75 million lines of Uber's Go monorepo
hosting over 2500 microservices. We develop two lightweight, dynamic analysis
tools: Goleak and LeakProf, designed to identify partial deadlocks. Goleak
detects partial deadlocks during unit testing and prevents the introduction of
new bugs. Conversely, LeakProf uses goroutine profiles obtained from services
deployed in production to pinpoint intricate bugs arising from complex control
flow, unexplored interleavings, or the absence of test coverage. We share our
experience and insights deploying these tools in developer workflows in a large
industrial setting. Using Goleak we unearthed 857 pre-existing goroutine leaks
in the legacy code and prevented the introduction of around 260 new leaks over
one year period. Using LeakProf we found 24 and fixed 21 goroutine leaks, which
resulted in up to 34% speedup and 9.2x memory reduction in some of our
production services.
- Abstract(参考訳): Goは現代のプログラミング言語であり、エンタープライズマイクロサービスシステムで人気を博している。
ConcurrencyはGoの第一級市民で、軽量な‘goroutines’を並列実行のビルディングブロックとして持つ。
Goはメッセージパッシングを提唱し、Goroutine間で通信し、同期する。
これは、ブロックされた送信側(受信側)が対応する受信側(sender)を見つけず、ブロックされたgoroutineがそのコールスタックとスタックから到達可能なオブジェクトを介してメモリをリークする、微妙な並行性のバグである。
本稿では,2500以上のマイクロサービスをホストするuberのgo monorepoの7500万行において,メッセージパッシングと結果として生じる部分デッドロックの発生状況について体系的に検討する。
GoleakとLeakProfという,部分的なデッドロックを特定するための2つの軽量な動的解析ツールを開発しました。
goleakはユニットテスト中に部分的なデッドロックを検出し、新しいバグの発生を防ぐ。
逆にLeakProfは、運用環境にデプロイされたサービスから得られたゴロインプロファイルを使用して、複雑な制御フローや探索されていないインターリーブ、テストカバレッジの欠如に起因する複雑なバグを特定できる。
私たちは、これらのツールを大きな産業環境で開発者ワークフローにデプロイした経験と洞察を共有しています。
goleakを使って、レガシーコードの既存のgoroutineリークを857件発見し、1年間で約260件の新たなリークが発生するのを防いだ。
leakprofを使用することで,24と21のgoroutineリークが修正され,最大34%のスピードアップと9.2倍のメモリ削減を実現しました。
関連論文リスト
- JailbreakBench: An Open Robustness Benchmark for Jailbreaking Large Language Models [123.66104233291065]
ジェイルブレイク攻撃は、大きな言語モデル(LLM)が有害、非倫理的、またはその他の不快なコンテンツを生成する原因となる。
JailbreakBenchは、jailbreak攻撃を評価するためのオープンソースのベンチマークである。
論文 参考訳(メタデータ) (2024-03-28T02:44:02Z) - AdaShield: Safeguarding Multimodal Large Language Models from Structure-based Attack via Adaptive Shield Prompting [54.931241667414184]
textbfAdaptive textbfShield Promptingを提案する。これは、MLLMを構造ベースのジェイルブレイク攻撃から守るための防御プロンプトで入力をプリペイドする。
我々の手法は、構造に基づくジェイルブレイク攻撃に対するMLLMの堅牢性を一貫して改善することができる。
論文 参考訳(メタデータ) (2024-03-14T15:57:13Z) - Make LLM a Testing Expert: Bringing Human-like Interaction to Mobile GUI
Testing via Functionality-aware Decisions [23.460051600514806]
GPTDroidは、モバイルアプリ向けのQ&AベースのGUIテスティングフレームワークである。
機能認識型メモリプロンプト機構を導入する。
アクティビティのカバレッジが32%向上し、より高速な速度で31%のバグを検出する。
論文 参考訳(メタデータ) (2023-10-24T12:30:26Z) - Hyperfuzzing: black-box security hypertesting with a grey-box fuzzer [2.2000560351723504]
LeakFuzzerは、非干渉セキュリティプロパティとセキュリティフローポリシーを神託として使用することで、技術の状態を前進させる。
LeakFuzzerは、通常のファジィザが検出できるのと同じエラーセットを検出し、セキュアな情報フローポリシー違反を検出することができる。
論文 参考訳(メタデータ) (2023-08-17T16:15:02Z) - rCanary: Detecting Memory Leaks Across Semi-automated Memory Management
Boundary in Rust [4.981203415693332]
Rustはコンパイル時の検証を通じてメモリ安全性を保証するシステムプログラミング言語である。
リソースの自動配置を容易にするために、新しいオーナシップベースのリソース管理モデルを採用している。
半自動境界における漏洩を検出するために,非侵襲的で完全自動化されたモデルチェッカーであるrCanaryを提案する。
論文 参考訳(メタデータ) (2023-08-09T08:26:04Z) - Exploring Continual Learning for Code Generation Models [80.78036093054855]
継続的学習(CL)は、コードドメインの中でまだ過小評価されていない重要な側面である。
コード生成,翻訳,要約,改良など,幅広いタスクをカバーするCodeTask-CLというベンチマークを導入する。
即時選択機構の不安定な訓練により,プロンプトプール (PP) などの有効手法が破滅的な忘れ込みに悩まされることが判明した。
論文 参考訳(メタデータ) (2023-07-05T16:58:39Z) - Teaching Large Language Models to Self-Debug [62.424077000154945]
大規模言語モデル(LLM)は、コード生成において素晴らしいパフォーマンスを達成した。
本稿では,大規模言語モデルで予測プログラムを数発のデモでデバッグする自己デバッグを提案する。
論文 参考訳(メタデータ) (2023-04-11T10:43:43Z) - Using Developer Discussions to Guide Fixing Bugs in Software [51.00904399653609]
我々は,タスク実行前に利用可能であり,また自然発生しているバグレポートの議論を,開発者による追加情報の必要性を回避して利用することを提案する。
このような議論から派生したさまざまな自然言語コンテキストがバグ修正に役立ち、オラクルのバグ修正コミットに対応するコミットメッセージの使用よりもパフォーマンスの向上につながることを実証する。
論文 参考訳(メタデータ) (2022-11-11T16:37:33Z) - DeepDebug: Fixing Python Bugs Using Stack Traces, Backtranslation, and
Code Skeletons [5.564793925574796]
本稿では,大規模な事前学習型トランスを用いた自動デバッグ手法を提案する。
まず、合成バグを生成するために、逆コミットデータにバグ生成モデルをトレーニングすることから始めます。
次に、テストを実行できる10Kリポジトリに焦点を当て、テストをパスすることでカバーされるすべての関数のバグの多いバージョンを作成します。
論文 参考訳(メタデータ) (2021-05-19T18:40:16Z) - Generating Bug-Fixes Using Pretrained Transformers [11.012132897417592]
実世界のgithubからマイニングしたjavaメソッドのバグの検出と修正を学ぶ,データ駆動型プログラム修復手法を導入する。
ソースコードプログラムの事前トレーニングは,スクラッチからの教師ありトレーニングに比べて,33%のパッチ数を改善することを示す。
我々は,標準精度評価基準を非削除および削除のみの修正に洗練し,我々の最良モデルが従来よりも75%多くの非削除修正を生成することを示す。
論文 参考訳(メタデータ) (2021-04-16T05:27:04Z) - Self-Supervised Log Parsing [59.04636530383049]
大規模ソフトウェアシステムは、大量の半構造化ログレコードを生成する。
既存のアプローチは、ログ特化や手動ルール抽出に依存している。
本稿では,自己教師付き学習モデルを用いて解析タスクをマスク言語モデリングとして定式化するNuLogを提案する。
論文 参考訳(メタデータ) (2020-03-17T19:25:25Z)
関連論文リストは本サイト内にある論文のタイトル・アブストラクトから自動的に作成しています。
指定された論文の情報です。
本サイトの運営者は本サイト(すべての情報・翻訳含む)の品質を保証せず、本サイト(すべての情報・翻訳含む)を使用して発生したあらゆる結果について一切の責任を負いません。