僕が博士課程で研究していた「Webサーバの高集積マルチテナントアーキテクチャに関する研究」という内容で、僕が通っている京都大学大学院情報学研究科博士課程の予備審査にいってきました。研究室は岡部研究室になります。
予備審査は、僕が所属する大学院の場合、基本的には博士課程の研究で3本以上ジャーナルを通す事を条件に、内容的にも指導教員の許可が受けられれば予備審査へと進むことができます。
続きを読む僕が博士課程で研究していた「Webサーバの高集積マルチテナントアーキテクチャに関する研究」という内容で、僕が通っている京都大学大学院情報学研究科博士課程の予備審査にいってきました。研究室は岡部研究室になります。
予備審査は、僕が所属する大学院の場合、基本的には博士課程の研究で3本以上ジャーナルを通す事を条件に、内容的にも指導教員の許可が受けられれば予備審査へと進むことができます。
続きを読むこんばんは、 @matsumotoryです。
上記エントリにおいて、プロセスの大量メモリ確保に伴うページテーブルサイズとベージテーブルエントリ数の肥大化によるcloneやexecveの性能劣化とCPU使用時間の専有問題、および、それらの解決方法についてシステムコールレベルで確認しました。
そこで今回は、システムコールやそのカーネル内部の処理の性能、というよりは、より実践的な環境であるApache httpdとmod_cgiを用いて、phpinfo()を実行するだけのCGIに対してベンチマークをかけた時にどれぐらいCPUのidleが空くか、システムCPUの使用量が変わるかを、前回示した解決方法の1つであるHugePagesを使うかどうかの観点で比較してみましょう。
特定条件下のWebサーバ環境のシステムCPUに起因する高負荷問題から、システムコールやカーネルのソースコードを読みながら根本原因の仮説をたて、それを前回エントリで検証してミクロな視点で効果を確認した上で、今回は再度実践的な環境で負荷検証を行って、OS・カーネルレベルの対応が全体として実践的な環境でどれぐらい効果があるかを確認したいという意図です。
続きを読むとあるサーバで妙にシステムCPUの使用率が高い現象が置きておりました。
そこで、まずはざっくりとperf top
でプロファイルをとってみると、以下のようになっていました。
22.38% [kernel] [k] copy_pte_range 18.44% [kernel] [k] zap_pte_range 11.13% [kernel] [k] change_pte_range 3.58% [kernel] [k] page_fault 3.32% [kernel] [k] page_remove_rmap
また、各プロセスのstraceを眺めていると、cloneで0.05秒とかなり時間がかかっているようです。これだと単純計算で1コアで秒間20回のcloneでコア100%占有してしまう程度の非常に低速な処理しかできないことになります。
sudo strace -T -o/dev/stdout -p pid | perl -ane '/<([\d\.]+)>/; print $_ if $1 > 0.01;' ... clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f97ea77ea10) = 7333 <0.051777> clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f97ea77ea10) = 7334 <0.053510> clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7f97ea77ea10) = 7335 <0.053426> ...
このサーバはforkを沢山するサーバで、そのfork元のプロセスはRSSが2GBとかなりメモリ多めのプロセスとなっていました。単純にはこの時点で、fork時の中で呼ばれるclone(2)から何らかの形でcopy_pte_range
などが呼ばれ、そこで処理に時間がかかって、clone自体が時間がかかっている、と予想できます。
しかしなんだろこれ、ということでKernelのコードからその原因を調査していきました。
続きを読むはてなさんと共催で行った「はてな・ペパボ技術大会@京都」と「ペパボ・はてな技術大会@福岡」が無事終わりました。
http://developer.hatenastaff.com/entry/2016/06/21/131302
ペパボ社内では、はてなサービスとその技術力の高さのファンが多く、はてなさんと一緒にこんな技術イベントできるなんて!!と喜んでいる人たちも沢山いましたし、僕自身もご一緒できてとても嬉しかったです。技術大会後の打ち上げも含めて、すごく盛り上がったしとにかく最高でめちゃくちゃ楽しかったです。
id:y_uukiさんをはじめ、はてなさんの若手エンジニアのスキルは圧倒的に高く、id:ichirin2501さん、id:masayoshiさん、id:taketo957さん、そして、技術大会で諸々沢山調整してくださった、id:wtatsuruさんとid:tomomiiさん、座談会をモデレータをやってくださったid:stanakaさんありがとうございました!
続きを読む先日PHPカンファレンス福岡2016に参加してきました。
一つ前の記事でここ半年の登壇についてまとめており、その中でPHPカンファレンスにも触れる程度にとどめていたのですが、PHPカンファレンス福岡の振り返り記事やツイートまとめの中で多くの方に僕の発表について言及して頂けており、僕も初参加なのでちゃんと書こうと思って、今出張先のホテルで書いております。
続きを読む以前Linuxのカーネルスレッドがループして暴走したときに、カーネルスレッドの扱いを調べていた時期があって、それの簡単な動きを再現するべくカーネルモジュールを作りました。まずは、自力で試したい人は以下を見ずに試すと良いでしょう。
続きを読む1月から上期がはじまり、昨年は出産関連などで9月を最後にあまり登壇できていなかったので、今年は頑張るぞ〜と意気込んでいたわけですが、怒涛のように登壇依頼がやってきて、やばいこれはきついぞ!と思いながらもなんとか一段落するところまでやり切れたのでちょっとどこかに旅にでたいです。
その前に、結構登壇して色々喋ったり資料作ったりしたので、時系列でまとめておきます。
今期は技術カンファレンスだけでなく、学術研究方面でも発表できたので、自分の立ち位置としてはわりと網羅的に発表できたかなと思います。
まずは以下に1月から5月までの全体の発表実績をリスト化しました。
ではそれぞれ1つずつ振り返っていきます。
続きを読む