Why
今後もいろんなところでCfPを出していくぞ!というメモ書きとして書き残すためにこれを書きます。
What
PyCon JP 2023はPyCon APAC 2023として開催されました。APACが日本で行われるのは10年ぶりの開催だそうです。
どうせ参加するなら発表したいなーと思ってプロポーザルを出したところ、採択していただけたのでスピーカーとして参加しました。
発表内容について
今年の私のトークタイトルは 「自作パケット処理系の性能測定と可視化&改善のPDCAを回して最強のパケット処理系の作り方を学ぼう」 でした。
実は初参加でした。PyConJP自体は存じ上げてたのですが、今まで地方に(今も?)住んでいるので参加には大変敷居が高かったというのがあり初参加・初スピーカーという感じでドキドキでした。
PyConと言いつつ少しPython感は薄い感じになりましたが転職して戻ってきて一年でちゃんと対外発表できる感じでだったのでよかったです。
CfPを練るにあたっての所感
発表内容については実は合計二本出していて、「ExaBGPにSRv6MUPを入れた話」と今回の「PGW-Uに対して負荷計測を行った話」を出していました。
前者はIETFのネームバリューとかOSSに初めて新機能入れました!みたいなセンセーショナルさで攻めてみたCfP、後者は学びや再現性がある話を売りにして攻めてみたCfPで書いました。結果としては後者に関して拾ってもらえてよかったです。
自分はこのように大きいところで話すのは初めてだったのでおすすめタイトルは何かを調べました。
次にトラックの選び方の話とかプロポーザルの参考例を眺めてやりました。
- 公募トーク - PyCon JP - Confluence
- PyCon JP Blog: PyCon JP 2020 サンプルプロポーザル / Sample proposal
- PyCon JP Blog: PyCon JP 2020 プロポーザルフォームのTrackについて / About Track in the proposal form
あとはプロポーザルの選択基準が明確に出されてたのでこのように書き出して強みってなんだろー?と思いながら書き出してました。
## どういう話にするか&どういう強みがあるか
### Python 初心者にとって自らの知見を広げる内容か
~なさそう~ ネットワークの処理系に関しても使えるんだぞ!という分野自体を伝えれるかも
### Python が社会で活用されている具体的なイメージを描けるか
SDNやNFVと言われているサービスというのは自分たちの手で実装可能なことが知られているが、どのように品質を担保するかはあまり知られていない。ネットワーク製品を良くするために使われてるというイメージを持ってもらえる
### 内容に独自性・新規性はあるか
Trexでどのようにしてデータを持ってくるとか細かい実装レベルについては書いてないので、そういうのを書いてもいいかも
### トークの発表が明確にイメージできるほど構成は詳細に書かれているか
本文の詳細を見てイメージできるように書き出してみる
- 背景とモチベ
- 弊社ではフルMVNO事業をやっており、その中のPGW-Uと呼ばれるインターネットに出るための自作パケット処理系の通信効率の性能を上げることが求められていました
- そのためにpython製のツールとライブラリを駆使して計測し高速化をしました
- 話す内容
- 私たちは、XDPと呼ばれるeBPFを使った高速パケット処理技術を使って実装しています
- 性能試験を通した改善プロセスでは、負荷試験のパケット生成・テスト結果の記録・メトリックの分析など多くの場面で Python を活用しています
- それぞれの場面での活用事例を紹介します
- scapy で TRex のパケット生成にモバイル網で使うプロトコルのパケットを追加しました
- 性能試験のテスト完了後、性能指標を TRex から取得し Pushgateway で記録しました
- Jupyter Lab 上で Grafana 経由の CSV ファイルを pandas.DataFrame に加工し、可視化や評価を行いました
- 性能試験を通じた改善例
- 大容量のエントリを流した際にメモリ使用量が大きくなるとコケる問題を発見して修正した事例
- パケットのcheck sumの処理で遅くなったので処理性能を向上させるためにchecksum機能をoptoutする機能を追加した事例
- 特定のパケットに対してマルチコア対応がされていないことを発見して、IntelのNICドライバに機能を追加してマルチコア対応させた。その結果$(nproc| CPUコア数)倍の効率アップができた事例
### コミュニティの国際交流に寄与するか
わからん。。。
### Python を使う「楽しさ・熱意」をアピールできるか
ぶっちゃけscapyがすごいんだけど、pythonで好きなパケットをホイホイ投げれるのは良い
### 聴衆が具体的に持ち帰ることができる知識や技術の利用方法・工夫があるか
自社のネットワーク製品を検証できるフレームワークやコードを提供できる
その他の雑感
参加について
スピーカーは本会議前日に特別招待されたイベントに参加できました。 が、普段のネットワークの人たちは全くいないので知り合いがいなくてそれなりにぼっちで辛かったです(かなりクラスタが違うし、コミュ障には厳しい)
IETFとかみたいに始めまして参加者限定パーティーとかそういうのがあったら嬉しかったなーと思いました
発表聴講に関して色々クラスタを見てると体感3-4割ぐらいがMLっぽい人が多いなーとか思いました。 NetworkX!?ネットワークの人がいる〜!と思ってノコノコ行ったらニューラルネットワークのネットワークでorzとなりました。
ただMemrayの発表とかはなるほどーとなって面白かったです。スレッド間の話とかをしてなかったのでもうちょい深い話を聞きたかったんですが色々聞いた感じ発表内容的にはオーバービューみたいな発表が好まれるのだなーと思いました。Qiitaとかにあるチュートリアルやってみました。こんなこともできるらしいです!ぐらいの感じが一番ウケそうだなぁと思いました。
実際自分が登壇する時はクラスタ的に全然きてくれないかも・・と不安で参加前についてはTwitterで極力宣伝しまくりました。結果としては30人ちょいぐらいは来てくれてたので0人じゃなくてよかったのかなと思います。宣伝後も登壇した資料を公開してそれなりにPVしてもらうことはできました。きっとJANOGとかIWならもう少し来てくれる人が居たかもなーと思ったりしましたがこれも学びです😇
ちなみに懇親会でとあるプログラム委員と話したところ、投稿してる人が少ない分野でちゃんと描いてると通りやすいんだよねーという話を聞きました。なので今回ネットワークプログラミングに関するトラックで選択して投稿したのはよかったなと思います。
発表方法について
発表練習は個人で行い、スピーカーノートにはある程度文章でスクリプトを描きました。発表資料・言語は日本語なので緊張はしましたが話が飛んでしまうということはなかったかなと思います。
反省点として自分の発表は本当にLTみたいな早口詰め込み発表でしたので要点を絞る訓練をした方がいいと思いました。また資料に不必要な図の引用をしてたので社の先輩に指摘されてしまったというのがあり、ある程度フォーマルな場所での発表の仕方というのを身につけた方がいいなと思いました。詰め込んだことに関しては、スライドの狙いとして後から見返して嬉しくなるようにしたので仕方ないんですが果たしてここの発表でそれは適切だったのかは悩ましいです。その点で唯一良かった点は初め20-30秒QRコードを出してスライドをぜひお手元でご覧ください!という話をしたのは直前で追加した動きでしたが良かったです。
そろそろ若手社員という枠じゃ無くなりそう(今3年目😇)なので何とか身につけたいです。。。
早口なものだった話は、多少言い訳すると30分の発表で募集されてたので30分まるまる使えるものだと思っていました。
が、実際発表する時に初めて25分で残り5分は質疑と書かれており・・・この辺は登壇時に気をつけることという旨の資料上で事前アナウンスされてなかったので大変焦りました。この辺はあらかじめちゃんと確認しておくと良いなと思いました(反省)
発表後に気がついたんですが、発表に関しても pyconの運営の人たちがノウハウを出してくれてたので見ておくとよかったなーと思いました。 (全然見つけれなかったのでいろんなところでこういう資料を宣伝して欲しかったw)