SlideShare a Scribd company logo
2008/9/13
パフォーマンスチューニングの
基礎の基礎
Cybozu Labs, Inc
ひげぽん
higepon@labs.cybozu.co.jp
自己紹介
ひげぽん(蓑輪太郎)
Mosh
R6RS Scheme インタプリタ
http://code.google.com/p/mosh-scheme/
Mona
オープンソース OS
http://www.monaos.org
2
Mona
3
Mona
オープンソースOS
2002年∼
FD/CD起動
GUI
フルカラー
音
ネットワーク
3
未踏ソフトウェアとの関わり
4
未踏ソフトウェアとの関わり
Mona における次世代Schemeシェルの開発
2006年度下期 並木PM
Mona の「標準のシェル」にSchemeを採用
Scheme からプロセスを起動
ウィンドウを操作
4
近況
5
近況
サイボウズ・ラボ株式会社へ転職
ソフトウェアの開発・研究
5
近況
サイボウズ・ラボ株式会社へ転職
ソフトウェアの開発・研究
R6RS Scheme インタプリタ Mosh 開発中
広範囲で使われる Scheme を目指して
いずれは Mona に移植したい
5
近況
サイボウズ・ラボ株式会社へ転職
ソフトウェアの開発・研究
R6RS Scheme インタプリタ Mosh 開発中
広範囲で使われる Scheme を目指して
いずれは Mona に移植したい
5
あれ?自己紹介・近況だけだと
間が持たないぞ
6
パフォーマンスチューニング
の基礎の基礎
7
パフォーマンスチューニング
の問題
こんな経験はありませんか?
8
こんな経験はありませんか?
いくらチューニングしても速くならない
8
こんな経験はありませんか?
いくらチューニングしても速くならない
チューニング中に森に迷い込んでしまった
8
こんな経験はありませんか?
いくらチューニングしても速くならない
チューニング中に森に迷い込んでしまった
速くするには大幅に変更が必要
しかもそれで速くなるかは分からない
8
こんな経験はありませんか?
いくらチューニングしても速くならない
チューニング中に森に迷い込んでしまった
速くするには大幅に変更が必要
しかもそれで速くなるかは分からない
勘でチューニングしたら
速くなった→ Great
速くならない、遅くなった→ orz...
8
問題点
9
問題点
方法論がいまいち浸透していない
9
問題点
方法論がいまいち浸透していない
コーディング・設計は良い例がたくさん
9
問題点
方法論がいまいち浸透していない
コーディング・設計は良い例がたくさん
チューニングは?
まだまだ少ない
9
問題点
方法論がいまいち浸透していない
コーディング・設計は良い例がたくさん
チューニングは?
まだまだ少ない
経験の豊富なプログラマでも
チューニング方法は自己流が多い
9
今日の発表
10
今日の発表
パフォーマンスチューニングの基礎の基礎
10
今日の発表
パフォーマンスチューニングの基礎の基礎
Mosh の開発での苦労した経験を元に
速いソフトウェアを作りたい人を対象に
言語にできるだけ依存しないテクニックを紹介
一部 Mosh 固有のトピック
10
11
パフォーマンスチューニングで
やってはいけないこと
その1
12
その1
パフォーマンスは後回し
リリース直前にパフォーマンスチューニングすれ
ばOK?
12
その1
パフォーマンスは後回し
リリース直前にパフォーマンスチューニングすれ
ばOK?
最悪の場合どうにもならなくなる
12
その1
パフォーマンスは後回し
リリース直前にパフォーマンスチューニングすれ
ばOK?
最悪の場合どうにもならなくなる
最初に作った Scheme は遅かった 12
その2
13
その2
自戒の念も込めて
13
その2
自戒の念も込めて
ここがいかにも遅そうだから
memcached にキャッシュしよう
インライン展開しよう
インラインアセンブラにしよう
13
その2
自戒の念も込めて
ここがいかにも遅そうだから
memcached にキャッシュしよう
インライン展開しよう
インラインアセンブラにしよう
誰でも経験があるはず
13
その2
自戒の念も込めて
ここがいかにも遅そうだから
memcached にキャッシュしよう
インライン展開しよう
インラインアセンブラにしよう
誰でも経験があるはず
これはなぜだめか?
13
その2
自戒の念も込めて
ここがいかにも遅そうだから
memcached にキャッシュしよう
インライン展開しよう
インラインアセンブラにしよう
14
その2
自戒の念も込めて
ここがいかにも遅そうだから
memcached にキャッシュしよう
インライン展開しよう
インラインアセンブラにしよう
14
計測していない!
その2
15
その2
計測せよ
直感はまちがいかも
その関数一度も呼ばれないかも
遅いがユーザー応答時間への影響は少ないかも
15
その2
計測せよ
直感はまちがいかも
その関数一度も呼ばれないかも
遅いがユーザー応答時間への影響は少ないかも
小さなパフォーマンス事項で壊してはだめ
良いデザイン
機能性
柔軟性 15
16
良いデザイン?
機能性?
柔軟性?
良いデザイン?機能性?柔軟性?
17
良いデザイン?機能性?柔軟性?
memcached にキャッシュしたとする
キャッシュ ON/OFF の2通りでテスト
キャッシュの Expire の境界チェック
memcached 環境の構築
コードが増える
17
良いデザイン?機能性?柔軟性?
memcached にキャッシュしたとする
キャッシュ ON/OFF の2通りでテスト
キャッシュの Expire の境界チェック
memcached 環境の構築
コードが増える
コードの本来の目的がぼんやりする
17
良いデザイン?機能性?柔軟性?
memcached にキャッシュしたとする
キャッシュ ON/OFF の2通りでテスト
キャッシュの Expire の境界チェック
memcached 環境の構築
コードが増える
コードの本来の目的がぼんやりする
開発、テスト、改修時に気にする必要
17
Memcached の使用例
18
use Cache::Memcached;
$memd = new Cache::Memcached {
'servers' => [ "10.0.0.15:11211", "10.0.0.15:11212", "/var/sock/memcached",
"10.0.0.17:11211", [ "10.0.0.17:11211", 3 ] ],
'debug' => 0,
'compress_threshold' => 10_000,
};
$memd->set_servers($array_ref);
$memd->set_compress_threshold(10_000);
$memd->enable_compress(0);
$memd->set("my_key", "Some value");
$memd->set("object_key", { 'complex' => [ "object", 2, 4 ]});
$val = $memd->get("my_key");
良いデザイン?機能性?柔軟性?
19
良いデザイン?機能性?柔軟性?
inline にしたとする
19
良いデザイン?機能性?柔軟性?
inline にしたとする
実装をヘッダに書くor マクロ
build dependencies
平均 build 時間が増える
インターフェースが読みづらくなる
19
良いデザイン?機能性?柔軟性?
inline にしたとする
実装をヘッダに書くor マクロ
build dependencies
平均 build 時間が増える
インターフェースが読みづらくなる
賛否両論ありそう
19
良いデザイン?機能性?柔軟性?
20
良いデザイン?機能性?柔軟性?
インラインアセンブラ
20
uint32_t l,h;
asm volatile("rdtsc n"
"mov %%eax, %0 n"
"mov %%edx, %1 n"
: "=m"(l), "=m"(h)
: /* no */
: "eax", "edx");
*timeL = l;
*timeH = h;
というわけで
21
というわけで
測定せず直感だけで
良いデザインを壊すのは NG
21
というわけで
測定せず直感だけで
良いデザインを壊すのは NG
でも誤解しないでほしい
挙げられたテクニックは有効な場所もある
トレードオフがあるだけ
21
大事なこと
22
パフォーマンスチューニングには
コスト・リスク
があることを理解しよう
23
これらをふまえて
どうすれば良いか?
チューニングを開発プロセス
24
チューニングを開発プロセス
開発の最初から
チューニングを開発プロセスに取り込む
24
チューニングを開発プロセス
開発の最初から
チューニングを開発プロセスに取り込む
最初にゴール・目標を決める
24
チューニングを開発プロセス
開発の最初から
チューニングを開発プロセスに取り込む
最初にゴール・目標を決める
短いサイクルをまわそう
開発
測定
チューニング
24
0. 最初にゴール・目標を決める
25
0. 最初にゴール・目標を決める
例
500 msec 以内にレスポンスを返す
25
0. 最初にゴール・目標を決める
例
500 msec 以内にレスポンスを返す
ゴール・目標がないと
今十分速いのか?が分からない
後どれくらい速くなればいいか分からない
25
0. 最初にゴール・目標を決める
例
500 msec 以内にレスポンスを返す
ゴール・目標がないと
今十分速いのか?が分からない
後どれくらい速くなればいいか分からない
作る前から正確な目標は立てられないよ?
良い指摘
25
1. 開発
26
1. 開発
パフォーマンスのことは考えない
26
1. 開発
パフォーマンスのことは考えない
良いデザイン・良いコードに集中
パフォーマンスを気にする時間はすぐ後にある
26
1. 開発
パフォーマンスのことは考えない
良いデザイン・良いコードに集中
パフォーマンスを気にする時間はすぐ後にある
でも「ウズウズするんだ」
「良い高速化手法思いついた」
「もしかしたら遅いかも」
コメントにメモしておく
26
2. 計測
27
2. 計測
目標に到達しているか?計測する
27
2. 計測
目標に到達しているか?計測する
短いサイクルで計測する
27
2. 計測
目標に到達しているか?計測する
短いサイクルで計測する
遅くなったら一つ前の開発が悪い
一つ前なのでコードを良く覚えている
あとからチューニングするよりもやりやすい
27
2. 計測
目標に到達しているか?計測する
短いサイクルで計測する
遅くなったら一つ前の開発が悪い
一つ前なのでコードを良く覚えている
あとからチューニングするよりもやりやすい
簡単に計測できる仕組みづくりが大切
27
3. チューニング
28
3. チューニング
目標を満たしていなければ
初めてチューニングに取りかかる
メモが役に立つかも?
28
まとめると
29
まとめると
短いサイクルをまわそう
開発
良いデザイン・良いコードに集中
パフォーマンスのことは考えない
測定
ゴール・目標満たしている?
チューニング
29
まとめると
短いサイクルをまわそう
開発
良いデザイン・良いコードに集中
パフォーマンスのことは考えない
測定
ゴール・目標満たしている?
チューニング
速いコードをサイクルごとに維持する
29
30
測定・チューニングの
テクニック
31
測定
環境構築
32
環境構築
初期の環境構築で効率が変わる
32
環境構築
初期の環境構築で効率が変わる
測定するデータの準備
より本番に近い形で
32
環境構築
初期の環境構築で効率が変わる
測定するデータの準備
より本番に近い形で
測定は楽をしよう
気軽に測定できるように
測定が楽しくなるように
半自動化
make bench など 32
記録と参照
33
記録と参照
目標 1sec
33
記録と参照
目標 1sec
33
チューニング項目 sec
A 12.29
B 10.05
C 9.55
D 9.53
E 7.57
F 5.98
G 4.4
H 4.3
記録と参照
目標 1sec
33
チューニング項目 sec
A 12.29
B 10.05
C 9.55
D 9.53
E 7.57
F 5.98
G 4.4
H 4.3
過去のデータを保持
レポジトリに入れる
グラフで一目瞭然
34
グラフを描く
グラフで一目瞭然
34
0
2.5
5.0
7.5
10.0
12.5
15.0
チューニング
グラフを描く
35
チューニング
遅いところはどこか? の道具
36
遅いところはどこか? の道具
プロファイラ
gcc なら gprof
36
遅いところはどこか? の道具
プロファイラ
gcc なら gprof
プロファイラがない場合は?
ストップウォッチ
ログ方式
プロファイラ実装
36
遅いところはどこか? の道具
プロファイラ
gcc なら gprof
プロファイラがない場合は?
ストップウォッチ
ログ方式
プロファイラ実装
道具の選定・準備に時間をかけるべし
36
37
VM(Mosh)開発固有の話
VM 固有の話
38
VM 固有の話
VM では普通のプロファイラが使えない
関数単位のプロファイラ gprof
実行時間の大半が run ループ
runループのどこが遅いか分からない
38
VM 固有の話
VM では普通のプロファイラが使えない
関数単位のプロファイラ gprof
実行時間の大半が run ループ
runループのどこが遅いか分からない
38
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls ms/call ms/call name
58.33 0.98 0.98 86 11.40 14.55 scheme::VM::run
runループ
39
void run()
{
for (;;) {
switch(instruction) {
case CALL:
/* 何か */
case XXX:
/* 何か */
case YYY:
/* 何か */
}
... たくさん続く
}
}
どの命令が遅いか
分からない
qprof
40
qprof
qprof はどのアドレスが遅いかが分かる
命令(ラベル)のアドレスとマッチング可能
40
qprof
qprof はどのアドレスが遅いかが分かる
命令(ラベル)のアドレスとマッチング可能
40
qprof -ginstruction -i 1 -o qprof.log ./mosh
scheme::VM::run(scheme::Object) [0x8051c8b] 12 ( 4%)
scheme::VM::run(scheme::Object) [0x8051c92] 2 ( 1%)
scheme::VM::run(scheme::Object) [0x8051d84] 3 ( 1%)
scheme::VM::run(scheme::Object) [0x8051d90] 1 ( 0%)
scheme::VM::run(scheme::Object) [0x8051da4] 1 ( 0%)
VM固有の話
41
VM固有の話
プロファイラではC++の世界しか見えない
例えば Mosh なら Scheme の世界を見たい
どの Scheme 手続きが遅いのか?
何回呼ばれているのか
41
VM固有の話
プロファイラではC++の世界しか見えない
例えば Mosh なら Scheme の世界を見たい
どの Scheme 手続きが遅いのか?
何回呼ばれているのか
自前でプロファイラを作ろう
意外と簡単
41
プロファイラを作ろう
42
プロファイラを作ろう
プロファイラのやること
一定の間隔で実行を割り込み
そのときの「何をしていたか?」を記録
call された関数と回数を記録
42
プロファイラを作ろう
プロファイラのやること
一定の間隔で実行を割り込み
そのときの「何をしていたか?」を記録
call された関数と回数を記録
SIGPROFを利用する
プロファイラ用のシグナル
シグナルハンドラで
「プログラムカウンタ」を記録
42
実装
43
struct sigaction act;
act.sa_handler = &signal_handler;
act.sa_flags = SA_RESTART;
if (sigaction(SIGPROF, &act, NULL) != 0) {
callAssertionViolationImmidiaImmediately("profiler",
"sigaction failed");
} テキスト
startTimer();
void VM::collectProfile()
{
static int i = 0;
if (!profilerRunning_) return;
if (i >= SAMPLE_NUM) {
stopTimer();
} else {
samples_[i++] = cl_;
}
totalSampleCount_++;
}
シグナルとタイマの設定
シグナルハンドラ
Mosh のプロファイラ
44
time% msec calls name location
27 3510 190 (lambda x y) compiler.scm:8458
8 1140 143356 (lambda i) compiler.scm:9644
8 1110 4039 (pass3/$lambda iform loca...) compiler.scm:9213
7 990 - (<top-level>)
5 650 8456 (pass3/$call iform locals...) compiler.scm:9064
3 500 197791 (lambda s) compiler.scm:9682
2 290 811697 (set-intersect lst1 lst2) compiler.scm:5270
1 220 198 (lambda lst1 lst2) compiler.scm:5249
1 200 2 (lambda x y) compiler.scm:8449
1 190 38872 (lambda i l labels-seen) compiler.scm:8318
1 180 1 (lambda i code) compiler.scm:9072
1 170 42257 (pass1/sexp->iform sexp l...) compiler.scm:7074
1 160 1 (lambda i code) compiler.scm:9072
1 150 197 (lambda x lst) compiler.scm:5246
1 140 215 (lambda i) compiler.scm:8401
1 130 2788 (pass3/$if iform locals f...) compiler.scm:8921
1 130 192 (lambda x lst) compiler.scm:5246
まとめ
45
まとめ
最初にゴールを決めろ
45
まとめ
最初にゴールを決めろ
良いデザインを壊すな・測定せよ
45
まとめ
最初にゴールを決めろ
良いデザインを壊すな・測定せよ
グラフを描け
45
まとめ
最初にゴールを決めろ
良いデザインを壊すな・測定せよ
グラフを描け
開発プロセスに含めよ
開発
測定
チューニング
45
宣伝
46
宣伝
Shibuya.lisp
Lisp系言語のコミュニティを立ち上げました
10月18日に Tech talk #1 を開催予定
http://shibuya.lisp-users.org/
46

More Related Content

What's hot

超簡単!バージョン管理入門 最初の一歩
超簡単!バージョン管理入門 最初の一歩超簡単!バージョン管理入門 最初の一歩
超簡単!バージョン管理入門 最初の一歩
Shin Tanigawa
 
タスクマネージャーの上級版!Process Explorerの紹介
タスクマネージャーの上級版!Process Explorerの紹介タスクマネージャーの上級版!Process Explorerの紹介
タスクマネージャーの上級版!Process Explorerの紹介
Shin Tanigawa
 
超簡単! インストールなしでRedmineを試す
超簡単! インストールなしでRedmineを試す超簡単! インストールなしでRedmineを試す
超簡単! インストールなしでRedmineを試す
Shin Tanigawa
 
20210515 cae linux_install_vb
20210515 cae linux_install_vb20210515 cae linux_install_vb
20210515 cae linux_install_vb
YohichiShiina
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会
slankdev
 
超簡単! Redmineで体験 初めてのチケット管理
超簡単! Redmineで体験 初めてのチケット管理超簡単! Redmineで体験 初めてのチケット管理
超簡単! Redmineで体験 初めてのチケット管理
Shin Tanigawa
 
スーパーコンピューターとクラウドでのOpenFOAM性能・費用ベンチマークテスト
スーパーコンピューターとクラウドでのOpenFOAM性能・費用ベンチマークテストスーパーコンピューターとクラウドでのOpenFOAM性能・費用ベンチマークテスト
スーパーコンピューターとクラウドでのOpenFOAM性能・費用ベンチマークテスト
Masanori Sumitomo
 
超簡単!TortoiseSVNをWindowsにインストールする
超簡単!TortoiseSVNをWindowsにインストールする超簡単!TortoiseSVNをWindowsにインストールする
超簡単!TortoiseSVNをWindowsにインストールする
Shin Tanigawa
 
超簡単! PostgreSQLをWindowsにインストール
超簡単! PostgreSQLをWindowsにインストール超簡単! PostgreSQLをWindowsにインストール
超簡単! PostgreSQLをWindowsにインストール
Shin Tanigawa
 
安全なプログラムの作り方
安全なプログラムの作り方安全なプログラムの作り方
安全なプログラムの作り方
Kazuhiro Nishiyama
 
about DEXCS for OpenFOAM
about DEXCS for OpenFOAMabout DEXCS for OpenFOAM
about DEXCS for OpenFOAM
Etsuji Nomura
 
Filippo, plain simple reality of entropy ja
Filippo, plain simple reality of entropy jaFilippo, plain simple reality of entropy ja
Filippo, plain simple reality of entropy ja
PacSecJP
 
ニューTrema 5つのポイント
ニューTrema 5つのポイントニューTrema 5つのポイント
ニューTrema 5つのポイントYasuhito Takamiya
 
超簡単!Apache SubverisonをWindows Serverにインストール
超簡単!Apache SubverisonをWindows Serverにインストール超簡単!Apache SubverisonをWindows Serverにインストール
超簡単!Apache SubverisonをWindows Serverにインストール
Shin Tanigawa
 
超簡単! Node.jsをWindowsにインストール
超簡単! Node.jsをWindowsにインストール超簡単! Node.jsをWindowsにインストール
超簡単! Node.jsをWindowsにインストール
Shin Tanigawa
 
プロとしてのOracleアーキテクチャ入門 ~番外編~
プロとしてのOracleアーキテクチャ入門 ~番外編~プロとしてのOracleアーキテクチャ入門 ~番外編~
プロとしてのOracleアーキテクチャ入門 ~番外編~ryouta watabe
 
超簡単!ActivePerlをWindows Serverにインストール
超簡単!ActivePerlをWindows Serverにインストール超簡単!ActivePerlをWindows Serverにインストール
超簡単!ActivePerlをWindows Serverにインストール
Shin Tanigawa
 
Pandora FMS による Web サービス監視
Pandora FMS による Web サービス監視Pandora FMS による Web サービス監視
Pandora FMS による Web サービス監視
Rworks, Inc.
 
ret2dl resolve
ret2dl resolveret2dl resolve
ret2dl resolve
sounakano
 

What's hot (20)

超簡単!バージョン管理入門 最初の一歩
超簡単!バージョン管理入門 最初の一歩超簡単!バージョン管理入門 最初の一歩
超簡単!バージョン管理入門 最初の一歩
 
タスクマネージャーの上級版!Process Explorerの紹介
タスクマネージャーの上級版!Process Explorerの紹介タスクマネージャーの上級版!Process Explorerの紹介
タスクマネージャーの上級版!Process Explorerの紹介
 
超簡単! インストールなしでRedmineを試す
超簡単! インストールなしでRedmineを試す超簡単! インストールなしでRedmineを試す
超簡単! インストールなしでRedmineを試す
 
20210515 cae linux_install_vb
20210515 cae linux_install_vb20210515 cae linux_install_vb
20210515 cae linux_install_vb
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会
 
超簡単! Redmineで体験 初めてのチケット管理
超簡単! Redmineで体験 初めてのチケット管理超簡単! Redmineで体験 初めてのチケット管理
超簡単! Redmineで体験 初めてのチケット管理
 
スーパーコンピューターとクラウドでのOpenFOAM性能・費用ベンチマークテスト
スーパーコンピューターとクラウドでのOpenFOAM性能・費用ベンチマークテストスーパーコンピューターとクラウドでのOpenFOAM性能・費用ベンチマークテスト
スーパーコンピューターとクラウドでのOpenFOAM性能・費用ベンチマークテスト
 
超簡単!TortoiseSVNをWindowsにインストールする
超簡単!TortoiseSVNをWindowsにインストールする超簡単!TortoiseSVNをWindowsにインストールする
超簡単!TortoiseSVNをWindowsにインストールする
 
超簡単! PostgreSQLをWindowsにインストール
超簡単! PostgreSQLをWindowsにインストール超簡単! PostgreSQLをWindowsにインストール
超簡単! PostgreSQLをWindowsにインストール
 
安全なプログラムの作り方
安全なプログラムの作り方安全なプログラムの作り方
安全なプログラムの作り方
 
Ssaw08 0617
Ssaw08 0617Ssaw08 0617
Ssaw08 0617
 
about DEXCS for OpenFOAM
about DEXCS for OpenFOAMabout DEXCS for OpenFOAM
about DEXCS for OpenFOAM
 
Filippo, plain simple reality of entropy ja
Filippo, plain simple reality of entropy jaFilippo, plain simple reality of entropy ja
Filippo, plain simple reality of entropy ja
 
ニューTrema 5つのポイント
ニューTrema 5つのポイントニューTrema 5つのポイント
ニューTrema 5つのポイント
 
超簡単!Apache SubverisonをWindows Serverにインストール
超簡単!Apache SubverisonをWindows Serverにインストール超簡単!Apache SubverisonをWindows Serverにインストール
超簡単!Apache SubverisonをWindows Serverにインストール
 
超簡単! Node.jsをWindowsにインストール
超簡単! Node.jsをWindowsにインストール超簡単! Node.jsをWindowsにインストール
超簡単! Node.jsをWindowsにインストール
 
プロとしてのOracleアーキテクチャ入門 ~番外編~
プロとしてのOracleアーキテクチャ入門 ~番外編~プロとしてのOracleアーキテクチャ入門 ~番外編~
プロとしてのOracleアーキテクチャ入門 ~番外編~
 
超簡単!ActivePerlをWindows Serverにインストール
超簡単!ActivePerlをWindows Serverにインストール超簡単!ActivePerlをWindows Serverにインストール
超簡単!ActivePerlをWindows Serverにインストール
 
Pandora FMS による Web サービス監視
Pandora FMS による Web サービス監視Pandora FMS による Web サービス監視
Pandora FMS による Web サービス監視
 
ret2dl resolve
ret2dl resolveret2dl resolve
ret2dl resolve
 

Viewers also liked

Mona OS at Open Source Conference 2007 Tokyo Fall
Mona OS at Open Source Conference 2007 Tokyo FallMona OS at Open Source Conference 2007 Tokyo Fall
Mona OS at Open Source Conference 2007 Tokyo FallHigepon Taro Minowa
 
Why Lisp? - Shibuya.lisp Tech Talk #1 Opening speech
Why Lisp? - Shibuya.lisp Tech Talk #1 Opening speechWhy Lisp? - Shibuya.lisp Tech Talk #1 Opening speech
Why Lisp? - Shibuya.lisp Tech Talk #1 Opening speech
Higepon Taro Minowa
 
Mio - a distributed Skip Graph based orderd KVS
Mio - a distributed Skip Graph based orderd KVSMio - a distributed Skip Graph based orderd KVS
Mio - a distributed Skip Graph based orderd KVS
Higepon Taro Minowa
 
Lisp code batton - Shibuya.lisp Tech Talk #5
Lisp code batton - Shibuya.lisp Tech Talk #5Lisp code batton - Shibuya.lisp Tech Talk #5
Lisp code batton - Shibuya.lisp Tech Talk #5
Higepon Taro Minowa
 
Facebook App in Scheme Shibuya.Lisp tt#7 2011/10/22
Facebook App in Scheme Shibuya.Lisp tt#7 2011/10/22Facebook App in Scheme Shibuya.Lisp tt#7 2011/10/22
Facebook App in Scheme Shibuya.Lisp tt#7 2011/10/22
Higepon Taro Minowa
 
最近遊んだ Wii Uの 3つのソフトの感想
最近遊んだ Wii Uの 3つのソフトの感想最近遊んだ Wii Uの 3つのソフトの感想
最近遊んだ Wii Uの 3つのソフトの感想
teapipin
 
これからの時代に! パソコン離れの中のパソコン選び
これからの時代に! パソコン離れの中のパソコン選びこれからの時代に! パソコン離れの中のパソコン選び
これからの時代に! パソコン離れの中のパソコン選び
teapipin
 
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hackツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
teapipin
 

Viewers also liked (9)

Shibuya.Lisp20091107
Shibuya.Lisp20091107Shibuya.Lisp20091107
Shibuya.Lisp20091107
 
Mona OS at Open Source Conference 2007 Tokyo Fall
Mona OS at Open Source Conference 2007 Tokyo FallMona OS at Open Source Conference 2007 Tokyo Fall
Mona OS at Open Source Conference 2007 Tokyo Fall
 
Why Lisp? - Shibuya.lisp Tech Talk #1 Opening speech
Why Lisp? - Shibuya.lisp Tech Talk #1 Opening speechWhy Lisp? - Shibuya.lisp Tech Talk #1 Opening speech
Why Lisp? - Shibuya.lisp Tech Talk #1 Opening speech
 
Mio - a distributed Skip Graph based orderd KVS
Mio - a distributed Skip Graph based orderd KVSMio - a distributed Skip Graph based orderd KVS
Mio - a distributed Skip Graph based orderd KVS
 
Lisp code batton - Shibuya.lisp Tech Talk #5
Lisp code batton - Shibuya.lisp Tech Talk #5Lisp code batton - Shibuya.lisp Tech Talk #5
Lisp code batton - Shibuya.lisp Tech Talk #5
 
Facebook App in Scheme Shibuya.Lisp tt#7 2011/10/22
Facebook App in Scheme Shibuya.Lisp tt#7 2011/10/22Facebook App in Scheme Shibuya.Lisp tt#7 2011/10/22
Facebook App in Scheme Shibuya.Lisp tt#7 2011/10/22
 
最近遊んだ Wii Uの 3つのソフトの感想
最近遊んだ Wii Uの 3つのソフトの感想最近遊んだ Wii Uの 3つのソフトの感想
最近遊んだ Wii Uの 3つのソフトの感想
 
これからの時代に! パソコン離れの中のパソコン選び
これからの時代に! パソコン離れの中のパソコン選びこれからの時代に! パソコン離れの中のパソコン選び
これからの時代に! パソコン離れの中のパソコン選び
 
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hackツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
ツイッター調査:約173万ツイートを調査して分かったTwitterの利用動向 #twtr_hack
 

Similar to The basic of performance tuning

Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - FuncGosuke Miyashita
 
NAO/Pepper 開発環境 について
NAO/Pepper 開発環境 についてNAO/Pepper 開発環境 について
NAO/Pepper 開発環境 について
Takuji Kawata
 
NanoA
NanoANanoA
NanoA
Kazuho Oku
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
OSSラボ株式会社
 
MINCS – containers in the shell script
MINCS – containers in the shell scriptMINCS – containers in the shell script
MINCS – containers in the shell script
Masami Hiramatsu
 
Web技術勉強会 第33回
Web技術勉強会 第33回Web技術勉強会 第33回
Web技術勉強会 第33回
龍一 田中
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
Hideki Takase
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれMasataka MIZUNO
 
A story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88kA story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88k
Kenji Aoyama
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用kazuyas
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstepsmokey monkey
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
Kentaro Ebisawa
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)Toru Furukawa
 
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? WayOpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Way
ロフト くん
 
Deep learning reading club @ nimiri for SWEST
Deep learning reading club @ nimiri for SWESTDeep learning reading club @ nimiri for SWEST
Deep learning reading club @ nimiri for SWEST
Kiyoshi Ogawa
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
Masashi Shinbara
 
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
Noriaki Ando
 
なにわテック20180127
なにわテック20180127なにわテック20180127
なにわテック20180127
Natsutani Minoru
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
Yuya Rin
 

Similar to The basic of performance tuning (20)

Open Source System Administration Framework - Func
Open Source System Administration Framework - FuncOpen Source System Administration Framework - Func
Open Source System Administration Framework - Func
 
NAO/Pepper 開発環境 について
NAO/Pepper 開発環境 についてNAO/Pepper 開発環境 について
NAO/Pepper 開発環境 について
 
NanoA
NanoANanoA
NanoA
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
Ansible2.0と実用例
Ansible2.0と実用例Ansible2.0と実用例
Ansible2.0と実用例
 
MINCS – containers in the shell script
MINCS – containers in the shell scriptMINCS – containers in the shell script
MINCS – containers in the shell script
 
Web技術勉強会 第33回
Web技術勉強会 第33回Web技術勉強会 第33回
Web技術勉強会 第33回
 
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
ロボットシステムのつくりかた 〜Robot Operating Systemというアプローチ〜
 
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれクラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
 
A story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88kA story of porting OpenBSD/luna88k
A story of porting OpenBSD/luna88k
 
Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用Trema の紹介とネットワーク仮想化への応用
Trema の紹介とネットワーク仮想化への応用
 
Osc10do linux nextstep
Osc10do linux nextstepOsc10do linux nextstep
Osc10do linux nextstep
 
How to run P4 BMv2
How to run P4 BMv2How to run P4 BMv2
How to run P4 BMv2
 
おまえらこのライブラリ使ってないの? m9 (2013-07)
おまえらこのライブラリ使ってないの? m9	(2013-07)おまえらこのライブラリ使ってないの? m9	(2013-07)
おまえらこのライブラリ使ってないの? m9 (2013-07)
 
OpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? WayOpenShift from Easy way to Hard ? Way
OpenShift from Easy way to Hard ? Way
 
Deep learning reading club @ nimiri for SWEST
Deep learning reading club @ nimiri for SWESTDeep learning reading club @ nimiri for SWEST
Deep learning reading club @ nimiri for SWEST
 
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
もう XAMPP / MAMP はいらない!
Vagrant で作る PHP 開発環境
 
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
RTミドルウェアによるロボットプログラミング技術 2.プログラミングの基礎
 
なにわテック20180127
なにわテック20180127なにわテック20180127
なにわテック20180127
 
Rubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつりRubyで創るOpenFlowネットワーク - LLまつり
Rubyで創るOpenFlowネットワーク - LLまつり
 

Recently uploaded

ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
osamut
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
azuma satoshi
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 

Recently uploaded (7)

ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMMハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
ハイブリッドクラウド研究会_Hyper-VとSystem Center Virtual Machine Manager セッションMM
 
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobodyロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
ロジックから状態を分離する技術/設計ナイト2024 by わいとん @ytnobody
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 

The basic of performance tuning