はてブログ

はてなブックマーク新着エントリーの過去ログサイトです。



タグ GVL

新着順 人気順 5 users 10 users 50 users 100 users 500 users 1000 users
 
(1 - 5 / 5件)
 

Datadog Continuous Profiler を用いて、ボトルネックが Ruby の GVL であることを発見した

2024/07/31 このエントリーをはてなブックマークに追加 9 users Instapaper Pocket Tweet Facebook Share Evernote Clip Datadog ボトルネック Ruby アプリケーション 監視

Datadog Continuous Profiler を用いて、ボトルネックが Ruby の GVL であることを発見した こんにちは、terandard です。 弊社では Datadog を用いてアプリケーションやサーバーの監視を行っています。 以前からリクエストがスパイクした際にアプリケーション全体が遅延する問題があったので、Datadog Continuous Profi... 続きを読む

Rubyの(グローバル)VMロックをトレースする(翻訳)|TechRacho by BPS株式会社

2022/09/02 このエントリーをはてなブックマークに追加 5 users Instapaper Pocket Tweet Facebook Share Evernote Clip Ruby 翻訳 TechRacho by BPS株式会社

興味が湧いてきましたか?自分でトレースを生成する詳しい方法は以下をお読みください。 GVLとは何か RubyのVM(仮想マシン)は巨大なプログラムで、大半がC言語で書かれています(JRubyやTruffle Rubyについてはまたの機会に😁)。 Rubyアプリケーションでスレッドを作成すると、Ruby VMはそれらのスレッドをOSのスレッ... 続きを読む

Rubyのスレッドはタイムスライスで切り替わる? | Kishima blog

2018/04/26 このエントリーをはてなブックマークに追加 24 users Instapaper Pocket Tweet Facebook Share Evernote Clip Ruby スレッド ネイティブスレッド トリガー 方式

( English Version ) Rubyのスレッド切り替えのトリガーは? 昨日参加したkawasaki.rb で、スレッドの実行の切り替わりのタイミングがよく分からない、という話題が上がりました。 Ruby1.9でネイティブスレッドを用いた方式になったけれど、GVL(Giant VM Lock)の仕組みでIO以外の処理では同時に実行されるスレッドは1一つに制御されている、というような説明を... 続きを読む

Server::Starter を使って複数の Fluentd で1つのポートを待ち受ける - sonots:blog

2015/03/17 このエントリーをはてなブックマークに追加 95 users Instapaper Pocket Tweet Facebook Share Evernote Clip Starter sonots fluentd Server

課題Fluentd は GVL のある CRuby でしか(まだ)動かないので、マルチコアを有効に使うためには1つのホストで複数のプロセスを同時に立ち上げる必要がある。また現在の Fluentd では、それぞれのプロセスで別のポートをそれぞれ listen(2) して待ち受けることしかできない。データ送信側では送信先に複数のポートを指定して、クライアント側でラウンドロビンして負荷分散してもらう形に... 続きを読む

Rei Odaira - RubyのGVLにHTMを用いるパッチ

2014/06/24 このエントリーをはてなブックマークに追加 27 users Instapaper Pocket Tweet Facebook Share Evernote Clip htm CRuby MRI Ruby 並列プログラミング

これは何? オリジナルのRuby VMの実装(CRuby, MRI)は大域VMロック(Giant VM Lock; GVL)を用いています。GVLのおかげでVMと拡張ライブラリの開発者は並列プログラミングについて考える必要が無く実装が容易になります。しかしそのせいで、Rubyでマルチスレッドプログラムを書いても同時に一つのスレッドしか実行されないという性能上の問題がありました。一方、近年のCPUに... 続きを読む

 
(1 - 5 / 5件)