自作サーバ同窓会で話をしてきました

現役世代として自作サーバ同窓会で話をしてきました。
存在しててスミマセンスミマセン状態だったうえに、中二病全開との同僚の評価もあり、手ごたえを感じています。

同窓会といいつつ、前回のカンファレンスはこの手のコミュニティに近づくのが苦手だったのでいきませんでした。
そんなわけで遅咲きな内容になってしまいますが、他の皆さんと同じように独自の進化をした自作サーバについて紹介となりました。

うまい文章を書くのは苦手なんですが、会場でも議論のネタになった自作サーバってどうなの?ってところを自分の意見を改めてまとめます。

物理なめんなよ!!!!!!!!11111

・ DCの床下這って線とおしてたらエアコンの吹き出し口の前にうっかり突撃して息できなくなって死ぬかとおもったりとか!
・ 蟹NICとIntelNICのPHYの質の違いをみるためにオシロあてたりとか!
・ 自作サーバ山ほどかかえてタクシー乗ろうとしたら「近いんでちょっと・・・」っていわれて乗車拒否した糞タクシーが高速バス降りてきた長距離の客を喜んで運んでいったりとか!
・ その後途方にくれてニッポンレンタカーに飛び込んでボンゴ借りてサーバ運んだりとか!
・ 新しいDC契約したらエアコンの吹き出し口の真下でジャケット着てても2時間現地作業してると腕の感覚なくなるとか!
・ ガムテにマジックで「ガス室」ってかいてあるのみたりとか!
・ ダンボールと一緒に納品書捨てちゃってゴミの山あさりに言ったりとか!
・ 夏場DCが冷えないで27度とかになってCPU温度のアラートきまくるとか!
・ 上位スイッチがゴミでフェイルオーバー不可能とか!
・ 夜中にラリー車でラリドラが障害対応にいったりとか!
・ 元旦にlibcぶっこわす人がいたりとか!
・ まだまだいっぱいありますよ!

これ全部クラウドでなんとかなっちゃうんですよね。

自作サーバは今回スポットが当たった一部分だと思います。
自作に寄り道してみませんか?

CPUfreqを利用して微妙に節電

一ヶ月のガスの使用量は1㎥か2㎥。水道料金は基本料だけで抑えて暮らしていますが、電気代だけはどうしようもありません。
そんな極貧暮らしが多少楽になるネタを仕事中に見つけました。

CPUfreqを利用してspeed stepをよりユーザの意図した通りに刻んで節電する方法です。

必要なパッケージをインストールしてから、デーモンを一つ動かすだけです。

sudo aptitude install cpufreqd cpufrequtils
sudo /etc/init.d/cpufreqd start

これでcpufreq-infoコマンドで統計を見ることができるようになります。

$ sudo cpufreq-info                                                                                                                                                                                         
cpufrequtils 007: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 1.60 GHz - 2.39 GHz
  available frequency steps: 2.39 GHz, 1.60 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 2.39 GHz and 2.39 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 2.39 GHz (asserted by call to hardware).
  cpufreq stats: 2.39 GHz:24.38%, 1.60 GHz:75.62%  (6118618)
analyzing CPU 1:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1
  CPUs which need to have their frequency coordinated by software: 1
  maximum transition latency: 10.0 us.
  hardware limits: 1.60 GHz - 2.39 GHz
  available frequency steps: 2.39 GHz, 1.60 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 2.39 GHz and 2.39 GHz.
                  The governor "ondemand" may decide which speed to use
                  within this range.
  current CPU frequency is 2.39 GHz (asserted by call to hardware).
  cpufreq stats: 2.39 GHz:25.84%, 1.60 GHz:74.16%  (7899714)

このように動作クロックの割合など見れて便利です。
自宅のサーバは普段仕事をしていないので、少しでもケチるためにondemandからpowersaveに変更します。

変更は面倒なのでそのままパラメータを投げてしまいました。

# echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
# echo powersave > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor

powersaveはondemandよりクロックの回復が遅いみたいです。とはいっても自宅サーバのCore2 Duo E6600は2段階しかspeed stepしてくれないので効果は薄そうですが。
i7 870との比較です。

# E6600
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies                                                                                                                                        
2394000 1596000

# i7 870
$ sudo cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
2934000 2933000 2800000 2667000 2533000 2400000 2267000 2133000 2000000 1867000 1733000 1600000 1467000 1333000 120000

家のサーバの電源が落とせないため、実際の効果は職場の検証機を使って暇なときにやってみようと思います。

自作サーバを半年運用して

世間ではディスられ傾向にある自作サーバですが、自分では初期コスト以外のメリットもあると考えています。

まず、手間がかかることです。
手間をかけて運用を安定化させていく中で、問題や疑問にぶちあたりまくりました。
単にバッドノウハウがたまっていくだけでなく、チューニングすべき箇所や、リソース配分の極端な偏りや、普通だったら考えもしない見えにくいボトルネックが自然と見えてきました。
システムの負荷をLAやIO wait等でざっくりみて「もう限界だー」とベンダーサーバに乗り換えたところで、同じ理由がボトルネックになるのは目に見えています。
ハードウェアが変わってもOSは変わりませんからね。
箱だし設定で高いサーバをつかってもお金の無駄です。うらやまけしからんです。

壊れるけどメンテは案外しやすい
ハイスペックなサーバを必要最低限の台数で運用していた時と、安い自作サーバを並べて1,2台壊れてもいい運用を比べると、データセンターにいかなきゃいけない頻度はあまり変わらない感覚です。
台数が少ないと、メモリエラーやディスク故障など、安全を考えるとその場で対応しないといけないので、なんだかんだで手間がかかります。
共食い修理も自作サーバの利点ですね。MiG-21とF-15くらいの感覚です。

中の人が育つ
どこかの豆腐屋の86じゃないですけど、完成されたベンダーのサーバと比べるとやはり問題だらけです。
ひとつひとつの問題をじっくり解決することによって、みっちり経験をつむことができました。
自作サーバを将来捨てないといけない時が来るかもしれませんが、サーバのリソースをしゃぶりつくすくらいまでチューニングノウハウがたまったので、自分の会社はいつハイスペックなサーバに乗り換えてもコストに見合った使い方もできるし、増える続けるコストに悩むことはないでしょう。

とかいろいろ書いてみたら、自作サーバじゃなくても環境があれば十分ふかぼりして楽しめますよね。そもそも予算が潤沢にあれば考える必要がまったくないことです。
ちなみに自分はProliant大好きです。

自作サーバの節電対策をしてみた

データセンターの電気代は固定ですし、エコはエゴだと思っているので、グリーン的な要素はいっさいありません。
安くて台数そろえてナンボの自作サーバ。数ワットでも節電できればさらに詰め込めるのでは?という趣旨です。目標はアイドルで一割減。

またラップトップチューニングと違って、APサーバはパフォーマンス優先なのでいろいろアイドルに持っていくことは期待できません。
コールを減らすためにアプリに手をつけるのも効果がみにくいために非現実的です。
ですので無駄に火がはいっているものをどんどんオフにしていきました。以下のような感じです。

  • オンボードオーディオデバイス
  • プライマリVGAをオンボードにする
  • USB3.0コントローラ(USB2.0だけ使う)
  • SATA2コントローラ(SATA3のポートだけ使う)
  • WoL
  • パラレル、シリアルポート
  • IGPUの定格を下げる
  • メモリクロックを下げる(1600→1033で0.5Wほど下がったがパフォーマンス優先のために1600で)
  • USBポートをサスペンド

これで5W近く減らすことができました。アイドル状態で32Wちょっとから28W前後までもっていくことができました。掛ける台数なので、浮いた電気で1ラック2,3台はサーバが増やせそうですね。