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

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

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

Re[5]: ページアウト?


(過去ログ 56 を表示中)

[トピック内 6 記事 (1 - 6 表示)]  << 0 >>

■32071 / inTopicNo.1)  ページアウト?
  
□投稿者/ chobi (14回)-(2009/01/31(Sat) 01:08:51)

分類:[C#] 

実行:XP emb (EWF + Hibernation / CF:2GB RAM:512MB)
開発:XP or XP emb
.net2.0/System.Windows.Forms

いつもお世話になっています。
マネージドコードでWindow最小化させてもページアウトをさせないようなアプリの作り方(オブジェクトの生成の仕方)について教えて下さい。(無理?)

★ 現在の状況
(1) ハードウェアを制御し、各種ハードウェアからデータを収集して "***.csv" にデータをストレージしていくメインアプリ
(2) 前述の"***.csv"から時系列のデータを表示するグラフアプリ
(3) グラフアプリが起動していない場合はメインアプリから起動され、グラフアプリが起動している場合は最大化(メインアプリから操作)、最小化(グラフアプリから操作)ShowWindow()

を作ったのですが、プロットするデータが多いため、グラフアプリのレスポンスが少々悪いため、改善しています。

改善点1 "***.csv" から取り込んでいたデータの代入先: SortedDictionary<DateTime, Single> --> SortedList<DateTime, Single> (^_^;)
改善点2 再描画回数の低減

以上でそこそこレスポンは良くなったのですが、グラフを最小化-->最大化させた後の動きがちょっと悪いのです。
グラフアプリを最小化、最大化しながらタスクマネージャ見ていたところ
(1) 初回起動時 --> メモリ使用量:14M/仮想メモリサイズ:15M
(2) ちょっと重いcsv取り込み --> メモリ使用量:40M/仮想メモリサイズ:40M
(3) グラフを最小化 --> メモリ使用量:1M/仮想メモリサイズ:40M
(4) グラフを最大化 --> メモリ使用量:40M/仮想メモリサイズ:40M

というような動きをします。
Windowsは(2)-->(3)へ移行する際、非アクティブになったWindowのオブジェクト(メモリ)をページアウトさせているように
感じたのですが、正しい認識でしょうか?
ヒープの確保の際に、使用メモリ領域のコミット等はできないのでしょうか?(VS2005)
昔、どこかでヒープ領域指定していたような気がするのですが、最近VSいじっていないので忘れてしまいました(^_^;)

以上宜しくお願い致します。
引用返信 編集キー/
■32073 / inTopicNo.2)  Re[1]: ページアウト?
□投稿者/ オショウ (84回)-(2009/01/31(Sat) 07:18:17)
No32071 (chobi さん) に返信
> 実行:XP emb (EWF + Hibernation / CF:2GB RAM:512MB)
> 開発:XP or XP emb
> .net2.0/System.Windows.Forms

  グラフ表示は何を利用しているんでしょうか?
  次にCSVファイルの大きさは?
  (行数と要素にあたる1行のデータ数)

  丁度、NPlot使って、10万行(1行4要素)のCSVデータから
  折れ線グラフ書くソフト作りました。当然、データサンプリング
  してCSVに保存後、グラフ表示と言う流れです。

  NPlotの性能(アルゴリズム)もあるんでしょうが、グラフ表示
  するプログラム単体のメモリ使用量は、タスクマネージャで見る
  限り、約25MBに到達。仕様上、10万行のデータ作成機能もある
  のでそちらを動作させた場合は・・・元データが最大1000万行の
  データ数なのでメモリ使用量は約470MBまで増えます。
  (MemoryStream多用して高速化させていますので)

  グラフ表示の折、アプリを最小化・最大化させた場合、当然リド
  ローがかかるので、30万要素(4要素の内、1個はX軸データ
  なので)の折れ線グラフ書き直しにCPU性能等が大きく影響!
  Core2Quad(2.83GHz・3GBメモリ) のマシンで約2秒
  Pentium4(3GHz・2GBメモリ)の、マシンで約5秒
  Pentium4(2.4GHz・2GBメモリ)の、マシンで約15秒

  ストレージがSTAT2のCore2Quadは圧倒的に早いですが、他
  のPentium4マシンは、ATA-100なので、CSV読み込む速さも影
  響があるみたい。(当然か・・・)

  と言うところですので、お使いのマシンの512MBメモリでは、
  OS自体が200MB強メインメモリ使用していると思いますので、
  空きメモリの都合、スワップアクセスがあるのでは?
  CPU性能書いてなかったので、判断できません。

  参考までに

以上。
引用返信 編集キー/
■32074 / inTopicNo.3)  Re[2]: ページアウト?
□投稿者/ 774RR (308回)-(2009/01/31(Sat) 09:05:51)
XP の仕様として、ウィンドウの最小化で Working Set Size を縮小する動きをしてる
マネージで作ろうがアンマネージで作ろうがこの挙動は同じ。
ページアウトってのが Windows 用語ではないのでアレだけど、そういう状況になったら
ソフトページフォルトないしはハードページフォルトが発生するので遅くなる。
http://d.hatena.ne.jp/NyaRuRu/20051022
とりあえず俺なら「XPの仕様です」と言い切って逃げちゃうだろう。
引用返信 編集キー/
■32076 / inTopicNo.4)  Re[3]: ページアウト?
□投稿者/ ちゃっぴ (199回)-(2009/01/31(Sat) 09:57:11)
ちゃっぴ さんの Web サイト
No32074 (774RR さん) に返信
> XP の仕様として、ウィンドウの最小化で Working Set Size を縮小する動きをしてる
> マネージで作ろうがアンマネージで作ろうがこの挙動は同じ。
> ページアウトってのが Windows 用語ではないのでアレだけど、そういう状況になったら
> ソフトページフォルトないしはハードページフォルトが発生するので遅くなる。
> http://d.hatena.ne.jp/NyaRuRu/20051022
> とりあえず俺なら「XPの仕様です」と言い切って逃げちゃうだろう。
引用返信 編集キー/
■32077 / inTopicNo.5)  Re[4]: ページアウト?
□投稿者/ ちゃっぴ (200回)-(2009/01/31(Sat) 10:14:23)
ちゃっぴ さんの Web サイト
↑ すいません。

とりあえず、Win32 では VirtualLock を利用することで page out させないようにすることは可能ですが、.NET では難しいんじゃないでしょうか?
引用返信 編集キー/
■32089 / inTopicNo.6)  Re[5]: ページアウト?
□投稿者/ chobi (15回)-(2009/01/31(Sat) 15:58:34)
オショウさん、774RRさん、ちゃっぴさんお返事ありがとうございます。

CPUはこれです。
http://jp.axiomtek.com.tw/Products/ViewProduct.asp?view=649
装置に内蔵させて使ってます。コンパクトで、冷却ファンいらないので便利なのですが、ちょっととろいです。

データは1日に1個日付でファイル作るようにしています。50項目を5秒周期で溜めていきます。
24時間フルで動かしても5MB位です。
グラフ表示は完全な自作品です。(レスポンスの遅さは別にして機能的にはなかなか評判よいです)

774RRさんの
http://d.hatena.ne.jp/NyaRuRu/20051022
に全ての回答がありました。大変勉強になりました。ありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -