元RX-7乗りの適当な日々 このページをアンテナに追加 RSSフィード Twitter

RX-7(FD3S)WRX STI関連のキーワードで検索されて来られた方へ。
右サイドのカテゴリ『』をクリックすると関連する項目だけが表示されます。
日々の写真は『Flickr』で公開しています。

2015/08/31

NVMe SSDのベンチマークをとってみた (約70万IOPS/1台)


手元にNVMe SSDがあったので、自分でベンチマークを取ってみたログ。

NVMeってのは、ストレージデバイスを接続する際の規格で、従来でいうSATAインターフェースの仲間みたいなもの。NVMeの詳細は以下のリンク先に記載があるので読んでいただきたい。

 NVMeは、SCSIやSATA(Serial ATA)と同じく、ストレージを接続するための規格だ。パイプラインやランダムアクセスなど、メモリーベースのストレージであるSSDの特徴を活用できる。また、SATAやAHCIの登場から現在までの間に進化した、データのレイテンシー(遅延時間)短縮のための手法も反映している。

 具体的な改良点としては、4KBの転送に必要なメッセージが2つではなく1つで済む点や、コマンドを処理するキューが1つではなく複数になっているという点がある。「複数」というのは、実に6万5536個である。これにより、多数のディスクI/O要求を同時に処理するサーバーでは、大幅な高速化が実現されるはずだ。一方、コンシューマー向けのパソコンでは、効果はそこまで大きくないはずである。

次世代SSDの接続規格「NVMe」とは(前) - 次世代SSDの接続規格「NVMe」とは:Computerworld

尚、今回使ったNVMe SSDの実物写真は以下。

NVMe SSD NVMe SSD


前提

ベンチマークの際に利用したのは以下のような環境。

  • サーバ: DELL PowerEdge R630
  • CPU: Intel Xeon E5-2695 v3 (2.30GHz) x2
  • メモリ: 256GB
  • NVMe SSD: (SAMSUNG製) DELL MZ-WEI8000 800GB x4
    • SAMSUNG XS1715シリーズのOEM製品?
  • OS: CentOS 6.6
  • ファイルシステム: XFS
# cat /sys/block/nvme0n1/queue/scheduler
none

# cat /etc/redhat-release
CentOS release 6.6 (Final)

# cat /proc/version
Linux version 2.6.32-504.8.1.el6.x86_64 (mockbuild@c6b9.bsys.dev.centos.org) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) ) #1 SMP Wed Jan 28 21:11:36 UTC 2015

# getconf _NPROCESSORS_ONLN
56

ベンチマークはfioを利用した。ベンチマークは下記のようなスクリプトを組んで実行した。


fioで実行する内容としては、以下のような感じ。

  • シーケンシャルアクセス(R/W)とランダムアクセス(R/W)の4パターン
  • ブロックサイズは4k
  • 同時実行ジョブ数は、1〜256
  • スループット(帯域)を測る際は、ブロックサイズ32mでシーケンシャルアクセスのみ

また、デバイスを2本または4本束ねる際は、ソフトウェアRAIDを利用しているのでそのパラメータとか、XFSまわりのパラメータは以下のような感じ。

# mdadm --create /dev/md0 --chunk=256 --level=0 --raid-devices=2 /dev/nvme0n1p1 /dev/nvme1n1p1

# mkfs.xfs -f -b size=4096 -i size=512 -l size=64m /dev/md0
# mount -t xfs -o noatime,logbufs=8 /dev/md0 /data

NVMe SSD x1

まずは、NVMe SSD 1本でのベンチマーク結果。

f:id:rx7:20150831024532p:image:w480

f:id:rx7:20150831024533p:image:w480


見事なもので、シーケンシャルリードは74万IOPSに到達。ランダムリードも70万IOPS弱出ている。ライトもシーケンシャル・ランダムともに35万IOPS強と、これまでのSATA SSDでは到達できなかったような数値。

大容量ファイルの転送を意識したスループットでは、リードで1.67GB/sと、約13Gbpsのスループットといった結果。このパフォーマンスを存分に使いこなすには、それなりの環境が必要となりそうですね。


NVMe SSD x2

次は、NVMe SSD 2本をRAID0でストライピングさせた際のベンチマーク結果。

f:id:rx7:20150831024534p:image:w480

f:id:rx7:20150831024535p:image:w480


2本束ねたところ、256スレッド並列で、リード性能は100万IOPSを超え、120万IOPS前後といったところ。スレッド数を大きくしていくと数字が伸びる傾向。しかし、リードのスループットが想像以上に伸びているのは何故だろうか・・・。3〜4GB/s前後くらいのはずだが・・・。

ライトは2本で60万IOPS付近から、スレッド数を上げてもそれほど変わらなくなってきたので、やはり1台あたり30万IOPSくらいが上限付近なのだなぁ。


NVMe SSD x4

最後に、NVMe SSD 4本をRAID0でストライピングさせた際のベンチマーク結果。

f:id:rx7:20150831024536p:image:w480

f:id:rx7:20150831024537p:image:w480


思ったほど数字は伸びなかった。というか256並列は少しやりすぎたというか、CPUリソースの方が限界なのかもしれない。リードは今回の環境では、2本束ねたときの方が数値が良い。ライトは64〜128スレッド付近で、80万IOPSを超える感じにはなっているが、それより大きくすると低下傾向。

スループットは6.7GB/sと、もう十分すぎる帯域を確保できた気分になる。


デバイス本数ごとの比較

せっかくなので、利用デバイスの本数を1,2,4本と変化させたとき、ランダムアクセスがどう変化したのかといった比較も載せておく。


ランダムリード

f:id:rx7:20150831024538p:image:w480

f:id:rx7:20150831024539p:image:w480


まず、1〜16スレッドまでは、本数が何本だろうと、ほとんどIOPS数値が変わっていない。これはそもそもツールの生み出す負荷に対して、1本で十分捌ける程度の負荷だということだろうと予測する。

32スレッドから複数デバイスが優位。こうしてグラフにしてみると、スレッド数を上げるとリニアに性能は伸びている。サーバのコンピューティングリソースが、もっと使える環境であれば、さらに数値は伸びそうな予感ではある。


ランダムライト

f:id:rx7:20150831024540p:image:w480

f:id:rx7:20150831024541p:image:w480


こちらも、ほぼ同じような感じかな・・・。4本のケースだと、この環境では64スレッド付近がMAXだったというのは、先ほども述べた通り。


おわりに

6〜7年前にSSDが出始めた頃、1万IOPSオーバーのI/O性能に興奮したものですが、5年ほど前にはPCIe接続型のSSD(Fusion-io ioDriveなど)が登場し、数十万IOPSの性能を手に入れることができましたが、なかなか高価な部類ではありました。

この3年くらいで、SATA SSDも10万IOPSを超える機種が出始め、どんどん容量単価が下がり、コストパフォーマンスは上がり、そして、この1年くらいでNVMe型のSSDが、市場に現れてくるようになりました。1本あたり70万IOPSといった破壊力。値段もまだまだ高価ですが、それでも高価なPCIe-SSDよりはお安いかなという印象です。


もう正直、ここまで高性能なデバイスのパフォーマンスを使いこなす方が大変だなぁ、というか使いこなせるのは、現状わずかな事業体くらいなのかなと思っています。デバイスが進化し、より高性能・低価格になっていくのは歓迎ですが、この高性能なデバイスでしか実現できない価値・イノベーションを産み出すことに、我々はもっと精進・努力しないといけないな、とベンチマークを取りながら非常に焦燥感を覚えてしまいました。


なんか朝から堅い話になってきたので、今日はここまで。

それでは!=͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́


2015/08/26

iPhone6

iPhone6のフロントガラスが割れたので修理した話


2週間ほど前の話のログ的なメモ。

iPhoneを使い始めて随分と経つが、自分の不注意で初めてガラスを破損した。自宅駐車場で車から降りた際、iPhoneと一緒に色々なものを同時に手で持ってしまったことが仇となり・・・。


Apple StoreのGenius Bar

王道を選択。あらかじめApple Storeのアプリから訪問日時を事前予約します。

尚、料金ですが、Appleのサイトで見た以下の記載通りでした。

iPhone の画面の損傷の修理価格はいくらですか?

修理や交換にかかる費用は iPhone のモデルによって異なります。また、製品保証や AppleCare 製品の対象となるかどうかによっても異なります。

  • iPhone 6:12,800 円
  • iPhone 6 Plus、iPhone 5s、iPhone 5c、iPhone 5:14,800 円

別途消費税がかかります。Apple 正規サービスプロバイダを通してサービスをお受けになる場合は、サービスにより料金が異なることがあります。過失や事故による損傷は Apple 製品 1 年限定保証の対象になりません。

iPhone の画面の修理・交換 - Apple サポート 公式サイト

ということで、私はApple Careに加入していなかったので、12,800円でした。

ちなみに、Apple Careに加入している場合は、以下のような感じだそう。

AppleCare+ をお持ちの場合

AppleCare+ をご購入いただいている場合は、過失や事故による損傷に対して、1 回につき 7,800円 (税込) のサービス料で最大 2 回まで修理サービスをお受けになれます。また、エクスプレス交換サービスをご利用いただくこともできます。エクスプレス交換サービスとは、お申し込み後すぐに交換機をお客様のもとにお届けする便利なサービスです。

iPhone の画面の修理・交換 - Apple サポート 公式サイト

今回、Genius Barで診てもらった感じは、フロント画面のガラス交換で済むとのことだったので、上記料金でおさまりましたが、本体の内部にも損傷があったりする場合は、交換となる人もいるみたいです。

ちなみに、お兄さんに参考までに聞いてみたのですが、交換だと37,800円になります、と教えてもらいました。意外と安かったので、完全新品交換ではないのかも。


尚、修理時間は、2時間程度。預けてから2時間後以降に受け取りに行って終了です。幸い、ハードケースをつけていたおかげで、ガラス以外は全く損傷が無かったので、新品のような姿で返って来ました。


Before

iPhone6


After

iPhone6


その他、雑感

Genuis Barで診断してもらうために、本人確認のため、目の前で"Find iPhone"(iPhoneを探す)をOFFにされて、Apple IDのパスワードを入力させられて、まーそこまでは良いのですが、その後、再度ONにされずに修理は終わり何の説明も無かったので、自分で忘れずにONにしました。ちょっと不親切だよなぁと思いました。

それだけ。それでは!=͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́


あわせて読みたい


オススメ (一部は、最近読んでいる本とも言う)
Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) クラウド Amazon EC2/S3のすべて~実践者から学ぶ設計/構築/運用ノウハウ~ [Web開発者のための]大規模サービス技術入門 ―データ構造、メモリ、OS、DB、サーバ/インフラ (WEB+DB PRESS plusシリーズ) エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド [24時間365日] サーバ/インフラを支える技術 ~スケーラビリティ、ハイパフォーマンス、省力運用 Linux-DB システム構築/運用入門 (DB Magazine SELECTION) キャパシティプランニング ― リソースを最大限に活かすサイト分析・予測・配置 スケーラブルWebサイト 実践ハイパフォーマンスMySQL 第3版 ウェブオペレーション ―サイト運用管理の実践テクニック (THEORY/IN/PRACTICE) SQLアンチパターン インターネットのカタチ―もろさが織り成す粘り強い世界― ハイパフォーマンス ブラウザネットワーキング ―ネットワークアプリケーションのためのパフォーマンス最適化 Linuxの教科書―ホントに読んでほしいroot入門講座 (IDGムックシリーズ)