遅ればせながら、Folding@home のタンパク質構造解析プロジェクトに参加させていただくことにしました。

こんにちわ。せじまです。
今日はMySQLの話ではありません。

はじめに

こちらのスライドなどでも触れておりますが、弊社では、一部のサービスでオンプレミス環境の物理サーバを使っています。それらは仮想化せずに、消費電力効率などを改善することで、コストの最適化を図っています。

具体的に言うと

  • ピーク時の最大負荷を想定してベンチマークを実行し、そのときの消費電力を測定する。
  • ラック内にあるすべてのサーバに最大の負荷がかかった状態でも、何台かは修理交換やOSのアップデート作業などが実施可能になるよう、突入電流を想定して電源のマージンを確保する。

といった観点で、ラックごとの構成を設計しています。消費電力の試算をし、弊社のワークロードや(わたしが考える)InnoDBに最適なパーツ構成で、1ラックあたりに積めるだけサーバを積むようにしています。

2U4nodeのサーバを使うときなどは、3nodeでベンチマークを実行しつつ1nodeはrebootやnode交換を繰り返し、その際の消費電力を実測する、といったこともやったりしました。

ちなみに、ピーク時の最大負荷を想定したベンチマークを用意するというのは、割と重要なことです。具体的な方法としては、ピークタイムの消費電力などを実測し、それを下回らないようなベンチマークを用意したりしてします。

CPU使用率100%だったとしても、ワークロードや使っているCPUの命令によって、消費電力の傾向は変わってきます。余談ですが、Cで「このCPUで限界まで消費電力を引き上げるためには、どういうコードを書けばいいか」と試行錯誤して、実際にガッツリ電力使うコードを書いたこともありました。ただ、それは現実世界のワークロードや、現実的な消費電力とはかけ離れたものでした。

昨今の情勢を踏まえて

Folding@homeにて実施中の新型コロナウイルス(SARS-CoV-2)のタンパク質構造解析プロジェクトに、さくらさんが参加されているのは、存じておりました。
私も、自宅のPCで参加してたのですが、先週の火曜、ふと思ったのです。

「Folding@homeのクライアントが、わたしが用意したベンチマークより消費電力低いなら、オンプレのサーバで動かしても、ラックの電源容量的に安全なのではないか?」と。

かつて、ガッツリ電力食うコードを自分で書いたことがあったので、あんなワークロードじゃないだろうと思ったのです。

翌日、ipmitoolなどで比較したところ、 Folding@homeのクライアントと私が用意したベンチマークの消費電力は大差なさそうに見えたので、部内でやってもいいか相談したところ、了承が得られました。
以降、インストールや初期設定周りのスクリプト書いて、仕事の合間に、現時点でサービスや開発に投入されていないサーバに対して、徐々に Folding@homeをインストールしています。
消費電力やファンの回転数など確認しつつ、ちょっとずつインストールしていった結果、私がインストールしたかった台数の半分くらいまでインストールできました。
WorkUnitsがなかなか降ってこないことがあったり、あまりにCore数が多いサーバだと動かない(ように見える)WUが降ってきたりと、idleしてるサーバもあるようですが、さっき見た限り、合計1000Core以上はCPUをブン回せているようです。
弊社はオンプレでGPU使ってないですし、そんなにクロックの高いCPUではないので恐縮ですが、今後も、サービスや開発に影響が出ない範囲で、リソースを投入していきたいと思います。

おわりに

何かと大変なご時世ですが、皆さんお身体は大事になさってください。わたしはオンプレおじさんとして、できることをやっていきたいと思います。