qpstudy 2014.04 ハードウェア設計の勘所
TRANSCRIPT
第3セッション ハードウェア設計の勘所 qpstudy 2014.04 -険しい道の歩き方をちょっとだけ教えてあげる- Apr 19, 2014 @ DWANGO セミナールーム Takeshi HASEGAWA (@hasegaw)
@hasegaw is 誰 長谷川 猛 (HASEGAWA Takeshi) twitter: @hasegaw 前職時代 ・SEとしてシステム構築、客先のシステム運用、提案 ・気付いたらプリセールス~PM担当SE (ざっくりデザイン、工数/導入物品見積もり、 構築プロジェクトの管理、保守等の問い合わせ対応) 現職 ・フラッシュを軸としたアプリケーション高速化を支援する セールスエンジニア
ioMemory
Fusion-‐io Confiden-al 4
@hasegaw is 誰
今日のトピック • モチベーション – どうしてハードウェアのことを知るべきなのか – サーバの構成とは
• コンポーネント別のポイント – プロセッサ – メモリ – ネットワーク – ストレージ
• その他のコンポーネントや留意事項 – マネジメント機能 – 保守
ハードウェアのことを知るべき理由
• ソフトウェアは、ハードウェア上で動作する
• ハードウェアを知っていなければ、 適切なソフトウェアのデザインはできない
• ハードウェアを知っていなければ、
• クラウドを使っていますか?
サーバーの構成とは
HDD/SSD
DRAM
DRAM
DRAM
CPU
CPU
CPU
CPU
PCIe
PCIe
Processor
ます最初に知っておくべきこと NUMAとは 要件の整理
スペックと選定方法
プロセッサー
• コンピュータの心臓部 • ソフトウェアに従って データを入力、加工、出力する
プロセッサーの選定
• まず最初に知っておくべきこと – 今のプロセッサのデザイン - NUMA – 必要としているのはコアあたりの処理能力か、 トータルの処理能力か
– どれだけのメモリチャンネル、I/Oが必要か
NUMAとは何か
NUMA(非対称メモリアクセス) vs UMA(対称型マルチプロセッサ)
Uniform Memory Access (UMA) Non-‐Uniform Memory Access (NUMA)
近いデバイスへ速くアクセスできるが、遠くのデバイスにはアクセスに時間がかかる
どのCPUから見ても同じ時間でアクセスできるが、全CPUでバスを共有する
NUMAとは何か
NUMA(非対称メモリアクセス) vs UMA(対称型マルチプロセッサ)
Uniform Memory Access (UMA) Non-‐Uniform Memory Access (NUMA)
近いデバイスへ速くアクセスできるが、遠くのデバイスにはアクセスに時間がかかる
どのCPUから見ても同じ時間でアクセスできるが、全CPUでバスを共有する
PCIe PCIe DRAM
PCIe
CPU CPU
DRAM
DRAM
CPU CPU
MCH
NUMA ‒ AMD と Intel
Quick Path Interconnect (Intel) Hyper Transport (AMD)
IvyBridge EP (E5-26xxv2)
プロセッサーのスペック • コア数/クロック周波数
• みんな認識してる(よね?) • インターコネクトの数
• 幾つのプロセッサとNUMA構成を組めるか • メモリチャンネル数
• CPUが認識できるDIMM数には限りがある • 3× 4[channel] = 12[DIMM per CPU] • その他制限は後述
• PCI Express レーン数 • CPUあたりのPCI Expressレーンは有限資源 • 40 lanes per CPU、ただし自由には使えない • PCIeスロットの使い方は重要
プロセッサーの選定
• コア数重視か、クロック周波数重視か – 高周波数なモデルは、コア数が少ない – 多コアなモデルは、周波数が落ちる
• 複数のコアを使い切るためには、 並列度が必要 – アプリやミドルウェアのマルチスレッド対応状況は?
プロセッサーの選定 • ワークロードで判断するしかない – アプリケーションサーバ • 多くの場合は多コア重視のほうがよい
– バッチ処理 • 並列度が低いとクロック周波数がきくケースも
– RDBMSミドルウェア (MySQLなど) • どちらかと言えばSQLスレッドが詰まることが多い • トランザクションを乗り切るスピード重視 ‒ 高周波数 • クエリへの応答の並列度重視 ‒ 多コア
– スレッドが下手なHPCワークロード、 リアルタイム応答 • コア数よりもコアあたりのクロック周波数が効いたり
整理すると:プロセッサーの選び方
• 1プロセッサでいけるなら、1プロセッサで – Intelならいま一発12コアまではいける – 6コア×2より性能を出しやすく、扱いやすい
• 2プロセッサ以上必要な事情とは – コア数がもっと欲しい場合 (16~24コア以上)
– DRAMスロットが足りない場合 – PCIeスロット/レーンが足りない場合
Memory
知っておくべきこと 要件の整理とサイジング 知っておくべきトレンド
メモリ(一次記憶)
• コンピュータが実行するプログラムや データを保存する一次領域
• 一般的にDRAMが利用される Dynamic Random Access Memory
• DIMMモジュールとして取り付けて 利用する
DIMMの価格
• 低容量なDIMMは安い • 大容量なDIMMは高い
DIMMの搭載方法
• チャネル内に同種類DIMMが揃えば高速 • 実装・増設単位は、事実上「チャネル単位」 • プロセッサがあるスロットのみ利用可
メモリーの選定
• 必要な容量は? • 導入/追加の単位は? • DRAMの速度ってどれぐらい? • 今後のために想定すべきトレンド
要件の整理とサイジング • 要件 – 必要な容量は? – 段階的な拡張は可能か?
• サイジング – DIMMサイズ、チャネルから最適な構成を 要件から選ぶ • 例: 60GB → 3*3[ch]*8[GB DIMM]=72GB
– 容量あたり幾つCPUが必要か • プロセッサあたりで装着できるDIMM数に制限有り
– 枚数は少ないほうがよい • マシンによっては、DIMMが多いとメモリ速度が低下
Memory
知っておくべきトレンド
メモリのティアリング
• ランダムI/O性能、帯域幅ともに最強 • その要件で本当に必要ですか? • どうしてメモリを積むのか – シミュレーション等HPC的な計算 – 容量 – ストレージが遅いのでキャッシュしたい
今はDIMM以外の選択肢がある
ioMemory
PCI express接続のフラッシュティア
• DRAMより遅いが10年前のDIMM相当のシーケンシャル性能
• 再起動しても消えないRAM Diskとして、 またはDisk Cacheなどとして利用できる
• DRAMとは違ってメリットがある – バイト単価が安い – 消費電力が少ない – 大量に詰める
PCIe Native Flash
• フラッシュはDRAMより低速 – だが10年前のDIMMに匹敵する帯域幅 – 再起動してもデータが消えない – しかも安い
0.0GB/s 2.0GB/s 4.0GB/s 6.0GB/s 8.0GB/s 10.0GB/s 12.0GB/s 14.0GB/s 16.0GB/s
Bandwidth
Bandwidth
0
2000
4000
6000
8000
10000
12000
14000
16000
18000
0
500000
1000000
1500000
2000000
2500000
4 GB 8 GB 16 GB 32 GB 365 GB Flash
785 GB Flash
1205 GB Flash
定価
\/GB
帯域幅の比較
0.0GB/s
2.0GB/s
4.0GB/s
6.0GB/s
8.0GB/s
10.0GB/s
12.0GB/s
14.0GB/s
16.0GB/s
ioDrive2 ioDrive2 Duo PC2-‐2700 PC2-‐3200 PC3-‐6400 PC3-‐10600 PC3-‐14900
Bandwidth
Bandwidth
バイト単価
0
2000
4000
6000
8000
10000
12000
14000
16000
18000
0
500000
1000000
1500000
2000000
2500000
4 GB 8 GB 16 GB 32 GB 365 GB Flash 785 GB Flash 1205 GB Flash
定価
\/GB
フラッシュの性能の考え方
DRAMに全てのデータを置いた場合、フラッシュに全てのデータを置いた場合の コスト差。どちらも秒間800,000トランザクション/秒の性能要件を満たしている ソース: hYp://wikibon.org/wiki/v/Data_in_DRAM_is_a_Flash_in_the_Pan
78ドル (7956円)
1209ドル (123318円)
PCIe Flashのまとめ
• 年々、ワークロードのデータ量は増加傾向 • DRAM+Flashのティアリングは、今後、”必要”に
• もはや”容量”はDIMMで賄う領域ではない • 大容量のDIMMは高価 • プロセッサのスロット数制限があり 小容量のDIMMを並べるのは不可能(or高価)
• DIMM 256GBぶんの価格で 128GB DRAM+400GB Flashの構成が視野に
• スピード面でも、PCIe Flashは 10年前のDRAMクラスの帯域幅
• 10年相当と言え、ディスクと比べれば明らかに速い
Network
まず最初に知っておくべきこと 特性にあわせた選定を
ネットワークが大事な時代
• コンピュータはネットワークに繋がっている
• 一部のユースケースを除けば データを送受信して、はじめて価値がある
• まわりとのコネクティビティ、大事
(余談)日本とブラジルでマリオカート
• 光の速度 – 秒速30万キロメートル(地球7周半)
• 日本-ブラジルでマリオカートしよう – ブラジルからの光は0.13秒遅延する – 時速100km=秒速27.7m – 27.7[m]×0.13[sec]=3.6 [m] – 光でさえ Mini 1台分の遅延 – コンピュータ通信はもっと遅い
光がブラジルから日本に届くまでに 100km/hの車が進む距離
(だいたい、だよ?だいたい。)
ネットワーク
• 現在よく使われる イーサネット規格 – Gigabit Ethernet (1Gpbs=100MB/s) – 10Gigabit Ethernet (10Gbps=1GB/s)
• ネットワーク性能の考え方 – 帯域幅 (bps) – 単位時間あたりのパケット数 (pps) – パケットの送信から受信までの遅延時間 (ns/μs)
10GbEの魅力
• GbEと10GbEで応答時間が けっこう変わる
• レイテンシーに敏感な部分では10GbE – アプリケーション ‒ DB間のクエリとか – データの同期レプリケーションとか
• 資料引用元は Solarflare (超低遅延NIC)
必要な所には高速なインターコネクトを
必要な所には高速なインターコネクトを
必要な所には高速なインターコネクトを • 10Gbpsは割と身近になってきている • 必要に応じて積極的に使おう • システムの高速化 – APサーバ ‒ ミドル間のインターコネクトなど
• 広帯域なデータ送受信が必要なシステム – 動画配信 – 大量のショートパケット – etc
NIC/HBA利用時のベストプラクティス • 特定のアダプタが障害で止まるかもしれない • 二枚以上搭載するなら、冗長化するポートは別々のアダプタを使う
• Fibre Channel (FC)などでも同様の事が言える
Storage
HDD, SSDとRAID アレイコントローラの役割 PCIe Flashとは何なのか
ストレージ • コンピュータの構成の中で 一番価値があるコンポーネント – 仮想化やクラウドにより、データ以外は代替可能
• システムの性能を最も左右する コンポーネント – CPU&メモリ…ナノ秒(10^-9) – ネットワーク…マイクロ秒(10^-6)~ミリ秒 – ストレージ…マイクロ秒(10^-6)~数十ミリ秒
• 様々な構成 – HDD, SSD, RAID, アレイコントローラ
Storage
Hard Disk Drive
ハードディスクドライブ (HDD)の構造
1) SATA等のインターフェイス 2) 2.5’ フォームファクタ 3) 見えないが、コントローラ (マイコン)が存在
4) プラッタ 5) アクチュエータ 6) 磁気ヘッド
写真引用元 hYp://www.businesswire.com/news/home/20130929005004/ja/
ハードディスクドライブ (HDD) • 50年以上に渡り使われてきたストレージ – 磁気的にデータを読み書きする – ほぼ対称的なリード/ライト性能 – 円盤状のメディア、ヘッドでデータを読み書き
• 複数のモデル – SATA (デスクトップ用など) – Nearline (Near on-line) SATA (NASなど) – SAS (サーバ用などで高速)
• トレンド – 小容量・高速性を求める場合はフラッシュへ SAS HDDは今後消えていくのでは
– 大容量のSATAが中心に
Storage
Solid State Drive (SATA/SAS SSD)
ソリッドステートドライブ (SSD)の構造
1) SATA等のインターフェイス 2) 2.5’ フォームファクタ 3) NANDコントローラ 4) RAM 5)NAND Flash
引用元 hYp://www.dosv.jp/other/0910/02.htm
ソリッドステートドライブ (SSD)の構造
• ここ数年で採用が進んできたストレージ – デジカメ/スマートフォン同様、 NANDフラッシュメモリを利用しデータを保存
• NANDフラッシュの特徴 – 読み込みは高速、書き込みは低速、 書き換えはド低速
– 書き換え回数に制限がある
NANDフラッシュとはなんぞや • NANDセルの浮遊ゲート内に電荷を 閉じ込める
• 電荷があるかないかで 0 or 1を記録
• NANDセルの種類
� �������
������
���� �� �
NANDフラッシュとはなんぞや
• ゲート内に電荷量をコントロールし プログラム
• 電圧をセンシングすることで値を読み出す
� �������
���� �� �
������
11�01�10�00� 11�01�10�00� 11�01�10�00�
�*/$-+� �#.0'�
���%0)������ !������������"�
�����(,0&�� �
��%0)�����
Storage
RAID
RAID 0とRAID 1 引用元 hYp://ja.wikipedia.org/wiki/RAID
複数のデバイスで性能を引き上げる。信頼性は犠牲に(メンバの故障=停止)
同一内容を複数デバイスに書き込み信頼性を引き上げる。
RAID 01とRAID 10 引用元 hYp://ja.wikipedia.org/wiki/RAID
RAID-‐0とRAID-‐1を組み合わせた構成。 組み合わせ方によりRAID-‐10とRAID-‐01の2パターンがある
RAID 5とRAID 6 引用元 hYp://ja.wikipedia.org/wiki/RAID
3台以上のディスクで、分散パリティを保存することでメンバデバイスの故障に備える。RAID-‐5は1パリティで1デバイスの障害、RAID-‐6の場合は2パリティで2デバイスの障害に耐える。パリティの再計算が必要となるため書き込みが遅くなる傾向にある
RAIDの種類まとめ • RAID-0 – 複数デバイスで性能を引き上げる。信頼性は低下
• RAID-1 – 複数デバイスに同一内容を置き、信頼性を上げる
• RAID-5 – 3本以上のデバイスのうち1本にパリティを持つ。1本のデバイス故障から保護できるが低速
• RAID-6 – 4本以上のデバイスのうち2本にパリティを持つ。2本のデバイス故障から保護できるがさらに低速
• その他のパターン – RAID-10, RAID-01, RAID-50など
RAIDレベルの選び方 • 信頼性を求められるところにRAID-0を利用してはいけない – クラッシュリスクが高まります – 内部冗長化されたPCIe Flashならよいかと – RAID-1/6/5を検討
• 性能を求められるところにRAID-5/6を利用してはいけない – 動きます – スピードが足りないかもしれません – RAID-10を検討
Storage
Array Controller
アレイコントローラとは • RAIDカードなどとも呼ばれる
– 複数のHDD, SSDを束ねてRAIDを構成、 ひとつのストレージ装置と見せかける
– パリティ計算などをハードウェアで支援 – 不意のシステム電源断時に書き込みデータを保護
• ストレージの信頼性を確保する上で大事 – RAID-5/6を使つもりなら必ず装備しよう
• Write hole/Partial write issue – バックアップ付ライトバックキャッシュを必ず装備
• ライトスルーだと、多くの場合、手許のPCよりI/Oが遅い • RAID機能を持たない”ホストバスアダプタ”
– SATAインターフェイスなどとも呼ぶ – 安物RAIDカードは実体がホストアダプタで、 ドライバでRAID機能を実装している場合もあり注意
ライトスルーとライトバック • ライトスルー (Write Through)
• ストレージへの書き込みを必ず行い、書き込みが成功した後に「成功」と返す
• 書き込み要求をキャッシュしないため、データ喪失のリスクは少ない
• サーバーのディスクは、ライトスルーだと手許のパソコンよりも遅い
• ライトバック (Write Back) • ストレージへの書き込み要求をキャッシュし、書き込み前に「成功」と返す
• ストレージへの実際の書き込みは後ほど非同期で行う • BBWC/FBWCがあれば安全、なければ危険
RAIDカード
ライトスルー
ミドルウェア (MySQLなど)
ディスクアレイ
ライトバックキャッシュ (DRAM)
書き込み要求はそのまま ストレージに伝えられる
ライトバック
ミドルウェア (MySQLなど)
RAIDカード
ディスクアレイ
ライトバックキャッシュ (DRAM)
書き込み要求があったら、 とりあえず、書いたことする
遅延 書き込み
ライトバックの停電対策
• ライトバックキャッシュには DRAMが使われる – 停電で、書き込んだデータが消える
• 停電時の書き込みデータ保護 – FBWC (Flash-backup Write Cache) • ライトキャッシュDRAMのデータを 専用フラッシュメモリに待避
– BBWC (Battery-backup Write Cache) • ライトキャッシュDRAMのデータが消えないよう バッテリーでバックアップ保護する
ライトバック、BBWCとFBWC
ミドルウェア (MySQLなど)
RAIDカード
ディスクアレイ
ライトバックキャッシュ (DRAM)
BBWC ライトバックキャッシュの DRAMに電源を供給 しつづけるバッテリ ・バッテリが劣化する ・時々再充電が必要 ・数日しか持たない
FBWC 電源断が発生したら 不揮発のフラッシュメモリに データをコピーし保護 ・フラッシュには利用回数 制限があるが、寿命は 無視できる程度 ・BBWCと比べて堅い
書き込み要求があったら、書いたことにする
遅延 書き込み
ストレージのまとめ
まとめ: ストレージ(不揮発層)
• 今なら – 容量重視 -> HDD – 性能重視 -> SSD – RAID使うならH/Wコントローラ買っとけ • ライトバック バックアップキャッシュも付けとけ
– なんちゃってオンメモリ -> PCIe Flash • メモリの話題として話した
– RAID+SSDベースのPCIe Flash • RAIDカードとSSDが一枚に収まってる
運用保守のあれこれ
リモートマネジメント ハードウェアの保守
どうやって管理していくか
• 運用期間>>>構築にかかる期間 – 日常のメンテナンス – 障害時のメンテナンス – 監視
• 何が求められるか – システムが止まるまで、持続的な管理が必要 – コストの見合う範囲で、できるだけラクしたい
リモートマネジメント • 実装 – IPMI ‒ 業界標準の管理インターフェイス – ベンダ固有のマネジメント機能
• できること – シリアルコンソール/IP-KVM – リモートからの電源制御 – 温度/ファン状態/消費電力量などの監視
• 機能があるなら活用したほうがいい – いちいちサーバルームで作業する必要が減る – ソフトウェア的な管理が可能に
保守スキーム • オンサイト保守 • ベンダー/リセラーと一緒に問題切り分け • 保守パーツを送付してもらう • 作業員がきて交換
• ベンダー/リセラーのセンドバック保守 • ベンダー/リセラーと一緒に問題切り分け • 保守パーツを送付してもらう • 自分で交換
• オレオレ保守 • 自身で切り分け • 保守パーツを事前購入/慌てて購入 • 自分で交換
保守スキーム • 規模が小さければオレオレ保守かもしれない
• 激安サーバ程度ならこの方針でもよいでしょう • HDD/SSD程度なら秋葉で買ってきたほうが安い • 「わかってる人間」がいないとできない • 「直る」と思ってたものが直らないとつらい • 台数が増えてくるとトラブル件数も増え、個別対応はつらい
• ある程度の時点でベンダー/リセラー保守を利用 • コストをキャップしやすい • 切り分け/予備パーツ/代替パーツの手配に時間をとられない • ハードウェアの保守作業時間、そのためのトレーニング時間が不要
• 台数が異常クラスになるとオレオレ保守へ • 数千台~の規模になると保守費用払うよりオレオレ保守したほうがよいことも多い(のではないか)
おわりに
今日のトピック • モチベーション – どうしてハードウェアのことを知るべきなのか – サーバの構成とは
• コンポーネント別のポイント – プロセッサ – メモリ – ネットワーク – ストレージ
• その他のコンポーネントや留意事項 – マネジメント機能 – 保守
THANK YOU