TOP > ネタ・話題 > CPU律速なRuby/Pythonコードはデフォルト設定のdocker上で遅くなる - まめめも

CPU律速なRuby/Pythonコードはデフォルト設定のdocker上で遅くなる - まめめも

45コメント 登録日時:2020-05-23 03:52 | mametter.hatenablog.comキャッシュ

要約 dockerはデフォルトでセキュリティ機構(Spectre脆弱性の対策)を有効にします。この影響で、RubyやPythonのようなインタプリタは速度が劣化します。特にCPU律速なプログラムで顕著に遅くなります(実行時間が倍くらいになることがあります)。 現象 Rubyで1億回ループするコードを、直接ホスト上で実行する場合と、docker上で実行する場合で実行時間を比較してみま...

ツイッターのコメント(45)

興味深い………
:
そうなのか
限定的だのうw研究施設とかだと影響大なのか?
似たような問題としては2018年にLinuxのkernelのバージョンをあげたらJenkinsが5倍遅くなったり特定条件下で暗号ライブラリが2.7倍遅くなる現象に遭遇。当時はkernelオプションのptiやspectre_v2をoffにするかVMwareのバージョンをあげれば解決したのだけど結構悩んだ。
docker の話は良い知見になった。それより1億回ループで Ruby が Python の 5~6 倍速いの面白い結果だなぁ。
> dockerはデフォルトでセキュリティ機構(Spectre脆弱性の対策)を有効にします。この影響で、RubyやPythonのようなインタプリタは速度が劣化します。特にCPU律速なプログラムで顕著に遅くなります(実行時間が倍くらいになることがあります)。
他の仮想環境だとどうなっているのかも気になるなー / -
Dockerネタ①

--security-opt seccomp=unconfined付けるとDockerの速度が速くなるという話


Dockerのオーバーヘッドによるパフォーマンス劣化については
真面目に自分でも計測したいなと思ってる
“dockerはデフォルトでセキュリティ機構(Spectre脆弱性の対策)を有効にします。この影響で、RubyやPythonのようなインタプリタは速度が劣化します。”
これIntelなんかではなくAMD買えで終わる話なんじゃないの? 最近はデスクトップやサーバーではAMD優勢だし、いまだIntelのMacではただでさえクソ重いDockerなんて使わんでしょ。
内容はさておき、何故ボトルネックではなく「律速」と書いたのかが気になる。

/
私ならホストマシンとDockerで比べたらDockerの方が遅いだろ!って安直に考えて終了してしまう。
原因と対策もきちんと調べられててすごいわ。
なるほどなぁ
STIPBが原因ならintel製のCPUじゃなければ問題はなさそうだね
アーキテクチャー的にはCPUぶん回すコードにDockerが向いてないって事なんだが、そういうユースケースも出てきたってことなんだろうな
の問題は、どれくらい今後尾を引くのか、CPUのプロはどう思っているのか、SIGARC とかの人に聞いてみたいけど、どこに質問をもっていくべきかよくわからない。研究会発表するのもねぇ @shtaxxx san とかどうすか。
Spectre対策で投機的実行がdockerだとデフォルトoffなので、CPUがボトルネックな環境だと遅くなるよ、的なことだった。Ruby/Pythonに限らずってことよね。
いや〜まじか。ありがたい発見 /
“一方、dockerはデフォルトで、Spectre脆弱性の対策を有効にしてコンテナを実行します。”
なるほど🤔
機械学習系のバッチ、コンテナで動いてるけど影響してんだろうなぁ
RubyやPythonのようなインタプリタは速度が劣化します。特にCPU律速なプログラムで顕著に遅くなります(実行時間が倍くらいになることがあります)/ こういうのあるのか
Docker上では遅くなるのか。/
- まめめも要約 dockerはデフォルトでセキュリティ機構(Spectre脆弱性の対策)を有…

【出所:はてなブックマーク 厳選】
律速ってボトルネックのことなのね /
Spectre脆弱性の対策がデフォルトONなので、docker上でのPythonは遅い。知らなかった…コンペ用コンテナなら切っても良さそうな /
まとまってる。/
タイムラインがこの記事で湧いてる。
そりゃ気になるよなあ
Docker for Windowsではどうなるんだろ
seccompに付随して有効になるSpectre対策によって性能劣化しているとのこと
なる程ね でもまぁ記事中にもあるように LL系言語でCPU bound処理書かない気はする
なるほど Spectre 対策の影響か。『CPU律速なRuby/Pythonコードはデフォルト設定のdocker上で遅くなる』
なるほど〜😰
とりあえず気にしないでおこう😓
知らなかった。確かに別プロセスのヒープを読んで処理内容を予測するサイドチャネル攻撃には有効なのかな?
そういうことか >
へー。あとでもうちょっと調べて見る。 >
default設定のホストとdockerで比較した場合の話。原因はspectre対策。dockerは有効になっててホストのLinuxは無効だそう。ホスト側でdefault無効なのはいいことなの?遅くなるからかな
SECCOMP_FILTER_FLAG_SPEC_ALLOW を設定しておけば問題ないのかなと思ったけど、そもそもruncでは未実装だった。crunにはある。
ホストマシンがEPYCの場合も起こるのかな。
驚きだ!しかも、対策がまだない
"RubyやPythonのようなインタプリタは間接分岐(switch/caseやdirect threadingなど)を多用" ほええ、そんな性質が。 /
- "ただし、これはCPU律速なコードでしか問題にならないと思います。Ruby on Railsを使ったWebアプリは多くの場合IOやGCが律速になっているので、Spectre対策を止めても観測できるほどの速度
CPU律速なRuby/Pythonコードはデフォルト設定のdocker上で遅くなることを発見したらささださんが原因を調べてくれたのでまとめておきました
以上

記事本文: CPU律速なRuby/Pythonコードはデフォルト設定のdocker上で遅くなる - まめめも

いま話題の記事