最強.NET開発PCを作るよ パーツの価格

目次はこちら 最強.NET開発PC

さて、円安(2013/03時点で 1ドル94円)の折りに、輸入パーツを買い集めるのはどうかと思うのですが — 実際、SSD の値段は年末から徐々に上昇していて冷や冷やしましたが — 一度、予算を決めてしまえば、その予算に応じて組むことになります。最初の予算は、ソフトウェア代抜きで 20 万円前後と決めていて、上限が 25 万円ということです。多少、人柱的な要素を含んでいるので予算は高めに設定しましたが、オーバークロック専用機やゲーマーご用達の高価な趣味マシン、本格的なデザイナー系のマシンに比べれば、予算は低いほうですね。まあ、私の場合は .NET 開発PC ≒ 自宅の業務 PC という位置づけなので減価償却(3,4年程度)を見越した金額になっています。OS 無しの PC が 4,5 万程度で BTO で買える、そこそこのゲーム用 PC が 10 万程度で買える時代ですから、それ以上の使い勝手 — 似た値段/パーツを使っていたとしても、トータルとして「.NET 開発 PC」に求められるところを追及した PC にする必要があります。

■パーツの価格(2013年02月中旬時点)

型番 単価 計(税込)
CPU Intel i7-3820 27,800
MEMORY XMS3 8GBx2 x4 @9,480 37,920
水冷クーラー HYDRO SERIES H60 7,980
マザーボード X79 Extreme9 29,980
ケース PCK9X 12,940
DVDドライブ LITEON iHAS524 1,980
グラボ ZOTAC GTX650 14,980
SSD Plextor PX-512M5P 39,990
HDD WD20EZRX SATA3 2TB x2 @7.980 15,960
電源 AX760i 30,780

締めて、220,310円(税込)というところです。20万円の予算を若干オーバーしているのは、消費税分の計算を忘れていたのと(苦笑)、電源ボックスに見栄を張ったからからですね。グラフィックボードに関しては、ここまで必要なかったかも、という阪口氏の話なのですが、Windows ストア アプリを作成するときに XAML 描画で GPU を結構使うので、これはこれで実験用に必要と感じています。

image

価格を抑えたい場合は、前の PC から流用したり、後々に買い揃えるというパターンにします。今回は、初期投資ということで一括秋葉原で揃えましたが、普及した時点で少しずつ買い揃えるのもよいでしょう。

■パーツの調達先

秋葉原での購入先は、ドスパラさん、ツクモさん、ソフマップさんです。購入時に店内での写真を撮影させて頂きました。写真や記事(詳しいパーツ情報など)は、このブログとは別に正式な記事にして仕上げてさせて頂きます。

購入時のパーツ選定、パーツの組み立ては、リンクスインターナショナルの阪口さん、デザインラボの加藤さんにご協力頂いてます。ご協力ありがとうございました。

パーツの価格については、購入した時の時価になるため、現時点では変わっている可能性が大…というか、変わっているので店員さんにお尋ねください。

■ソフトウェアの価格

今回、OS や Visual Studio 2012 などは、私が MSDN を使っているので購入費がかかっていません。全体的に安く仕上がっているのは Windows 8 Pro の OS 代金が入っていないためでもあります。これだと BTO と違ってきてしまうので、ソフトウェア代も算出しておきましょう。

Windows 8 Pro 16,000
Visual Studio 2012 Pro 60,000
Micrsoft Office 2012 Pro 50,000
SQL Server 2012 Express Edition 0
IIS + ASP.NET 4.5 0
VMWare Workstation 9 36,000

買うとなると締めて、162,000円になります。ただし、この中で必須のものは Windows 8 だけで、.NET のWindows ストア アプリを作るときには、Visual Studio 2012 Express Edition という無償のものあるので、これを使うことができます。仮想環境も VMWare Player や Virtual Box を使えば費用は掛かりません。私の場合は、仕事用に必須なので MS-Office が入っていますが、今後は Office 365 と OpenOffice を併用する — MS-Office との互換を Office 356 に任せる — というコストダウンの方法もあります。

■これからがスタート

.NET 開発 PC は組み終わりましたが、実はこれから本格的なスタート。この組み合わせ実際に .NET 開発がどれだけ「快適」になるのかを検証していきます。いくつか検証ツールを作ることになるので、ちょっと間を置いて再開しましょう。

カテゴリー: 最強.NET開発PC | 2件のコメント

最強.NET開発PCを作るよ OSチューニング

目次はこちら 最強.NET開発PC

最強.NET開発PCが完成しました…と、その前に「.NET開発PC」なので、.NET の開発環境を入れないといけません。というか、更にその前に OS を入れないとダメですね。今回 .NET の開発環境といして準備するのが、以下の環境です。

  • Windows 8 Pro
  • Visual Studio 2012 Pro
  • SQL Server Standard
  • IIS + ASP.NET 4.5
  • Office 2013
  • VMWare 8

image

といったところです。他にも、xamp、Perl、OpenCV などを入れていますが、ひとまず、.NET アプリの開発をするときは、上記の環境で ok です。あと、ソース管理用に Team Foundation Server Express 2012 を入れていきます。

数々の開発環境を何処にいれるのか?という問題があります。今回の PC は 512 GB の SSD を積んでいるので、あらゆる環境を C ドライブに入れています。かなり突っ込んだ状態で、150GB 程度使っている状態ですね。このうち 50GB ぐらいは試験的に VM に割り当てているので、開発環境としては 100 GB ぐらいで収まっているはずです。

image

なので、C ドライブの SSD の容量としては、256 GB 程度あればあまり容量を気にせずに使えると思います。それ以下となると残り容量が気になったりするので、精神的によくありません。そういう場合は、アプリケーションの多くを D ドライブなどの別に領域に移すとよいでしょう。ただし、ツールによっては C ドライブに固定されているものもあるので(テスト的に作ったものとか)、それに対する先行きのトラブルの対処時間を考えると C ドライブにまとめておけるような容量を使ったほうが「作業コスト」が安くなります。

■仮想メモリを調節する

この開発 PC には、64 GB のメモリを積んでいます。なので、仮想メモリは自動で 128 GB 取ることになります…といいますか、貴重な SSD の容量をたかだか仮想メモリ(ページング)のために 100 GB 以上の消費するのはばかばかしいです。64 GB あると普通の作業をしている間はキャッシュアウトはしません。なので、仮想メモリの容量を「0」にしてしまいます。

image

多分、32 GB の場合も 0 にしてしまって ok です。16 GB の場合は微妙な時がありますが、VMWare などの仮想環境を使わないのであれば、 0 にしてもよいかもしれません。そのあたりは実際に運用して調節していきます。

■ディスク構成を考える

最初に構成を考えていたので、最強.NET開発PCを作るよ(その1) この構想の通りにインストールをしています。

ハード 容量 用途
C SSD 512 GB システム、開発系アプリ
D HDD 2 TB ツール系、作業エリア
E HDD 2 TB データベース
G HDD 1 TB VMWare

※ F ドライブは DVD です。

C ドライブは、OS と 開発系のアプリを入れます。SSD で高速に動作するのと、一度突っ込んでしまえば、あとは Read だけで済むようなアプリの実行ファイルを入れます。仮想メモリを使っている場合だと、HDD はそれ専用のほうが高速に動作します。今回は、仮想メモリが 0 なので関係はありませんが。あと、デフラグや OS 領域のクラッシュの関係から、作業領域とは別のドライブにしています。

D ドライブは、数々のツールの類(テスト的に作ったものや、他のツール)、プログラムのソースコードなどを置きます。ソースコードをコンパイルすると、一時ファイルがたくさんできるので、実はこの領域は Read/Write が高速なほうが良いのです。が、今回はコスト上の関係から HDD にしています。それでも、OS 領域と別にとることでビルドが高速になるのと、OS 領域のクラッシュに無関係なように別のドライブに配置させます。

E ドライブと G ドライブは、それぞれ SQL Server 専用、VMWare 専用領域にしています。データベースも仮想領域も、それぞれ頻繁に HDD にアクセスするものなので、シーク時間を短縮させるために別のドライブにします。ここも SSD にすると高速化するだろうなと思われます。HDDのアクセススピードは VMWare に影響するのか? で実験したように、同じドライブに複数の VMWare を置いてしまうと仮想されている OS が遅くなる可能性があります。この実験では、ドライブに対する書き込みしか調べていないので、コンパイルや実行時間、仮想メモリを頻繁にアクセスさせるなど、いくつかの実験ツールを作って試してみたいところです。

■故障と復旧時間を考える

私が非常にノーマルな状態でアプリや PC を組むのは、

  • トラブルに巻き込まれる頻度を少なくする。
  • トラブルから復旧する時間を短くする。

という、MTBF(平均故障間隔), MTTF(平均復旧時間) というのを考慮するためです。サーバー系の場合には当然の考え方なのですが、プログラミング環境やアプリケーションを使う場合も同じで、トラブルにあたる頻度は少ないに越したことhあありません。ですが、サーバーの場合とは違い、開発 PC には、最新の危うい技術/アプリを入れ込む必要が多々あります。これは、別に危険なツールを入れるという意味ではなくて、Visual Studio 2012 のアップデートを頻繁に入れるとか、なんらかのパッチを入れるとかという作業が頻発するのです。そのたびに、開発環境自体が壊れる(動かなくなる)というリスクが少なからず発生します。この頻度は、普通にゲームをしたり、普通に業務アプリを動かしている場合とは比率が異なります。逆に業務アプリを動かしている PC は、OS もアプリも最初のままというパターンになります。

かつ、仕事柄、最新の OS に付き合うパターンも含まれるので、OS がバージョンアップするタイミングで、OS の入れ替えと、しばらくしてから PC 自体の入れ替えが交互に発生します。このパターンで考えると、減価償却的な意味合いの消耗品としての PC と、開発効率を優先させるための投資先としての PC が混在しているのです。そんなこともあって、結構ノーマルな形で開発 PC を使っています。

カテゴリー: 最強.NET開発PC | 2件のコメント

最強.NET開発PCを作るよ(その8)

目次へ 最強.NET開発PC

今回は筐体とCPUクーラーの選定です。

水冷クーラー Hydro Series H60

image

筐体 PCK9X

image

会社で使う PC の場合、バックグラインドで流れている雑音が大き目なので PC のファンの音が気にならないのですが、家の場合(私の場合は事務所兼なので)には、かなり静かななのでファンの音が気になります。また、夜中にウォーンと鳴っているのは家族持ちはちょっと無理なんですよね。ひとり暮らしだったとしても、PC の音であまりよく寝られないというのは困ったものです。

なので、音に関するところでは、

  • クーラーの FAN の音
  • HDD の回転の音

を低く抑えたい。できれば「無音」にしたいところです。

無音PC作成
http://adpn.sakura.ne.jp/kusunoki/silent_pc2/

というのを見つけたのですが、これはさすがに…業務では使えないし。ってことは、やはり「静音」なのですね。ちなみに、完全無音という意味では Linux で動く Raspberry Pi などがあります。 Raspberry Pi はブラウジングはそこそこできるのですが、開発向けではないでが。

さて、筐体を買って、いざ組み上げて家で動かしてみると、なかなか煩い。この筐体は静音ボディということなのですが、静音の工夫としては、HDD トレイにゴムが入っているのと、筐体の足にゴムが使ってあります。ビスにゴムがつけてあって、HDD を浮かす感じになっています。これで HDD の振動が床に伝わらない形になっているのですね。コンクリートの床だといいのでしょうが、フローリングあたりだと微妙に振動します。ひょっとすると畳の場合は、振動は帳消しになるかもしれません。

このPCをそのまま動かすと、

  • HDD 用の冷却ファンが 2 台
  • 筐体付属のファンが 1 台(水冷 CPU ファン共有)
  • (電源ボックス内のファンが 1台)
  • (外付け HDD 用の冷却ファンが 1 台)
  • HDD が 3台

ということになります。サーバー機でもないので、HDD を冷やすための FAN は消してしまいました。筐体の前面にあるファンは意外とうるさいのです。BIOS を使って消してもよいし、電源ケーブルを直接抜いてしまってもよいでしょう。電源ボックスのファンは AX760i が制御するので手を付けないので、残りは水冷クーラーに接続している背面のファンです。

水冷クーラーでない場合は、筐体自体のファンと、CPU の空冷ファンがあるので、ここの静音効果は大きいと思います。まあ、一番良いのが、PC 自体は別の部屋(サーバールームとか)に置いてしまって、リモートで制御するってのでも良いのですが、.NET 開発 PC の場合は XAML などのグラフィクを多用することになるので、モニタと PC は近い位置になってしまいます。

最強.NET開発PCを作るよ(その5) で書きましたが、マザーボードの BIOS で背面ファンの回転数を落しています。冬なのでフルパワーで冷やす必要はないのと、水冷の効果は大きいのではないか?というのを期待して、回転数を上げすぎないようにしています。これは室温にも関係するので、また夏になったらチェックしていみます。サーバールームとは違って、人がいる傍で PC が動作するので、室温はそれなりに上下します。いまのところ、いままで使っていた BTO の PC を少し下回るぐらいには音が減っています。

主に稼働する OS の領域を SSD にすることで、HDD の回転音が減ります。作業領域は HDD なので、それに頻繁にアクセスしているとき(Visual Studio で作業をしてたり、Office を使っているとき)は回転音が聞こえるのですが、エディタを使って編集作業をしている程度であれば、ほかの HDD は止まっている状態です。

気になる節電効果ですが、これは後ほどワットチェッカーを使って具体的に調べていきます。Core Temp で調べると、20 ~ 40 ワットの間を推移しているので、かなり低くなっているのでは?と想像ができます。これは、手元にある以前の PC を比較して調べていきます。

image

これでハードウェアは一通りおしまいです。次回は、OS の設定を少しだけ解説して、実際のコストを算出します。

カテゴリー: 最強.NET開発PC | 最強.NET開発PCを作るよ(その8) はコメントを受け付けていません

最強.NET開発PCを作るよ(その7)

目次へ 最強.NET開発PC

今回は電源ボックスの選定です。

image

ぶっちゃけ、私はPC の電源ボックスなんて、電源が入れば何でもいいんじゃないの?という手合いなので、筐体に付属していない電源ボックスを見たのは初めてなんですが、結構いろいろとあるのです。

私がいままで PC を使っていて壊れやすいのが、グラフィックボードと HDD です。グラフィクボードはオンボードのものや PCI のものもありますが、1か月か半年前ぐらいになんらかの兆候がでてきます。経験上、グラフィクボードが壊れる前は、何回かブルースクリーンになります。グラフィックドライバーとの整合性がボード上のチップとおかしくなるのか、突如として OS が落ちます。グラフィクドライバーは、Windows ではカーネルモードで動いているので、ここで不整合が起こると OS が落ちるんですね。チェックとしては別のグラフィックボードを差し込めばいいのですが、最近はオンボードのものが多くってなかなか大変です。安めのを1枚予備で持っておくと、緊急時にいいと思います。BIOS とかも見れませんから。

HDD がおかしくなるのは、みなさん兆候があるので、カリカリという音が続くと突如として落ちます。この場合、さりげなくバックアップを取っておくのが良いのですが、OS 領域とデータ領域が分離してないとちょっと交換は大変です。なわけで、私の PC には常に 2台の HDD がついています。

加藤さんのブログを見ていくと、業務系(サーバー仕様が多いと思うのですが)の場合は、電源系がやられることが多いみたいですね。大電流が流れているのと、落雷でアウトになるパターンがあるようです。私の PC の場合、幸いに落雷でやられたことがありません。まあ、事前に電源を切っていることが多いというのもあるし、連続運転時間も運用系に比べれば 1/10 ぐらいかもしれません。運用系の場合には、同じ PC を 10 年以上使うことが多いのですが、開発 PC の場合は 3 年位で OS ごと買い直しというパターンが多いですからね。

今回購入した AX760i は、 80PLUS PLATINUM認証 ということで、耐久性と低発熱、そしてデジタル制御ができるというのが売りです。デジタルで変換効率を監視・実現しているので、無駄のない高出力が…ってことになっていますが、正直私にはよくわかりません(苦笑)。

ax760i (3)

ちらっと聞くと、自作 PC ご用達の「高級電源ボックス」だそうです。性能とかなんとかよりも、この真黒な艶消しのボディがよいとかなんとか、確かに箱を開けたときの高級感は、他のパーツにはないものがありますね。ケーブルがビニール袋ではなく布製の袋に入っているところとか。そんな訳で、この電源ボックスを入れたときには、筐体をスケルトンにして LED でぴかぴかさせないとダメらしいんですが(中身を見せないともったいないらしい)。

ちなみに ハイブリッド・サイレントファンコントロール機能 というのが入っていて、負荷が少ないときはファンが止まるそうです。なので、こんな風にエディタで物書きをしている間(さほど CPU を使っていないとき)は、ファンが止まっていて煩くありません。

image

このあたりは、筐体の付属のファンもあるので、静音に関してはもうちょっと実測していきたいところです。

ちなみに、電源ボックスはいくつか勧められた中で一番高いものを選んでいます。これは「高い電源ボックスって意味があるの?」ってのを実体験したかったからなんですね。なので、このあたりは HDD をつなげたりとか、節電効果だとか、いろいろ調べたいと思っています。

カテゴリー: 最強.NET開発PC | 最強.NET開発PCを作るよ(その7) はコメントを受け付けていません

SkyDriveがどこまで同期しているかをチェックするツールを作りたい

とか思って、ざっと調べてメモ的に。

第48回 SkyDrive API 概要(1):使ってみよう! Windows Live SDK/API|gihyo.jp … 技術評論社 http://bit.ly/15BP39B
SkyDrive API (Live Connect) http://msdn.microsoft.com/ja-jp/library/live/hh826521.aspx …
JSON形式をC#のオブジェクトにシリアライズ・デシリアライズする – かずきのBlog@Hatena http://d.hatena.ne.jp/okazuki/20101217/1292600928 …
.NET FrameworkでJSONデータを処理する (2/4):CodeZine http://codezine.jp/article/detail/5868?p=2

ツール自体は、旧来のフォームアプリで作るのだが、直接のサンプルはない…というか、REST API で ok。どうせなので HttpClient を使って非同期にする。

Twitter のアプリと同じく、アプリケーション設定サイト でアプリを登録する。そうすると、クライアント ID が得られる。

ユーザーにクライアント ID を使ってアクセストークンを得る。アクセストークンは一定期間は使いまわせるらしい。Twitter の場合と違って、しばらく時間が経つと消えてしまっている気がする。

フォルダ、ファイルの情報は、JSON で得られるので、DataContractJsonSerializer を使ってデシリアライズする。

そこで、ここまで動くことを確認済み。

image

こんな感じでファイルとフォルダを取得できる。

■SkyDrive を使って相手にファイルを送る

ローカルのフォルダに置いて、すぐに相手に知らせると、まだ SkyDrive にあがっていない。なので、しばらく経つと自動的に同期をとるので、そのときにダウンロードして貰えばいいのだが、「いつ同期が完了するのか?」がわからない。なので、

  • ファイルがアップロードされてるか定期的にチェック&表示

が必要。新規の場合は、SkyDrive にファイルがないので、ローカルのフォルダと比較するとわかる。更新の場合は、ファイルの更新時刻 updated_time がわかるので、これを比較する。削除の場合は、あまり関係ない。

ってのを作れば ok

カテゴリー: ツール | SkyDriveがどこまで同期しているかをチェックするツールを作りたい はコメントを受け付けていません

[C#] UNIX 通算秒を DateTime に直す

と、本ブログのアクセス解析しようと思って WP SlimStat のデータを抜き出している途中で、気が付いたネタをひとつ。

WP SlimStat の日付データは unsigned int で保存されていて、通算秒になっています。なので、日付で集計したいときには、UNIX 通算秒から C# の DateTime に直さないといけないのですが、はて、そんな関数ってあったっけ?と結構 google で検索しました。

uint ut ; // UNIX 通算秒
DaiteTime dt = new DateTime(1970, 1, 1).AddSeconds((double)ut);

ああ、そうすね。AddSeconds メソッドを使えば一発です。
逆向きもメモ的に書いておきます。DateTime を UNIX 通算秒に変換します。

DateTime dt ;
uint ut = (uint)(int)(.dt.Ticks - new DateTime(1970, 1, 1).Ticks) / 10000000;

最終的にやりたいことは、WP SlimStat のグラフを iPhone で見ることなので、サーバー系は PHP で書くことになりそうなのですが、手始めに C# を使って解析ということで。


こんな風に Chart を使うと簡単にグラフ化できます。PHP の場合は HTML5 で出力する予定。

カテゴリー: C# | [C#] UNIX 通算秒を DateTime に直す はコメントを受け付けていません

最強.NET開発PCを作るよ(その6)

最強.NET開発PCを作るよ(その1) はじめに
最強.NET開発PCを作るよ(その2) メモリ編
最強.NET開発PCを作るよ(その3) CPU編
最強.NET開発PCを作るよ(その4) ストレージ編
最強.NET開発PCを作るよ(その5) マザーボード編

の続き

image

時代はデュアルモニタ(マルチモニタ)ってことで、グラフィックボードを購入します。3D ゲームを全然やらないので、グラフィックボードに関しても私は素人です。なので、ZOTAC GeForce GTX 650 2GB がどれだけ高速なのか?ってのも猫に小判状態なのですが、 シミュレーターの中でマインスイーパーが動く程度に高速です。シミュレーターが GPU  を使っているかどうかが不明なので、高速な CPU のおかげかもしれないのですが。

image

さて、3D モデリング、CAD 関係、絵師、Web デザイナ、ゲーム制作などなど、とグラフィックボードの性能を引き出す仕事はたくさんあるのですが、ひとまず、Visual Studio 2012 で Windows ストア アプリを組むときに、グラフィックボード、GPU はどこにかかわってくるのか?ということを考えると、

  • Blend で XAML のデザイン環境
  • Visual Studio 2012 の XAML デザイナ?
  • Storyboard を使ったアニメーション
  • C++/CX、DirectX による画面コンポーネント開発

に関わってきます。C++/CX による画像系のコンポーネント開発は、Windows ストア アプリで直接 DirectX を扱うことができるので今後広まると思われる分野です(私的には広まって欲しい分野でもありますね)。DirectX の場合、DirectX 9 から 11 までのバージョンによってコーディングが変わってしまうのですが、Windows ストア アプリの場合、インターフェースが揃えてあるのでWindows ストア アプリの範囲内であればあれこれとバージョンに悩む必要がありません。ってことになっています。なので、今後の Windows 8 PC では、この手の DirectX 関係が入っているのが「当然」になるので、アプリにインストール時にあれこれと悩む必要がなくなるかなと。この話は、また別の機会に。

■Blend での編集

Visual Studio 2012 では、XAML のアニメーションを Flash のように作れます…といいますか、Flash のほうは作ったことがないので、XAML のアニメーション制作環境として Blend がどれだけチープなのか(リッチなのか)はわからないのですが。非力な CPU/GPU の環境だと Blend はかなり重たいです。

image

タスクマネージャで見るとわかるのですが、Blend で XAML をデザインしようとすると、2つのプロセスが動いています。

  • Blend for Visual Studio 2012
  • Blend for Microsoft Visual Studio 2012 XAML UI Designer

image

Blend for Visual Studio 2012 は、Blend 本体のプロセスで、Blend for Microsoft Visual Studio 2012 XAML UI Designer は、XAML をデザインするところのプロセスです。デザイナの部分だけが別プロセスになっているのは、実は Visual Studio 2012 本体でも同じです。

■GPU が働いているか確認する

Process Explorer を使うと、GPU が働いているかどうかを確認できます。

image

確実に GPU 上で動いているであろうマインスイーパーを動かすと、こんな感じで GPU が動いていることがわかります。Comit 量も多いので、グラフィックボードを入れる価値があった、ってところですね。グラフィックがオンボードの場合は、どうなるのか確認していませんが…、ひとまず、GPU がMinesweeper.exe では使われていることが確認できます。ええ、所詮マインスイーパーなんですが(苦笑)。

image

Process Explorer で Blend 本体と XAML デザイナのプロセスを見ていきます。左が Blend 本体(Blend.exe)、右が XAML デザイナ(XDesProc.exe)です。Visual Studio 2012 を動かしていると、XDesProc.exe が複数起動しているので、ここでは Blend から起動されたものを選択します。

image

どちらも GPU をマインスイーパーほどではありませんが、それなりに使っています。画面キャプチャを撮るときに storyboard でアニメーションを開始/終了を繰り返すと、ちょっとだけ XAML デザイナが GPU を使うようになります。ちょっとだけ…なので、あまり GPU の恩恵にあずかっているわけではないのですが。まあ、それなりに。ちなみに、Blend のメニューなどをいじると、今度は Blend 本体の GPU が使われます。

image

Visual Studio 2012 本体と、XAML デザイナの関係も同じで、ぐりぐりと XAML デザイナで編集しているときには GPU を使っています。また、Visual Studio 2012 本体のメニューをいじっているときは、本体側の GPU が使われます。

ちなみに、アニメーションを使った Windows ストア アプリを実行した場合は、ちょっとだけ GPU が使われます。まあ、XAML を使った簡単なアニメーションなので、あまり CPU/GPU に負荷をかけていないからですね。このあたりは、負荷をかけるような storyboard を作って後で確認してみましょう。

image

image

ちなみに、GPU を全く使っていない QX エディタはこんな感じになります。エディタの場合は、GPU を使わなくてもいいので、エディタを使ってプログラミングをしているときは、全くの無駄ってことですね(苦笑)。

image

■XAML デザインにグラフィックボードが効いてくる

グラフィックがオンボードの PC の場合、XAML デザイナが妙に重くて変だなぁと思っていたのですが、これで問題が解消できそうです。ひとまず、安めの PC でもグラフィックボードを入れれば、Windows ストア アプリの XAML デザイナのところで有効活用できそうです。ただ、実際には、Visual Studio 2012 本体や Blend 本体との連携が必要になるので、そこそこの CPU 性能とメモリは必要になってくるでしょうが。

それと、XAML のアニメーションを使ったアプリの場合にも、通常の状態で GPU をきっちり使ってくれています。なので、ターゲットの PC にそれなりのグラフィックボードが入っていれば、C++/CX で DirectX を弄らなくても、C#/VB の範囲で XAML の storyboard を使えばそこそこの性能がでるのでは?という予想が立ちます。そのあたりは、別途ベンチマーク用のツールを作って確認していきましょう。

カテゴリー: パフォーマンス, 最強.NET開発PC | 1件のコメント

最強.NET開発PCを作るよ(その5)

最強.NET開発PCを作るよ(その1) はじめに
最強.NET開発PCを作るよ(その2) メモリ編
最強.NET開発PCを作るよ(その3) CPU編
最強.NET開発PCを作るよ(その4) ストレージ編

の続き

image

メモリ 64GB、CPU Intel i7-3820、SSD 512GB、HDD 2TBx2 の構成で組むことを決定した後は、それを乗せるマザーボードの選定です。

正直、私自身はマザーボードには詳しくなくて(他のパーツも詳しい訳ではないのですが)、どのマザーボードが適しているかどうか、逆に言えば適していないかどうかは、両氏に考えていただきました。オーバークロックをやるわけではなく、ハードな3Dゲームをやりたいわけでもないので、オーソドックスな感じで上記の、メモリ、CPU、ストレージが乗せられれば ok なので、買ってきた X79 Extreame 9 の性能がどのくらいのものなのか、さっぱりわかりません(苦笑)。なので、選定基準はあとから詳しく聞いて記事にするということで、ここではざっと私の視点から見たものを挙げておきます。

メモリスロットルが8つということで、X79 のほうを購入した訳ですが、他のポイントとしては、SATA3 が 8 本あること、BIOS インターフェースが UEFI であることですかね。

UEFI を使って起動時を高速化する方法は、

UEFI ファームウェアへの Windows の展開の概要
http://technet.microsoft.com/ja-jp/library/hh825095.aspx
【清水理史の「イニシャルB」】 Windows 8を覚醒させるUEFIチューニング~電源オンから5秒以内に起動するPCを実現する -INTERNET Watch
http://internet.watch.impress.co.jp/docs/column/shimizu/20121002_563382.html

あたりを参考にすればよいでしょう。私の場合、それほど起動時間を気にしないほうなので(普段はスリープからの復帰)、これはこのままにしておきます。

SATA3 の本数のほうは、開発機とはいえ HDD を拡張することが前提(ユーザー領域、データベース領域、VM 領域など)なので、できるだけ拡張性が高いほうが良かろうというところです。PCI は、グラフィックボードを乗せるぐらいなので、あまり多くなくて大丈夫です。

今気づいたのですが、LAN ボードをデュアルで乗せることができるので、LAN ケーブルを2本差して転送を高速化することができるんですね。なるほど。このあたりはあとで試してみます。

■グラフィック BIOS, UEFI

グラフィック BIOS は、こんな画面が立ち上がります。やれることは、普通の BIOS と同じ(なのかな?)なのですが、マウスが使えるので設定が簡単にできます。

image

再起動の直後で、CPU 温度が 45.0 度なので水冷クーラーが効いているのかと思います。

image

ちなみに、このボードはファンのスピードが変えられて(最近のマザーボードって、こんなに高機能なんですね…昔の DOS/V の頃のものしか知らないもので)、Full On で最高スピードでファンが回っていて結構うるさかった(それでも慣れましたが)のでうが、ファンのレベルを Level 4 に落としてかなり静音になりました。cpu の温度をチェックすると、40 度前後なのでまあ良いかと。

image

がりがり VMWare とか SQL Server とかを使ったときにまた確認してみます。

お次は、グラフィックボードを選定してみましょう。

カテゴリー: 最強.NET開発PC | 最強.NET開発PCを作るよ(その5) はコメントを受け付けていません

HDDのアクセススピードは VMWare に影響するのか?

最強.NET開発PCを作るよ(その4) ストレージ編

の番外編として、CrystalDiskMark で HDD, SSD のアクセススピードを比較してみます。

VMWare が仮想 HDD にアクセスすると、それはそのまま物理 HDD のスピードに影響される訳で、遅い HDD 上に VM のディスクを作るとか、複数の VM が同じ HDD にアクセスしに行くと VM のスピードが落ちるのではないか?という仮説を確認します。

■まずは基本性能のチェック

CrystalDiskMark_SSDCrystalDiskMark_HDD1CrystalDiskMark_HDD2

左から

  • C ドライブの SSD
  • D ドライブの 新しい HDD
  • G ドライブの古い HDD

です。シーケンシャルアクセス(Seq)が、SSD が HDD の約3倍ぐらい。しかし、Visual Studio を使ったコンパイルの場合や SQL Server によるデータの更新には、20K ぐらいの小さなファイルアクセスが頻繁に発生します。となると、512K の 10 倍ぐらいから 4K の 30倍ぐらいの違いの間ぐらい、SSD は HDD よりもディスクアクセスのスピードが違うのではないか?という予想が立てられます。

■VMWare 上でベンチマークする

SSD 上の場合(左がホスト、右がVMWare上)

CrystalDiskMark_SSDCrystal_VMware_SSD

HDD 上の場合(左がホスト、右がVMWare上)

CrystalDiskMark_HDD1Clystal_VMWare_HDD1

VMWare 上だと、小さなファイル(4Kぐらいのファイル)で効率化されてるかと思ったら、そうではないみたいですね。逆にシーケンシャルのほうも、さほど VMWare 上だからといって、遅くなるものではないみたいです。

■同じ物理ドライブでベンチマークを動かす

VMWare 上で試す前に、同じ物理ドライブ(C ドライブの SSD上)で、2つのベンチマークを動かしてみます。そうすると、シーケンシャルのRead/Writeががくんと落ちて、1/2 になっています。同じ物理ドライブに対して R/W が発生するので、2 倍の負荷がかかります。当然ですが、スピードが 1/2 に落ちますよね。

image

ただし、よく見ると 512K や 4K は、それほど落ちていないことがわかります。もともとランダムアクセスで遅くなっているところがあるので、HDD のシーク速度を補う形でパフォーマンスが出ているかと。

異なる物理ドライブ(SSD と HDD)で動かすと次のように、それぞれのドライブだけでテストしたものと同じ結果が得られます。

image

■同じ物理ドライブで VMWare を動かす

VM の仮想ディスクを、同じ物理ドライブした状態で、それぞれの VM でベンチマークを起動します。VM 自体が別々なので、別々のパフォーマンスになるように見えますが、当然同じ物理ドライブを共有してしまっているので、パフォーマンスは 1/2 になってしまいます。

imageimage

こんな風に SSD の C ドライブだけが使われている状態になります。

image

逆に VM の仮想ディスクを異なる物理ドライブにした状態では、VM のパフォーマンスが良いことがわかります。左が SSD に配置している VM、右が HDD に配置している VM になります。単体で動かしたときと同じ程度のパフォーマンスが得られていますよね。

imageimage

また、ホストのタスクマネージャーをみると、C ドライブ(SSD) と E ドライブ(HDD)の両方が使われていることがわかります。

image

■同時に動かす VM は別の物理ドライブに配置する

そんなわけで、同時に動かす VM の仮想ドライブは、異なる物理ドライブに配置するとパフォーマンスが良くなるという実験結果が得られました。今回の場合は、ベンチマークを使って HDD, SSD に直接アクセスした訳ですが、VM に振り分けられるメモリが少ない場合はスワップが発生するので、この時点で、同じ物理ドライブに配置している場合はパフォーマンスが大きく低下することになると考えられます。

開発機の場合は VM をいくつも立ち上げることは稀なんでしょうが、仮想専用のサーバー機で VMWare や Hyper-V を使っている場合には、注意したいところかと。

カテゴリー: パフォーマンス, 最強.NET開発PC | 1件のコメント

最強.NET開発PCを作るよ(その4)

最強.NET開発PCを作るよ(その1) はじめに
最強.NET開発PCを作るよ(その2) メモリ編
最強.NET開発PCを作るよ(その3) CPU編

の続き

image

ストレージ(HDD, SSD)を選定するときに、巷では 「Windows 8 の起動スピードを速くするために、SSD を使うのがよい」という話が多いのですが、私の場合、Windows 7 の頃からスリープを使っているので、起動に関しては通常の HDD で問題がありません。確かに瞬時に立ち上がるのは「心のストレス」的に良いには良いのですが、シャットダウンした後に、再び Outlook やら Visual Studio やらアウトラインエディタやらを立ち上げなおして、同じファイルを開いて、再び昨日の仕事の環境を整えるよりは、スリープから一発で立ち上げたほうが「仕事のストレス」的に良いのです。節電としては休止状態でもいいわけで、昨日の仕事場と今日の仕事場は連続した状態でありたいですよね。

なので、HDD, SSD を選定するときに、開発PCとしての視点では、

  • OS 領域とワーク領域を物理的に分ける
  • SQL Server などのデータベース領域を物理的に分ける
  • できれば、VMWare が使う仮想領域も分ける

という分け方で HDD/SSD の選定をします。

■OS 領域とワーク領域を分ける

OS 領域である C ドライブには Windows 8 を入れます。マイドキュメントなどのユーザー領域は他のドライブに逃がすこともできますが、開発時の安全性(さまざまなツールを使うことが多いので、デフォルトのドライブを変えないほうが、トラブルが少ないのです)を優先させます。なので、Visual Studio 2012 や Office 2013 などのインストール付きアプリも C ドライブに突っ込みます。

この C ドライブには基本「手順書」を使うようなバッチ付きインストーラーを使ってもインストールできるような状態にしておきます。HDD がクラッシュした時にもできるだけ早く復活できるようにすためです。

なので、HDD の物理的なクラッシュに備えて、プログラムやドキュメントなどのワーク領域は、D ドライブに入れます。私の場合、マイドキュメント配下に、ソースや設計書を置くことはありません。よく C ドライブと D ドライブが、ひとつの物理 HDD に乗っている場合もあるのですが(OS 入れ込みの BTO パソコンの場合は、そういうパターンが多いです)、HDD を追加して、データ領域を逃がすようにします。

サーバー系の場合は、データ復旧のために RAID を組むことが普通なのですが、開発用 PC の場合はソースや設計書などは別途 VSS や TFS などを使うために RAID を組みません。むしろ、RAID を組むとコンパイルスピードなどが遅くなってしまうので避けます。

物理的に C ドライブと D ドライブが別の HDD になっていると、OS がクラッシュしたときは、D ドライブの HDD をそっくりそのまま別の PC に移し替えて作業ができます。また、OS がクラッシュしても D ドライブに影響がないのがよいのです。ノートブックの場合は、このパターンができないので、定期的にデータ領域を PC にバックアップさせています。ノートブックの場合は、据え置きの PC とは違い、落下や盗難、水没などのリスクがあるので、ノートブックにしかないデータというのが存在しない状態になっています。

■SQL Server が使う領域を別 HDD にする

SQL Server を激しく使う場合には、別の HDD にデータベース領域を取ります。これはサーバー機でも同じなのですが、SQL Server がデータベースにアクセスしようとすると、できるだけ HDD のシークピンがそれ専用になるほうが早く動作します。たとえば、SQL Server でデータ解析をしているときに、Visual Studio でプログラミングなどをすると(あまりやらないだろうけど)、データ解析が遅くなります。その他、諸々あって、データベースの領域は別々のほうがいいんですよね。極端な話、2倍ぐらいのスピードが違います。これはあとで実測しましょう。

ちなみに、データベース管理者(DBA)的な視点で言えば、master 領域は別にするとか、同時アクセスする領域は別の HDD にしたほうが早くなるとか、クエリのチューニング以前の基本的な問題がいくつかあります。開発 PC の場合には、そこまでは必要がないので、数台の HDD を入れることは稀ですが。

■VMWare などで使う仮想領域を別 HDD にする

VMWare などの仮想 PC の場合には、データベースよりも更に影響が多いと思います。思います、というのは、この部分だけ経験則なので実測はしていないのです。vaio のノートブックに vmware を乗せて vc++ を使ってコンパイルをしているのですが、実に遅いのです。現在、最強PCに移してみると、それなりに早くコンパイルができます。CPU が早くなったというのもあるのですが、ちらちらとタスクマネージャを見ていたのですが、実は思ったよりも VMWare が HDD に掛ける負荷は大きいのかもしれません。

image

Twitter / kkamegawa: メモリ8GBで3台のVMまではやったことがあるけど、ディスク …

image

という話もあるし、確かに私も VMWare 3台の場合は妙な動きをする(いきなり、リモートデスクトップでつないでいる仮想 PC が重たくなる)ので、それかもしれません。同時に使う VM の場合は、別々の HDD に分散させるといのかも。となると、巷で言われる古いサーバーを VMWare に乗せたり、Hyper-V に乗せたりしている場合はどうなるのか?という話がありますよね。そういう記事はあるのかな?

■そんなわけで SSD, HDD を構成する

  • SSD – OS 領域
  • HDD – ワーク領域
  • HDD – SQL Server 領域
  • HDD – VMWare 領域

という具合にします。VMWare 領域は、以前の PC から引っ越ししたので、購入分は SSD と HDD 2台です。

image

SSD は、256 GB 程度でも良かったのですが、データベースを SSD で試すとか、VMWare を SSD で試してみたいとか、という目的もあったので、かなり多めのものを用意しています。

  • C ドライブ SSD 512 GB
  • D ドライブ HDD 2 TB
  • E ドライブ HDD 2 TB
  • G ドライブ HDD 1 TB

という構成。SSD は、Plextor PX-512M5P を使い、HDD は好みの関係から W.D WD20EZRX SATA3 2TB を 2 台。G ドライブは、日立のものです(まあ、今となっては一緒なんですが)。

image

VMWare のほうは、こんな風に Linux やら、Windows XP やらいくつかのバージョンを用意しておきます。いくつか容量が足りなくて処分してしまったのですが、Windows XP の SP1 などを残して検証用に使います。あとは、開発環境(Visual Studio 2008)とソースコードを入れ込んで、いつでも復活できるようにするとか、そういう使い方をします。これも HDD を別にしておくことで、新しい PC に即換装ができるということです。まあ、コピーしても1昼夜かければ、大丈夫ですが。これもクラッシュに備えるとうことで。

つぎは、CPU, メモリ, HDD を積むということで、マザーボードの選定の話を。

カテゴリー: 最強.NET開発PC | 最強.NET開発PCを作るよ(その4) はコメントを受け付けていません