fslashtのサアラたん日記

ドール写真アルバム
トリップ:WMfSLASHTY
主なカテゴリ:
[お人形(あるいは法廷)]:[sahra]サアラたん/[lycee]リセたん/[maya]マヤっち/[mokochan]もこちゃん
[メイド喫茶(あるいはパテント)]/[maid]
[プログラミング]:[lua]/[proce55ing]  マイコン:[USBSPYDER08]/[MXSDVK]

slashdot.jpでの日記はこちらです。サイトはこちらです。(簡易投稿フォーム,転記処理)
1000 | 01 |
2001 | 01 | 06 |
2003 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 |
2012 | 02 | 03 | 04 | 05 |

2009-09-11

第98回 カーネル読書会に参加してきました。 07:42

第98回カーネル読書会のおしらせ


日時:09月10日、18時半開場、19時ころ開始

お題:はてなでのハード性能の引出し方

発表者:田中さんはてな

内容:はてなでは、現在約500台のLinuxサーバを動作させています。

このような大量のサーバを漫然と使うのではなく、限界に近い性能を

引出すためのシステムハード・ノウハウを紹介します。具体的には、

自作サーバ仮想化ネットワーク最適化といったあたりを予定しています。


18:30頃、開場、LTないし自己紹介など

19:00頃、お題開始

20:00頃、懇親会開始

21:00頃、中締め、お開きへ


今日のお題は、はてな中の人田中さん)による、はてなサーバ管理技術。

はてなでは、自社サービスのために500台以上のサーバを独自に製造して運用しています

そのノウハウがいま明かされる・・・!


会場は楽天タワー

f:id:fslasht:20090910191640j:image

f:id:fslasht:20090910191659j:image


カーネル読書会のために大勢の受付スタッフが・・・

楽天タワー内部

f:id:fslasht:20090910191939j:image

f:id:fslasht:20090910192021j:image



会場到着

f:id:fslasht:20090910192157j:image

到着が遅れて19:20くらいからの参加でしたが予定をこえて20:30までやっていたので盛りだくさんの内容でした。


以下勉強会のメモ

f:id:fslasht:20090910192233j:image



■ 安定性

負荷を把握する

f:id:fslasht:20090910192230j:image


冗長性確保

アプリケーションサーバーは冗長かしやすい(状態をもたない)が、データソースネットワークは難しい。


安定性のトレードオフ

 安定性 vs 資源効率

 安定性 vs 速度

※活発に開発をおこなっているサービスでは余裕をもって


不安定要因

。機能追加

メモリーリーク、地雷(特定のURLで無限ループになったり)

・ユーザーアクセスパターンの変動、(slashdottedなど)

・データ量増加

・外部連携の追加(広告でAMAZON API,YAHOO API)※アマゾンが落ちるとはてながおちるということがあった→現在は対策した

ハードウェア障害(メモリ、CPU,NIC)は日常的に故障する


ロバストなおシステムにするために

・状態をもつプロセスをへらして、DBに集約する(中間データ以外はローカルFSにもたない)

・状態を再構成でいるようにする(一次データ、2時データをきりわける)

・冗長度をたかめる

冗長化と効率を両立するために仮想化技術を活用(ZEN)

※特にコストパフォーマンスを重視


・IPMIの代替

ハードウェアリソースの利用率を向上

 同じ傾向、負荷が高い機能の同居はさけるべし


仮想化サーバの例

 Webサーバのあいているところにキャッシュサーバ

 DBのIOがあいているところに別のサーバ


サーバ管理ツールで、どのサーバに仮想OSがきているか管理手キル用になっている。

物理的なリソース市ロース制約からの解放、ソフトレベルでの橋梁な経過





■ 性能を引き出す

システム安価に構築

・できるだけソフトでがんばる

NAS,SAN,ルータは普通のPCサーバルータで実現する)

 全部で50TくらいのSANを構築しているがすべてPCサーバで実現している。

 例)GoogleでもECCメモリは使用するがRAIDは使わないなど割り切って

f:id:fslasht:20090910193923j:image


低コストを実現するには

 ハードウェアの性能はムーアの法則で向上するためそれをみこして投資

 メモリ、HDDは3年前にくらべ10分の1ていどの

(サラロフ氏作成のグラフで解説)


 4コア8Gbyteサーバを標準としている

 更新頻度:2年前のCore2duoサーバは引退、Quadにどんどんおきかえていく。(出消費電力あたりのパフォーマンスを最大化するため)

 はてなで使用しているサーバはすべて自作している。

デスクトップ用パーツ(M/B,CPU)をつかって、オリジナル1Uサーバ筐体にいれいてる(電源は1Uサーバ用)。NO ECC,NO RAID。HDDはリムーバブルにしたがなんか性能がおちるので)

 古い機材は秋葉原などで中古でパーツ売りしている


 仮想化を前提としてハードウェアを構築

 最小限の管理機能、他コアCPU、大量メモリ

 IOについては用途によって最適なものにしている。

f:id:fslasht:20090910194915j:image


ハード特性の利用

・データをメモリーに載せる(MySQL,TokyoTirant)

・データ量にメモリをあわせることも重要(16G vs 32Gで、16GではIO WAITが頻発しパフォーマンス低下につながっている。)→恩メモリーで処理できることが重要

 ※常にパフォーマンスを計測して改善することが重要


IO性能の向上

・SSDを利用する(最近は採用をはじめた)※MLCを採用している

性能;っ目折>SSD>HDD RAID0/10>RAID1

。32Gオンメモリー(DELL 1U 30万くらい) vs 16G+SSD(内製1Uサーバ 12万円くらい) では、16GはIO R/Wは多く発生しているがIO Waitが少なく性能が同じくらいになる

※ ただし、まだSSDの障害パターンがわからないのでリスクがある。去年買った安物は半年で故障したので、Intel SSDを採用している(ただし、まだ故障したことがないのでどういう壊れ方をするのか不明)

IntelSSD ファームアップデートはなるべくかけている。S.M.A.R.Tはあんまりみてないw

※ 主に検索サーバに採用している。運用開始してから半年くらい。

(マスターデータはHDD,キャッシュスレーブ)としてSSDを使用している。壊れたら捨てる。データが化ける故障は怖い)


ネットワークの冗長化

・昔は1サブネットだった。ただ1サブネットに600台いれるとArpテーブルがあふれる!

・現状は1サブネットに100台程度の構成にした

・この規模でもPCルータを活用している。

 →昔は1台でやっていたが、ボトルネックになるので複数化した

f:id:fslasht:20090910195113j:image

ハード(内製)

・ちょといいM/B

・ECCを採用

・NICは2つ



PCルータ

 はてなボーダールータは、すべてPCルータ

 インバウンドが300Mbpsぐらいで頭打ちなようなので、限界性能を具体的に知るために良い機材がないか探した

f:id:fslasht:20090910195349j:image


測定方法

 クライアントはてなで現在統一している構成をほぼおなじ) Core2Quad/4G CentOD

 PCルータ(旧):上記+NICXen上で動いている

 ↓

 PCルータ(新):オンボードに2NICあるAsusM/BXen廃止


特定手順

 はてなインバウンドトラフィックを実際にしらべて、MTUを変更

 MTU 152(TCPペイロード100byteくらい)

 netperfを4つは知らせる

 120秒間測定の平均


 片道 200Kbpsくらいだった。

 Xen上ではオーバーヘッドで半分くらいになってる!

 nicの違いで2割くらい速度がかわた→M/B変えた


考察

パケットロスはほとんどない

CPUは100%にならないことも(NICボトルネックの場合)

・負荷がかかっているときはCPU0のSoftInerruptが高くなる(ボトルネックはNICの場合?)

 ※hiはCPU0に割り込みがかかるようだ→その後スケジューリングするが実行するCPUが固定される?irgバランス

・ethertoolって信頼できる?


HardInterrupt

topコマンドでhiで表示されるもの

デバイス割り込みハンドラ(ソフト割り込みはSoftInterrupt)

・できる限り速やかな処理が必要(割り込みが多いとCPUがユーザーランドに移らなくなる)

 上記の計測では、20kHz程度で割り込みがおこっていた


SoftInterrupt

topコマンドでsiで表示されるもの

デバイスからパケットを受け取るドライバ部分

ネットワークスタック部分

・日また時はカーネル内の適当なところで割り込みが発生する(HIの最後など)が、忙しいときはksoftirqdカーネルスレッドから呼ばれる


NAPIの仕組みが普及してからは、デバイスドライバからのパケットをうけとるのがhiからsiになった。

高負荷時にもレスポンスが悪くならない。

ブロードキャストストームでも割り込みハンドラが呼ばれまくってユーザープロセスがまったく動かなくなることを防げる

NetBSD方面では高負荷対応の場合、割り込みではなくポーリングでやることがあるとのこと)


最近のNIC

・interrupt coalescing

 派毛とtが何個かたまってから割り込み割り込みによるコンテキストスイッチが減少

TCP Segmentation Offloading (TSO)

 


失敗談

・netperf の -m オプションパケットサイズを変えても反映しない。

 →Nagleアルゴリズムの効果で、ひとまとめにされていた。TCP_NODELAYも利かない(MTUをしぼったら反映した)

・netpref 1つだけうごかしても1コアしか回っていない感じ

クライアントボトルネックになりやすい(システムコールとTCPスタックまで処理するよりルータよりも負荷が高い) vs ルータはルーティングがカーネルで完結するので速いのかも

M/BはSuperMicro X7SBL-LN2に交換したら 400Kbpsぐらいと旧PCルータの2倍の性能が出た

 ※サーバ用のNICはバッファなどがぜんぜんんちがうので速いと会場から


将来

・Xen3.2からのI/O-MMUで高速化dけいるかも

・siキューCPUごとに独立していてスケジューリングしたCPUに縛られるので、特定のCPUに負荷が集中するので、その際別CPUへバランスする機能があったら速くなるかも

・hiを複数コアに文才しても並列度があがらない(CPU負荷が100%にならない)。→BSDでは100%まで使いきれるようなのでがんばってみる


はてなでは

Xen使うとネットワークi/oが遅くなる

SSHがつかえないときかんりできるようXenをつかっているという事情もあるので、仮想化しないでM/BのIPMI付のサーバM/B(値段的に3倍程度なので)にしていく

・Xen3.2でも再検証

OSCentOS


まとめ

はてなシステム

ハード安価

 ・ソフトでがんばる

 ・性能はできるだけ引き出す


・自作サーバの細かいはないしゃ、自作サーバカンファレンスで!(pixivさん、セレボさんとでカンファレンスを企画したい→会場でこまってる→楽天でよければ)


Q&A

・世界記録では9Gbpsくらいでてるのでもっとパフォーマンスあがるのでは?

IP tableのF/が20〜30かかってるので、負荷が高い

CentOSをカジュアルにつかっている

カーネルオプションは変えていない

カーネルバージョンをあげるべきでは?→社内的には嫌がらる(カーネルバージョンはすべて統一したい。RAIDのドライバとかではまりたくない)



/

懇親会のピザビールパーティ

f:id:fslasht:20090910203226j:image

f:id:fslasht:20090910203259j:image


乾杯!

f:id:fslasht:20090910203307j:image

f:id:fslasht:20090910205906j:image

f:id:fslasht:20090910210613j:image


社是!

f:id:fslasht:20090910203041j:image


打倒アマゾン!

f:id:fslasht:20090910205840j:image

楽天は仮面ライダーアマゾン打倒を目指す悪の秘密結社だったのだ!


対アマゾン兵器

f:id:fslasht:20090910210622j:image

f:id:fslasht:20090910210632j:image

f:id:fslasht:20090910211107j:image


/

f:id:fslasht:20090910211445j:image

f:id:fslasht:20090910211524j:image

f:id:fslasht:20090910212430j:image

勉強会のあとは、有志による2次会。

f:id:fslasht:20090910212505j:image

大変濃いメンバーがあつまりました。



乾杯

f:id:fslasht:20090910213532j:image

f:id:fslasht:20090910214747j:image


宴の後

f:id:fslasht:20090910230120j:image

f:id:fslasht:20090910231704j:image

キミのこと忘れない。
counter: (since:2004/07/16) , profile
リング: