パスワードを忘れた? アカウント作成
69912 story
ストレージ

SSDはソフトウェア開発目的でも有用? 76

ストーリー by hylom
欲しいけど容量に不満、 部門より

あるAnonymous Coward 曰く、

本家/.で、Can SSDs Be Used For Software Development?(SSDはソフトウェア開発向けに使えるか?)という記事が上がっていました。最近ではSSDの価格も大幅に安くなり導入がしやすくなっています。ソフトウェア開発作業(というかコンパイル作業)では多数の小さいファイルにアクセスすることが多いため、ランダムアクセスが速いSSDはコンパイル時間の短縮にも効果的なような気がします。一方で頻繁な書き換えも多いため、その寿命が気になるというのも事実。

ということで、実際にSSDをストレージに使っている方にSSDの使い勝手の是非をお聞きしたいところです。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by t-nissie (8647) on 2009年03月09日 15時06分 (#1527492) ホームページ 日記
    * gccの-pipeオプション(一時ファイルを作らずパイプ|から読む)を使え。
    * Linuxのtmpfs(メモリ上のファイルシステム)を使え。

    # コンパイルをしている間にアレたまを見に来てしまった。
    # NFS上のホームディレクトリでコンパイルすると遅い遅い。
    --
    love && peace && free_software
    t-nissie
  • おすすめは i-RAM (スコア:3, 参考になる)

    by annoymouse coward (11178) on 2009年03月10日 1時43分 (#1527946) 日記

    私は、SSDでは無く、i-RAMを選択しました。

    ソースコードはsubversionで管理しているので、
    i-RAMはあくまでも作業コピーを置く一時ディレクトリです。

    1年以上使っていますが、データが消えるなどのトラブルも無く、かなり快適です。

    • by mnakano (27173) on 2009年03月10日 11時30分 (#1528159)

      私も一時期Mozillaのビルド用の作業領域にi-RAMを使っていました(Windows)。かなり希に(数ヶ月に一度程度?)一部のファイルが壊れることはありましたが、それなりに使えました。ただ、容量が4GBと少なすぎるのが問題でした。Firefoxでデバッグビルドを作ると、ソース+バイナリで2GB程度必要なので、せいぜい二つ用意するのが限界で。

      現在はANS-9010(16GB)を代わりに利用 [d-toybox.com]していますが、メモリがよくないのか、ANS-9010自体の問題なのか分かりませんが、よく保存しているファイルやインデックスが壊れて困っています。

      コストパフォーマンス的にはSamusungのSLCのSSDの方が優れているかもしれません(64GBで35,000円ぐらい [kakaku.com])。さすがにアクセス速度はRAM Diskよりは劣りますが、HDDに比べれば圧倒的に高速ですし、ビルドにそこまでの速度が必要かどうかは不明です。

      親コメント
  • 案外平気かも (スコア:3, 参考になる)

    by juan (3871) on 2009年03月10日 2時14分 (#1527958) ホームページ 日記

    SSDの信頼性は、すでにHDDを超えている [impress.co.jp]
    ~東芝セミコンダクター社 インタビュー

    上記の記事によると、書き換え3000回でいきなりダメになるわけじゃなく実際はもっと持つし、徐々に使えないセルが増えていく形になるので容量が減っていくけど、致命的なことになるわけじゃないようで。
    SSDの寿命はあまり気にしなくてもいいのかもしれませんね。

    • by matma (34555) on 2009年03月10日 2時46分 (#1527963)

      プログラム開発とはちょっと別の話からで申し訳ありませんが、
      たとえば某BTO大手のノートPCにVistaSP1+去年末くらいまでのWindowsUpdate+メーカー最新パッチ
      という状態では、スリープに失敗すると電源強制断するまで
      延々とHDDにフルスピードアクセスしっぱなしになる
      (スリープ以外でも、chkdskとかで同様の状態になり、
       レスポンスの劇的な低下+最終的にHDDを止めるためには電源強制断が必要)という事象がありました。

      その後のWindowsUpdateや、Intel Matrix Storage Managerの手動で更新(- これがクサイ)
      などの結果、当方環境では上記の事象はどうやら解消したようですが、

      「これがSSDで起きていたら・・・・・」と正直思いましたね。

      書き込み速度が上昇するほど、上記
      「プログラムのエラー(など)で異常アクセス状況となったときの劣化速度」も上昇するわけで、
      品質が低い状態のプログラムを実行する環境でSSDってのも考え物かなぁと思いました。

      #もちろん、職業プログラマの方からすれば時間への投資としてあっという間に元が取れるのは承知の上で

      親コメント
      • by yellow tadpole (7084) on 2009年03月10日 3時15分 (#1527972) 日記

        頼んでもないディスクアクセスが多くて、通常運転でさえVistaにSSDはちょっと怖い気がします。
        Windows 7はSSDに最適化した動作モードとかがあるといいんですが。

        うちではフィールド用のノートに、システムドライブをSSD、データとスワップ用にCardbus経由で
        CFカードを入れ、固定ディスク化して使ってます。
        時々シャットダウン前にデータをSSDにコピーすれば簡易バックアップにもなるし、今のところこれが
        現実的な使い方かな、と思ってます。

        --
        〜◍
        親コメント
      • Re:案外平気かも (スコア:1, すばらしい洞察)

        by Anonymous Coward on 2009年03月10日 9時20分 (#1528042)

        それってディスクにフルスピードで書き続けるバグなんですか?
        読むだけなら寿命関係ないですよ。

        親コメント
    • Re:案外平気かも (スコア:4, 参考になる)

      by Anonymous Coward on 2009年03月10日 5時08分 (#1527983)

      ネット上には鬼のような書き込みの繰り返しで加速試験をしている人々がちらほらいますが、
      それを見るに、壊れるときはほぼ一気に全破壊するようですよ。
      HDDのような部分回収とかは期待薄。

      SSD耐久テストhttp://www004.upp.so-net.ne.jp/botchy/ssd.htm [so-net.ne.jp]

      親コメント
      • Re:案外平気かも (スコア:4, 参考になる)

        by narunaru (30931) <{mikahosi} {at} {abox9.so-net.ne.jp}> on 2009年03月10日 8時04分 (#1528005)

        USBフラッシュを加速試験で壊したことあるけど、あの壊れ方はやばいっすよ。書き込んだ直後はちゃんと読めるんで、すぐには気がつかないんです。ところが一定時間経過後に読もうとすると壊れてる。かといってHDDのように異音がするわけでも、リトライで異常に遅くなるわけでもなく、ただ普通に壊れたデータを読み出せる。気がつかずに使い続ける場合も多いんじゃないかなぁ。

        パリティやCRCを保存して破損を検出できるようにするとか、メモリブロックごとに書き込み回数をカウントするとかしないと、ちょっと危ないんじゃないかなぁ。

        親コメント
        • by Anonymous Coward on 2009年03月10日 10時12分 (#1528083)

          >パリティやCRCを保存して破損を検出できるようにするとか、メモリブロックごとに書き込み回数をカウントするとか

          これがUSBメモリとSSDと呼ばれるメモリの差のようですよ。
          例えば以下はMTRONのspecの一部となります。

          >- Wear-leveling algorithm : Dynamic and static wear-leveling
          >- ECC : 7-bit Error Correction Code(ECC)
          >- Bad Block Management algorithm

          ということでして、おっしゃる機能はすべて実装されています。お買い求めになったUSBメモリは
          ECCやBBMはあってもWear-levelingなどは行わなかったのかもしれませんね。すくなくともWear-leveling
          を動的に行うUSBメモリというものを私は知りません。

          親コメント
          • >パリティやCRCを保存して破損を検出できるようにするとか、メモリブロックごとに書き込み回数をカウントするとか

            これがUSBメモリとSSDと呼ばれるメモリの差のようですよ。

            USBメモリでもマジメに作ってあるものはこの辺がケアされています。
            例えばM-System社のTrueFFSが載っているUSBメモリだと

            メモリーの長寿命化をはかる書換え回数分散処理
            エラーブロックの代替機能
            データの信頼性を高める、4ビットエラー訂正機能

            機能がついています。
            http://www.iodata.jp/prod/usbmemory/easydisk/2006/epsl/ [iodata.jp]

            ダメUSBメモリはここまで挙がっている通り、壊れてもRD/WRエラーを報告しないので注意が必要です。私も経験しました。コントローラーはNetacでした。

            親コメント
      • Re:案外平気かも (スコア:3, 参考になる)

        by AnotogasterSieboldii (37677) on 2009年03月10日 8時38分 (#1528015)

        私のUSBメモリ(8G)も寿命が来て壊れました。

        そのときはこれまで大丈夫だったデータが、
        ファイルはあるのに中身は壊れているという症状でした。

        書き換えしていないファイルまで一斉に破損していたのですが
        それに気づかず、HDDのデータに上書きしてしまったので被害甚大でした・・・(これは不注意だった)

        この件があったからかフラッシュメモリの信頼性はそれほど高くないと感じているので、
        未だにSSDを導入する気がおきません。
        便利なのは理解しているので、この不安を払拭してくれるSSDが登場してくれないかな?

        親コメント
        • by phenix (31258) on 2009年03月10日 10時03分 (#1528072)

          HDDは読み書き回数だけじゃなく、温度とか回転時間とか多くのパラメータに左右されるので、寿命の検出は難しそうですが、
          SSDの場合、書き込み回数監視するだけなので、設計寿命来たよアラート出せるようになりそうな感じはしますが。

          親コメント
    • by sillywalk (15002) on 2009年03月10日 9時15分 (#1528038) ホームページ 日記

      開発マシンじゃないですが、うちのメインマシンのHDDを
      OCZ Apex 120Gに換装して使ってます。(OSはWindowsXP SP3)
      体感速度は目に見えて向上したため、導入した甲斐がありました。
      ただ仮想メモリを作るとプチフリーズが頻発したので、仮想メモリは
      作っていません。またメインメモリは4GB搭載してGavotte Ramdiskを
      使ってramdiskにtmpを移動しました。
      今のところSSD単体での運用は怖いので、バックアップソフトを使って
      データ部分だけを通常のHDDに退避しています。
      当面はSSDとHDDの平行稼動で様子を見ます。

      --
      And now for something completely different...
      親コメント
    • by skapontan (35455) on 2009年03月10日 12時44分 (#1528222) 日記
      その記事は「SSDの信頼性は年々上がっていくので、買うのは待ったほうがいい」と空目した
      親コメント
  • by Anonymous Coward on 2009年03月10日 7時44分 (#1528001)

    私はソフトウェア開発者ではないのですが、ソフトウェアの体感速度は
    昔と比べてずいぶん遅くなっていると思います。
    使っているハードウェアは、最新のものではないにせよ、数年おくれ
    くらいでは、ついていっているつもりです。

    それは、開発者が速いパソコンを使いすぎているからではないかと
    思ったりすることがあります。開発者は、自分が開発しているソフトウェアが、
    パンピーが使っているそれなりのハードウェアで、どんなにのろのろと
    動くか、体験したことがないんじゃないかって。

    コンパイル用に高速なマシンというのは理解できますが、テスト用には
    一般人が使っているようなマシンを使ってもらいたいものです。

    • by Anonymous Coward on 2009年03月10日 8時59分 (#1528025)

      きっと逆ですよ。
      貧弱な環境しか与えられないために、開発した機能が重くても
      「普通のパソコンなら軽く動かせるはず」と思ってしまうのです。

      親コメント
    • by Anonymous Coward on 2009年03月10日 9時43分 (#1528056)
      考えられる要因

      ・ライブラリがマルチスレッド対応で、すこし遅くなった
      ・昔は端折っていたチェック処理が入り、すこし遅くなった
      ・CではなくC++を使うようになったので、すこし遅くなった

      ・DRAMのアクセスタイムが、20年で半分にしか短縮されてない
      ・1024x768→1920x1200で画素数が3倍になっている!

      ・デバッグビルドなど、もっともっと重いのを触っていて、感覚が麻痺している
      ・どうせリリースする頃にはPCの性能が向上しているからと、多少遅くても工数さけない
      ・自分のPCでも重いが、高速化に要する工数と、PCのアップグレードのコストを比較すると、やる気が失せる

      ・機能を正常に動作させるだけで手一杯だ
      ・重いライブラリも使ってしまう
      ・必要なところだけ再描画するのが面倒なので、ぜんぶ再描画しちまえ

      ・バグ修正やバージョンアップで重くなってしまったときのために、わざと遅く作っておく
      ・カリカリに効率を高めてしまうと、何か変更したときに、遅くなってしまう
      ・そもそも効率のよいソフトを作るスキルがない

      ・VMware上で開発するため、レスポンスが悪いのが当たり前になっている
      ・歳をとって感覚が鈍り、遅さが気にならなくなった
      ・高速なマウスさばきとキーボードタイプが、若気の至りだと反省した

      ・ていうか、パンピーは/.Jに来るなよ。
      親コメント
    • by Anonymous Coward on 2009年03月10日 9時06分 (#1528028)

      たぶん皆さんおなじみのパソコンソフト作ってるけど、
      会社支給のマシンなんて 7 年落ちですよ(泣
      仮にリプレースされるとしても、最低スペックの
      エントリーモデルだったり・・・。

      こういう会社もあるということで・・・。

      ただ、おっしゃるとおり、お客さんのマシンはそれなりのスペックは
      想定してるかもです。
      複数コアやそれなりのメモリー容量を前提としたプログラム設計とか。
      だから、それを自分の開発マシンで動かすとやっぱり重い(苦笑

      # さすがに AC

      親コメント
    • >コンパイル用に高速なマシンというのは理解できますが、テスト用には
      >一般人が使っているようなマシンを使ってもらいたいものです。
      これは普通にやってるんじゃないかなあ。

      むしろターゲットとされる顧客層というのがあって、あなたのマシンがその顧客層が
      使っているであろうと仮定されるマシンスペックよりずっと非力であるとか、或いは
      単にメーカーの技術力が低くて肥大化し続けてるとかじゃないかと。いつまでも古い
      マシンを後生大事に使っている貧乏ユーザー(失礼)が、新しいソフトを次々と買って
      くれる優良顧客になるとは考えにくいですからね。

      そうそう。「コストダウンの上に納期を早められて、結果として品質低下」というのも
      ありえるかな。なにせ世知辛い世の中ですから。

      親コメント
  • PCH (スコア:2, 参考になる)

    by Anonymous Coward on 2009年03月10日 10時20分 (#1528091)
    FreeBSD&gccからWindows&VCに転向して、まず驚いたのが、コンパイル&ビルドの速さです。
    プリコンパイル済ヘッダーやインクリメンタル・コンパイル、インクリメンタル・ビルドなどで、2回目以降が速いです。
    それが逆にトラブルの原因にもなることもあったりもしますが。

    久しぶりにFreeBSDに戻ってみて愕然としました。
    makeが-jで並列に処理するのには感心しましたが、しかし、ソースファイルが短いのにコンパイルが遅い。
    1クラス1ファイルとか、1関数1ファイルなのに、けっこうな時間がかかる。
    それらのファイル群を片っ端から#includeして1ファイルに纏め上げたら、速いのなんのって。

    make -jすればディスクアクセスがランダムになりやすいのでSSDで高速化するでしょうが、
    それは乱暴なソリューションかもしれません。
    • by saitoh (10803) on 2009年03月10日 12時29分 (#1528206)
      1クラス1ファイルとか、1関数1ファイルだからこそ、結構時間がかかるのでは?
      親コメント
    • by Kazsa (25846) on 2009年03月10日 20時20分 (#1528488) 日記

      makeだと通常1ファイルごとにコンパイラーを起動するから数が多いと遅くなるね。

      Visual Studioは複数のファイルをまとめて一度にコンパイルしている模様で、コンパイラーの起動・終了オーバーヘッドが相対的に小さいとか、PCHの内容をメモリ内で使いまわしてるとか、その辺りの手法で差が出ているかも。

      親コメント
    • by irodori (34952) on 2009年03月10日 14時09分 (#1528277)

      gcc でも 3.4 からプリコンパイル機能が追加されています。
      a.h をコンパイルすると a.h.gch というファイルができて、
      以後 a.h を include するときに a.h.gch が優先的に読み
      込まれます。

      他所様のソースをプリコンパイル向けに最適化するのは難し
      いですが、ゼロから作るならプリコンパイル対応にするのも
      良いかもしれません。

      試しに 11 ファイル(ソース 6000行、ヘッダ 800 行)からな
      る plain C のプロジェクトをコンパイルした結果を置いてお
      きます。
      OS は FreeBSD 6 RELEASE、プリコンパイルヘッダはあらかじ
      め作成しておき、全ファイルをコンパイルしています。

      プリコンパイルヘッダなし
      $ time make
      real 2.919s
      user 2.672s
      sys  0.225s
       
      $ time make -j2
      real 2.956s
      user 2.751s
      sys  0.191s
       
      プリコンパイルヘッダあり
      $ time make
      real 1.913s
      user 1.759s
      sys  0.142s
       
      $ time make -j2
      real 1.953s
      user 1.789s
      sys  0.151s

      親コメント
  • by wildcard (416) on 2009年03月10日 1時59分 (#1527954)

    SSDはIntel,Mtronに限定するという前提の話だが、
    VisualStudio+MSDNライブラリをインストールしているような環境においては単純にHDDをSSDにリプレースしてしまってかまわない。
    対話的処理の一切合切の処理が速くなると考えればよい。たとえWD VelociRaptorを持ってきてもSSDにはかなわない。
    ただしNortonGhostなどのイメージングツールでコピーするのではなく、新規にWindowsをゼロクリーンインストールした方がよいようだ。

    実験はしていないが、理屈から言うとOCZ Core, OCZ Vertexあたりでも同じような効果は得られると思う。

  • by yosukekke (35655) on 2009年03月10日 9時42分 (#1528054)
    SSDのプチフリーズの存在はあまり知られていないのでしょうか?相当ストレスがたまるそうですよ。 特にランダムライトが発生するとフリーズするので、開発では辛いのではないでしょうか。 プチフリーズしないSSDとしてIntel, Samsung, Mtron製のものを挙げておきます。 OCZ Vertex Seriesもしなさそうですね。
    • Mtronは35シリーズに「微妙」という気配があり、他のシリーズでも相性問題を出しやすいので、
      絶対安牌ということを考えるとIntelかSamsungがよいかと。
      別のHDDなどに分散させておけばあとはどうせ消えてもデータには被害が少なく、小容量で済むOS起動とバッファ用にするなら、
      価格が落ちて買いやすくなった超絶対安牌のX25-E 32GBにIYHすれば間違いありません。

      あとは全部まだまだ人柱向けかなぁ。

      --
      =-=-= The Inelegance(無粋な人) =-=-=
      親コメント
    • 結局のところ、SSDの使いどころをどこと考えるか?
      そこに活用の鍵があるような気がします。

      Windowsだとシステムの任意ディレクトリだけをSSDに入れ替えるといったことが難しいから
      起動ドライブをSSDにするのが普通で、プチフリーズを招く一因になっているんだと思う。
      書き込みアクセスの多いところに使わなきゃいいわけだし。

      私は開発者ではありませんが、通常のコンパイルでの書き込みアクセス頻度を考えると
      コンパイル時に使うディレクトリだけ、SSDに置くのが吉ってことだと思います。
      そのためには、HDDとSSDを両方使えるPCが欲しいわけで、ノートPCでは限られるんですけど…

      ちなみに、車の中で振動を気にせず、Googleストリートビューとか利用するために
      X31にOCZのIDEな32GBを突っ込んであります。OSはXubuntu。
      いろいろ考えたものの、シングルスピンドル機ですから、システム全部/パーティションだけ構成。
      HDDからdd複製しただけのシステムで、IOの設定も変えていません。
      swap無しにするために、メモリーを1.5GBに増やしましたが、1GBのままでも行けてた気がします。

      プチフリーズらしき現象には出会っていません。
      起動時間は気にするほどの差じゃ無いですが
      回線速度さえ速ければ、ストリートビューのスクロールは
      若干SSDのほうが軽快な気がしています。
      親コメント
      • システムの一部を……というのはやや難しいですが、NTFS なら普通に任意のフォルダにドライブをマウントできます。もちろんドライブレターを振る必要もありません。
        ただ、ACL の設定等を考慮すると Windows、Program Files、ProgramData 以下を気軽にマウントすると面倒な事になると思います。

        また、ネタにしか見えない SSD 24 台構成のシステム [gigazine.net]なんかを見ると、高速化したい部分 (Windows 以下、Program Files 以下) を高速化するにはやっぱりシステムドライブにするのが素直かな、と思います。

        親コメント
    • by preliator (34473) on 2009年03月10日 10時30分 (#1528101)
      戦犯はJMicronなんで、最近は非JMicron製コントローラが流行
      親コメント
  • by Anonymous Coward on 2009年03月10日 1時52分 (#1527953)

    Intel X25-Eの32GBで\43k、X25-Mの80GBで\40k。
    その他SLCチップ物が32GBで\24k前後。
    エロ寒ことIO-DATAのSSDN-S64Bが\10k(あんまし数出てないので入手が難しい)。
    まだ入荷されないOCZのVertex32GBが\12k、完売中の一番速度の出るVertex120GBが\40k(値上がりするらしい)。

    まともな製品ってこんぐらいですよ。
    確かに値段下がったとはいえ、開発環境のストレージにこんなに金出すぐらいなら、
    モニタをデュアルにしてメモリ積みまくってRAMDISKにチェックアウトしてた方が効率的じゃないかなぁ。

typodupeerror

吾輩はリファレンスである。名前はまだ無い -- perlの中の人

読み込み中...