|
Posted
over 9 years
ago
by
dann
はてなBlogに移転しました
http://dann.hatenablog.com/
ツイートする
|
|
Posted
over 9 years
ago
by
dann
はてなBlogに移転しました
http://dann.hatenablog.com/
ツイートする
|
|
Posted
almost 13 years
ago
by
dann
boxen, pivotal worktationなど最近Macを開発環境として自動でセットアップするためのツールが幾つかでてきています。
このような実装を幾つか見てみましたが、各会社用に特化しているので個人では少し使いづらいため、chefの既存のレシピを使って個人用の環境をセットアップできるようにしてみました。dotfilesと同じで、個人用の開発環境のセットアップ方法をバージョン管理しながら、少しずつ育てていこうかなと思ってます。
... [More]
https://github.com/dann/chef-macbox
Mac用に使うChefのレシピとしては、hombrew, mac_os_x, dmgのレシピを使っています。
これらのレシピを使って、次のことをやっています。
必要なアプリをdmgでインストール
homebrewレシピで必要なパッケージでインストール
mac_os_xレシピでMacの設定を変更
dotfilesをgithubから取得してセットアップ
設定そのものは完全に個人に依存しているので、他の人が使えるように作ってはいませんが、少し手をいれれば、汎用の開発者用としても使えます。
macbookがリニューアルされるとつい買ってしまったりと、個人でもMacはセットアップする回数が多いと思うので、Chefで個人用開発環境を育ててみると良いんじゃないかと思います。
Happy hacking!
ツイートする
[Less]
|
|
Posted
almost 13 years
ago
by
dann
boxen, pivotal worktationなど最近Macを開発環境として自動でセットアップするためのツールが幾つかでてきています。
このような実装を幾つか見てみましたが、各会社用に特化しているので個人では少し使いづらいため、chefの既存のレシピを使って個人用の環境をセットアップできるようにしてみました。dotfilesと同じで、個人用の開発環境のセットアップ方法をバージョン管理しながら、少しずつ育てていこうかなと思ってます。
... [More]
https://github.com/dann/chef-macbox
Mac用に使うChefのレシピとしては、hombrew, mac_os_x, dmgのレシピを使っています。
これらのレシピを使って、次のことをやっています。
必要なアプリをdmgでインストール
homebrewレシピで必要なパッケージでインストール
mac_os_xレシピでMacの設定を変更
dotfilesをgithubから取得してセットアップ
設定そのものは完全に個人に依存しているので、他の人が使えるように作ってはいませんが、少し手をいれれば、汎用の開発者用としても使えます。
macbookがリニューアルされるとつい買ってしまったりと、個人でもMacはセットアップする回数が多いと思うので、Chefで個人用開発環境を育ててみると良いんじゃないかと思います。
Happy hacking!
ツイートする
[Less]
|
|
Posted
almost 13 years
ago
by
dann
boxen, pivotal worktationなど最近Macを開発環境として自動でセットアップするためのツールが幾つかでてきています。
このような実装を幾つか見てみましたが、各会社用に特化しているので個人では少し使いづらいため、chefの既存のレシピを使って個人用の環境をセットアップできるようにしてみました。dotfilesと同じで、個人用の開発環境のセットアップ方法をバージョン管理しながら、少しずつ育てていこうかなと思ってます。
... [More]
https://github.com/dann/chef-macbox
Mac用に使うChefのレシピとしては、hombrew, mac_os_x, dmgのレシピを使っています。
これらのレシピを使って、次のことをやっています。
必要なアプリをdmgでインストール
homebrewレシピで必要なパッケージでインストール
mac_os_xレシピでMacの設定を変更
dotfilesをgithubから取得してセットアップ
設定そのものは完全に個人に依存しているので、他の人が使えるように作ってはいませんが、少し手をいれれば、汎用の開発者用としても使えます。
macbookがリニューアルされるとつい買ってしまったりと、個人でもMacはセットアップする回数が多いと思うので、Chefで個人用開発環境を育ててみると良いんじゃないかと思います。
Happy hacking!
ツイートする
[Less]
|
|
Posted
almost 13 years
ago
by
dann
Devel::KYTProfでプロファイリングするのも、ミドルウェアになっていると使いやすいかもしれないということで作ってみました。
https://github.com/dann/p5-plack-middleware-profiler-kytprof
What is KYTProf?
... [More]
onishiさんのDevel::KYTProfは、ネットワークI/O系やDBアクセスなどの、いわゆる重い処理に対してモンキーパッチをあてて、性能を測るということをするモジュールです。I/O系にフォーカスしているところが用途が明確でいいですね。Perl界隈でよく使われるモジュールに対してモンキーパッチをあてているので、useするだけで空気を読んで性能を測ってくれます。LLらしい面白いアプローチのモジュールです。
Plack::Middleware::Profiler::KYTProfの使いどころ
Ganglia, CloudForecast, Zabbixなどのリソースモニタリングツールを使うことで、I/O系の問題があることはすぐにわかります。しかし、I/Oの問題であることがわかっても、アプリケーションのどの箇所でおきているかを特定するのは、アプリの作りにも依存するところで、コードの理解無くして特定することは難しいこともあります。
そういった場合に、このミドルゥエアを使うことになります。使うことで、コードの変更すること無く、SQL、テンプレート、エンドポイントへの通信などを特定することが可能になります。
基本的な性能問題の8-9割は、I/O絡みで発生することが殆どなので、その点で実用的といえるかもしれません。
使い方
基本的な使い方は、以下の通りです。ウェブアプリ用のミドルということで、Template Engineもプロファイリング対象に加えています。
builder {
enable "Plack::Middleware::Profiler::KYTProf";
$app;
};
負荷テスト環境や独自のアプリでも使えるようにするために、サンプリングしたいケースや、何をプロファイリング対象にしたいかなどを切り替えられるようにもしてあります。examplesにサンプルをいれてあるので、使ってみてください。
Enjoy!
#NYTProfのようなマイクロチューニングをするためのモジュールは、使う人が*モジュールの作者など)かなり限定的になるかなとは思うんですが、こういったI/O系は性能のオーダーはまるで違うので、使いどころは結構ありそうです。
ツイートする
[Less]
|
|
Posted
almost 13 years
ago
by
dann
Devel::KYTProfでプロファイリングするのも、ミドルウェアになっていると使いやすいかもしれないということで作ってみました。
https://github.com/dann/p5-plack-middleware-profiler-kytprof
What is KYTProf?
... [More]
onishiさんのDevel::KYTProfは、ネットワークI/O系やDBアクセスなどの、いわゆる重い処理に対してモンキーパッチをあてて、性能を測るということをするモジュールです。I/O系にフォーカスしているところが用途が明確でいいですね。Perl界隈でよく使われるモジュールに対してモンキーパッチをあてているので、useするだけで空気を読んで性能を測ってくれます。LLらしい面白いアプローチのモジュールです。
Plack::Middleware::Profiler::KYTProfの使いどころ
Ganglia, CloudForecast, Zabbixなどのリソースモニタリングツールを使うことで、I/O系の問題があることはすぐにわかります。しかし、I/Oの問題であることがわかっても、アプリケーションのどの箇所でおきているかを特定するのは、アプリの作りにも依存するところで、コードの理解無くして特定することは難しいこともあります。
そういった場合に、このミドルゥエアを使うことになります。使うことで、コードの変更すること無く、SQL、テンプレート、エンドポイントへの通信などを特定することが可能になります。
基本的な性能問題の8-9割は、I/O絡みで発生することが殆どなので、その点で実用的といえるかもしれません。
使い方
基本的な使い方は、以下の通りです。ウェブアプリ用のミドルということで、Template Engineもプロファイリング対象に加えています。
builder {
enable "Plack::Middleware::Profiler::KYTProf";
$app;
};
負荷テスト環境や独自のアプリでも使えるようにするために、サンプリングしたいケースや、何をプロファイリング対象にしたいかなどを切り替えられるようにもしてあります。examplesにサンプルをいれてあるので、使ってみてください。
Enjoy!
#NYTProfのようなマイクロチューニングをするためのモジュールは、使う人が*モジュールの作者など)かなり限定的になるかなとは思うんですが、こういったI/O系は性能のオーダーはまるで違うので、使いどころは結構ありそうです。
ツイートする
[Less]
|
|
Posted
almost 13 years
ago
by
dann
Devel::KYTProfでプロファイリングするのも、ミドルウェアになっていると使いやすいかもしれないということで作ってみました。
https://github.com/dann/p5-plack-middleware-profiler-kytprof
What is KYTProf?
... [More]
onishiさんのDevel::KYTProfは、ネットワークI/O系やDBアクセスなどの、いわゆる重い処理に対してモンキーパッチをあてて、性能を測るということをするモジュールです。I/O系にフォーカスしているところが用途が明確でいいですね。Perl界隈でよく使われるモジュールに対してモンキーパッチをあてているので、useするだけで空気を読んで性能を測ってくれます。LLらしい面白いアプローチのモジュールです。
Plack::Middleware::Profiler::KYTProfの使いどころ
Ganglia, CloudForecast, Zabbixなどのリソースモニタリングツールを使うことで、I/O系の問題があることはすぐにわかります。しかし、I/Oの問題であることがわかっても、アプリケーションのどの箇所でおきているかを特定するのは、アプリの作りにも依存するところで、コードの理解無くして特定することは難しいこともあります。
そういった場合に、このミドルゥエアを使うことになります。使うことで、コードの変更すること無く、SQL、テンプレート、エンドポイントへの通信などを特定することが可能になります。
基本的な性能問題の8-9割は、I/O絡みで発生することが殆どなので、その点で実用的といえるかもしれません。
使い方
基本的な使い方は、以下の通りです。ウェブアプリ用のミドルということで、Template Engineもプロファイリング対象に加えています。
builder {
enable "Plack::Middleware::Profiler::KYTProf";
$app;
};
負荷テスト環境や独自のアプリでも使えるようにするために、サンプリングしたいケースや、何をプロファイリング対象にしたいかなどを切り替えられるようにもしてあります。examplesにサンプルをいれてあるので、使ってみてください。
Enjoy!
#NYTProfのようなマイクロチューニングをするためのモジュールは、使う人が*モジュールの作者など)かなり限定的になるかなとは思うんですが、こういったI/O系は性能のオーダーはまるで違うので、使いどころは結構ありそうです。
ツイートする
[Less]
|
|
Posted
almost 13 years
ago
by
dann
PlackアプリをプロファイリングするモジュールPlack::Middleware::Profiler::NYTProfを更新しました。
https://github.com/dann/p5-plack-middleware-profiler-nytprof
... [More]
bayashiさんにパッチをもらって、負荷テスト環境などでも使えるようになりました。ある一定の負荷がかかった環境でしか性能問題がおきないといったケースはよくあるので、負荷テスト環境で、少し負荷をかけた状態で詳細なプロファイリングをしたい場合などに使ってみてください。
プロファリングのオーバーヘッドと負荷を減らすために、サンプリング、プロファイリング対象の限定、レポート機能のoffの3点の機能を追加しています。
サンプリング
全部のプロセスに負荷をかけるのではなく、対象をenable_profileというcallbackで、条件によってプロファイリングを有効にすることができます。特定のプロセスや何回かに1回プロファイリングするなどでサンプリングしながら、プロファイリングするのがおすすめです。
プロファイリング対象の限定
NYTProfは、PerlのVMをhookして測定しているので、オーバーヘッドが他のプロファイラより小さくなっています。
ただ、それでもプロファイリングするレベルがstatementレベルなどと小さいとオーバーヘッドは大きくなってしまいます。
そこで、以下のDevel::NYTProfの文書に書いてあるように、プロダクション環境ではプロファイル対象を限定するのがおすすめです。
http://search.cpan.org/~timb/Devel-NYTProf/lib/Devel/NYTProf.pm#MAKING_NYTPROF_FASTER
これは、env_nytprofにblocks=0, slowops=0などを追加することで実現します。
HTMLレポートの出力をしない
これは単純に元々が開発環境用を目的に作られた機能なので、デフォルトがオンになっているのをオフにできる機能を用意したというだけのことです。負荷テスト環境では、HTMLレポートをそのまま生成するのではなく、NYTProfのプロファイリング結果だけを出力して、後でみられるようにすればよく、HTMLレポートはoffにしておかないといけません。
これは、enable_reporting optionを0に設定することで実現します。
設定のサンプル
まとめると、例えば以下のような設定で使います。
use Mojolicious::Lite;
use Plack::Builder;
get '/' => 'index';
builder {
enable "Profiler::NYTProf",
env_nytprof => 'start=no:addpid=0:blocks=0:slowops=0:file=/tmp/nytprof.out',
profiling_result_dir => sub { '/tmp' },
enable_reporting => 0,
enable_profile => sub { $$ % 2 == 0 }
;
app->start;
};
__DATA__
@@ index.html.ep
<html><body>Hello World</body></html>
Enjoy!
#元々は開発環境で使うことを想定して、Plack Hackathon(http://dann.g.hatena.ne.jp/dann/20091129/p1)で3年前につくったものですが、こうしてまた使われるというのも嬉しいものです。bayashiさん、ありがとうございました!
ツイートする
[Less]
|
|
Posted
almost 13 years
ago
by
dann
PlackアプリをプロファイリングするモジュールPlack::Middleware::Profiler::NYTProfを更新しました。
https://github.com/dann/p5-plack-middleware-profiler-nytprof
... [More]
bayashiさんにパッチをもらって、負荷テスト環境などでも使えるようになりました。ある一定の負荷がかかった環境でしか性能問題がおきないといったケースはよくあるので、負荷テスト環境で、少し負荷をかけた状態で詳細なプロファイリングをしたい場合などに使ってみてください。
プロファリングのオーバーヘッドと負荷を減らすために、サンプリング、プロファイリング対象の限定、レポート機能のoffの3点の機能を追加しています。
サンプリング
全部のプロセスに負荷をかけるのではなく、対象をenable_profileというcallbackで、条件によってプロファイリングを有効にすることができます。特定のプロセスや何回かに1回プロファイリングするなどでサンプリングしながら、プロファイリングするのがおすすめです。
プロファイリング対象の限定
NYTProfは、PerlのVMをhookして測定しているので、オーバーヘッドが他のプロファイラより小さくなっています。
ただ、それでもプロファイリングするレベルがstatementレベルなどと小さいとオーバーヘッドは大きくなってしまいます。
そこで、以下のDevel::NYTProfの文書に書いてあるように、プロダクション環境ではプロファイル対象を限定するのがおすすめです。
http://search.cpan.org/~timb/Devel-NYTProf/lib/Devel/NYTProf.pm#MAKING_NYTPROF_FASTER
これは、env_nytprofにblocks=0, slowops=0などを追加することで実現します。
HTMLレポートの出力をしない
これは単純に元々が開発環境用を目的に作られた機能なので、デフォルトがオンになっているのをオフにできる機能を用意したというだけのことです。負荷テスト環境では、HTMLレポートをそのまま生成するのではなく、NYTProfのプロファイリング結果だけを出力して、後でみられるようにすればよく、HTMLレポートはoffにしておかないといけません。
これは、enable_reporting optionを0に設定することで実現します。
設定のサンプル
まとめると、例えば以下のような設定で使います。
use Mojolicious::Lite;
use Plack::Builder;
get '/' => 'index';
builder {
enable "Profiler::NYTProf",
env_nytprof => 'start=no:addpid=0:blocks=0:slowops=0:file=/tmp/nytprof.out',
profiling_result_dir => sub { '/tmp' },
enable_reporting => 0,
enable_profile => sub { $$ % 2 == 0 }
;
app->start;
};
__DATA__
@@ index.html.ep
Hello World
Enjoy!
#元々は開発環境で使うことを想定して、Plack Hackathon(http://dann.g.hatena.ne.jp/dann/20091129/p1)で3年前につくったものですが、こうしてまた使われるというのも嬉しいものです。bayashiさん、ありがとうございました!
ツイートする
[Less]
|