C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 116 を表示中)
■68509 / )  Re[1]: HDD書き込み遅延
□投稿者/ オショウ (94回)-(2013/10/24(Thu) 18:04:14)
> 512KBのデータを60ms間隔で2時間、ファイル出力するプログラムを作成しています。
> (ファイル名は出力する直前にGetLocalTime()で取得したミリ秒までの値をファイル名としています)

  なかなかハードいじめな仕様ですネ!
  PCとHDDの性能にモロに依存していると思います。

  HDDへのライト動作は、一番時間を要します。
  通常、遅延書き込みは、5秒程度だったと思いますので・・・

  512KB * 16 * 5 = 約40MB

  実際にはOSのキャッシュに十分入るサイズですが・・・OSはそれ以外
  の仕事もしているので、すべてをアプリでぶんどることはできません。

  通常、遅延書き込みを嫌うならキャッシュさせない方法で書き込みで
  きますが、おそらくもっと少ないファイル数になると思います。

  2時間行うということですので

  512 * 16 * 60 * 60 * 2 = 約60GB

  HDDに書くかわりに、SSD を搭載してそこに書き込むようにすれば、
  書き込み時間は短縮されますので、数が少なるなることは低減でき
  ると思います。

  あとは、60ms間隔と言う部分ですネ!
  ハードウェアタイマーとか割り込み使ってサイクリックな動作を行う
  ようなプログラム構造ですか?
  それとも無限ループ作って、Sleep(60)とかしてますか?
  この場合は、ハードウェアタイマー使って割り込み動作でサイクリッ
  クな動作にしないと、CPUの負荷変動でSleepから指定時間内に復帰し
  てこなくなる為、当然、書き込みファイル数は少なくなります。

  あと、その書き込む機能をスレッドにして優先順位を高くするとか・・・
  より優先度を獲得したいなら、Windowsサービスにするとか・・・

以上。参考まで
  
返信 編集キー/


管理者用

- Child Tree -