ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog インフラエンジニア見習いの森本です。これまで数年ほどサーバーサイドエンジニアとして開発ばかりをしてきた人が最近インフラエンジニアになりました。 3月末に開催された Go Conference 2017 Spring で開発チームの後藤から弊社で開発・運用している AWS S3 互換の分散オブジェクトストレージ Dragon についての発表がありました。 Goでヤフーの分散オブジェクトストレージを作った話 私は Dragon の運用を担うチームに所属しており、本稿ではその業務の中で発生したトラブルシューティングについて紹介したいと思います。 分散オブジェクトストレージ Dragon で発生していた課題 Dragon で gorout
この記事はVim Advent Calendar 2012 : ATND 245日目の記事です。 Vim scriptは実行速度が遅いことで有名ですが、どこでどれくらい時間がかかっているのかを調べたい時があります。今回はVim scriptの実行時間を計測する方法をまとめました。 起動時間を調べる 1. --startuptimeオプションを付けて起動する Big Sky :: vimmer必読!読み込みの遅いvimscriptを見つけ出す方法 $gvim --startuptime {ファイル名}Vim起動時に読み込んだスクリプトと、かかった時間をリストアップしたファイルを、ホームディレクトリに生成します。 起動時しか計測できないのと、結果がファイルに出力されるので(工夫をしない限りは)気軽に見られないということと、ファイルの見方がイマイチ分からないのが難点です(後述の:profileコ
この記事は KLab Advent Calendar 2015 の19日目の記事です。 pprof 連載最後は、 ここまでで紹介してきたプロファイラがどういう仕組みでプロファイリングしているかを解説します。 pprof が表示している値がどう計算されているのかを把握することで、よりプロファイラを理解して使いこなすことができるようになるはずです。 goroutine profile スタックダンプ (/debug/pprof/goroutine?debug=1) の出力は次のような形式でした。 ... 1 @ 0x42d2b3 0x42d374 0x414cda 0x45d981 # 0x42d2b3 runtime.gopark+0x163 /usr/local/go/src/runtime/proc.go:186 # 0x42d374 runtime.goparkunlock+0x54
このエントリーは、 KLab Advent Calendar 2015 の17日目の記事です。 pprof は Go の標準ライブラリにあるプロファイラです。 CPUを使用している部分を見つけるだけでなく、CPUを使ってないのにレイテンシが悪化するケースやメモリリークを発見したり、長時間安定して動くサーバープログラムを開発するのにとても便利です。 今日から3日間の連載でこの pprof の使い方や仕組みについて見て行きます。最初は一番基本となる CPU プロファイルの取得方法と、 go tool pprof の使い方を説明します。 Note: Macでの注意点 Mac OS X の Mavericks 以前は、 Go の CPUProfiler が利用している SIGPROF シグナルに問題があり、 CPU プロファイルを取るためにカーネルにパッチを当てる必要がありました。 この問題は E
Shiro(2010/03/25 02:58:10 PDT): 既にあるプログラムに対して、後つけで 「この手続きの間だけプロファイラをon/offできないか」という話。 http://practical-scheme.net/chaton/gauche/a/2010/03/25#entry-4bab1039-2c8af 特定の式の実行中だけプロファイリング プロファイラはScheme側からon/offできるので、コードが書き換えられるなら こんなことができる。 (define-macro (profiling expr) `(dynamic-wind profiler-start (lambda () ,expr) profiler-stop)) (profiling 式) とすれば式の実行中だけプロファイルがとれる。 例えば、適当に重い計算をでっちあげといて: (define (fib
Game of Life のアルゴリズムの問題点を探ろうと思い、以前作ったプロファイラにかけて調べることにしました。 が、このプロファイラは prototype.js (を自分用に改変したもの) を対象にした内容だったため、ライブラリを使わずに書いた Game of Life では使えません。 ということで、完全にライブラリ非依存な形に書き直してみました: var Profiler = { times: {}, scope: this, // == window watch: function() { for (var i = 0; i < arguments.length; i++) this.profile(arguments[i]); }, profile: function(klass) { this.times[klass] = {}; var proto = eval(["th
プログラムをチューニングするには、 プロファイルを取るのが効果的である。 しかし、GNU Emacs Lisp Reference Manual では、 プロファイルの使い方が説明されていない。 そこでここでは、Emacs に標準である 2 つのプロファイラ、 profile と elp について説明する。 profile profile は、素朴なプロファイラである。 profile を利用するには、 自分でプロファイルをとる関数を 変数 profile-functions-list へ列挙する必要がある。 (require 'profile) (setq profile-functions-list '(next-line previous-line)) ここで profile-functions を実行すると、 それ以降実行された対象の関数に対しプロファイルが取られる。 M-x pr
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く