第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
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

qpstudy 2014.04 ハードウェア設計の勘所