• 締切済み

非機能要求のトレードオフ(アーキテクチャ設計)

客先からあがっている非機能要求に、「処理速度」と「メモリ使用率」が並んでいます。対象となっているシステムは、大きなファイルの読み込みをするので、最初に全部読み込んでメモリに展開し、その後はメモリのデータを読むことによって妥当な「処理速度」を達成しようとしましたが、そうすればメモリ使用率が上がってしまい、結局、処理速度が落ちてしまうもんですよね。同時にそこそこ妥当な線で達成する方法は、ありますでしょうか。システムの詳細は書けないですが、マルチスレッドやトランザクション、通信などはあまり関係のないシステムで、設計対象は、ただ膨大なデータをひたすら計算するだけって感じです。まだアーキテクチャの勉強を始めたばかりで、どの点を抑えるべきなのかがわかりません。

  • aneja
  • お礼率93% (379/405)

みんなの回答

  • a-saitoh
  • ベストアンサー率30% (524/1722)
回答No.1

大きなデータファイルを読むといっても先頭から順に処理してゆくだけなら、全体をメモリに置く必要はありません。 具体的な処理内容と、使用可能メモリ量と、ファイルサイズを書いていただけない限り、これ以上の助言は出来かねます。 というか、そもそも、使用するハードウェアの搭載メモリ量は決まっているのでしょうか? そもそも非機能条件としてメモリ使用率が上がっていること自体が間違いではないでしょうか?メモリは、余したからといってうれしいことは何も無いですが。使いすぎて仮想記憶が働き出したらだめですけどね。

aneja
質問者

補足

早速のご回答、ありがとうございました。説明不足でしたので、何点か補足します。 ・具体的な処理内容 読み込むファイルには、計算条件のパラメータや、計算に使う基礎データが入っています。一定項目が繰り返し格納されているのではなく、全て別個のデータです。「先頭から順に処理」というわけでもないです。例として入力がXMLファイルとすると、タグAのシンボルaは、各機能のいたるところで使われたり、タグBのシンボルbと演算されて、タグCのシンボルcを更新する、というような処理イメージです。入力ファイルを読んで、演算して、更新したデータをファイルとして出力します。プログラム実行中、何度もファイルアクセスするのは遅いので、最初にメモリに入れようと考えています。 ・ファイルサイズ ファイルサイズは、3次元格子ごとのデータがあったりするので最大で400MBくらいのオーダーです。 ・使用可能メモリ量 使用するハードは、2GBだそうです。(厳密に2GBでなければダメというわけではなく、逆に「○○GBはないと、このプログラムは厳しいです」という提言も聞くだけは聞いてくれそうな感じです) スワップを起こさずストレスを感じさせない程度、という見積もりが定量的にできません。

関連するQ&A

  • メモリアーキテクチャについて

    テキスト「応用情報技術者」の中の「第二章:ハードウェア」において、メモリアーキテクチャに関する質問です。 半導体メモリは、DRAMとSRAMに分けられます。 これらの二つの特徴は、 DRAM…リフレッシュ:必要、使用回路:コンデンサ、速度:低速      価格:安価、用途:主記憶装置、集積度:高い SRAM…リフレッシュ:不要、使用回路:フリップフロップ、      速度:高速、価格:高価、用途:キャッシュメモリ、      集積度:低い そのうち、SRAMは動作原理によってバイポーラ型とMOS型があります。 バイポーラ型…速度:高速、集積度:低い、ビット単価:高価、        用途:キャッシュメモリ MOS型…速度:低速、集積度:高い、ビット単価:安価、      用途:主記憶装置 以上のように記述されてましたが、これは矛盾が発生していると思います。 なぜなら、SRAMの特徴では用途はキャッシュメモリに使われると書かれているのに対し、SRAMの動作原理よって分けられたバイポーラ型とMOS型のそれぞれの用途は、キャッシュメモリ・主記憶装置になっています。 私の考え方が間違っているのだと思うのですが、どのように解釈したらよいのか困っています。 適当なコメントをお願いします。

  • 平成23年 春期 基本情報技術者 午前 問19

    解説にある、「データベースサーバでは、1トランザクション当たり、データベースの 10 データブロックにアクセスする SQL が実行される。データブロックのアクセスに必要なデータベースサーバの CPU 時間は, 0.2 ミリ秒で、CPU 使用率の上限は、80%であるから、処理できるトランザクションの数は 400 件になる。 」で、なぜ400件になるのかがわかりません。 問題文から、1トランザクションにつき、0.2ミリ秒かかる。 ということは、2秒につき、300トランザクション処理する。 ということは、1秒ではその半分で、150トランザクション処理する。 ということは、150トランザクション×0.8(CPU 使用率の上限)=120トランザクションでは?? http://情報処理試験.jp/FE23a-am/k19.html

  • DivXの謎

    Divxは6.xxからマルチスレッドに対応ようですが、 これはソフトが対応していなくてもDivXでエンコードすると マルチスレッドで処理されるんですか? また、他のXviD、wmvはマルチスレッドに対応しているのですか? ソフトがマルチスレッドに対応というのは分かるのですが、 コーデックもマルチスレッドに対応とかあるんですか? また、マルチスレッドで動いているかどうかはどうやったら分かりますか? デュアルコア環境でCPU使用率が100%、CPU使用率グラフが同期しているとか なんでしょうか。 意味が分からない質問かもしれませんが、よろしくお願いします。 CPUはAthlonX2 3800+、エンコーダーはIOデータ GEencoderです。

  • 膨大データ処理を高速化したい

    仕事上、膨大データ処理を行っており、その処理に一度の処理に何十分も掛かり困ってます。 OSはWindows7でCPUはCore5、メモリ4GBの環境でも何せこれだけの膨大データなので。 その方法としてインメモリというメモリに対象データを格納してHDDを介さず高速データ処理が可能な技術もあるそうですが、どうやらそれは個人向けの技術ではなさそうですね。 ですが膨大データ処理を行ってる以上、高速処理を実現させる必要があり、できれば個人でもインメモリを実現させたいです、またインメモリに代わる高速処理の方法があれば教えて下さい。

  • プロセッサの命令実行時間

    基本情報処理のプロセッサの命令実行時間について質問です 1件のトランザクションについて80万ステップの命令実行を必要とするシステムがある。 プロセッサの性能が 200 MIPS で,プロセッサの使用率が 80 %のときのトランザクションの 処理能力(件/秒)は幾らか。 答は200なのですが、これがよくわかりません。 回答には、200 x 0.8とありますが、なぜこの式が成り立つのかまずわかりません。 200MIPSのプロセッサ性能のシステム?のうち80%が使用されているということでしょうか? そしてその次に80万のトランザクションであれば、160百万 ÷ 80万で200件となります。 これもなぜこの二つの数字を割るのかわかりません。 根本的に理由がわかっていないと、このような似た問題が解けないので、どなたか小学生でもわかるくらいかなり簡単に説明できる方いらっしゃいますか

  • Superfetch機能のオフ

    Windows7 64bit、物理メモリは4GBを使用しておりますが、パソコンを起動して、タブブラウザでいくつかのサイトを開いて、それらを見ながらWord2003のファイルを複数立ち上げて編集。ブラウザの動作がすこし遅い気がしてタスクマネージャを見ると、オフにしたはずのスーパーフェッチがオンになっているようです。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters 右側のペインで EnableSuperfetchとEnablePrefetcherというREG_DWORDエントリの値のデータが「3」のところを「0」に設定することで無効化されるそうですが、無効になっていないと思います。確かに「コンピュータの管理」の Superfetch というサービスは「停止」になっていますが、タスクマネージャを見るといつだってメモリは必要以上に使用され、空きメモリはたいてい「0」になっています。 どうやったらスーパーフェッチをオフにできるのでしょうか。

  • 数学なのか微妙ですが切実です…(><)システム系なのかな…

    <問題>トランザクションは到着率λのポアソン到着過程にしたがい到着をする。CPUは1台あり、トランザクションはサービス率μの指数分布にしたがうCPU処理時間を要求する。処理は先着順に行われるものとする。CPU待ちのためのバッファは1個分のみ用意されており、バッファが占有されている状態に出会ったトランザクションは処理を受けることなく退去する(呼損となる)ものとする。すなわち、システム内には最大2個のトランザクションが滞在できることになる。このとき、 1.このシステムの定常状態における状態推移図を示せ。 2.状態方程式(平衡方程式)をつくれ。 3.この方程式を解き、系内トランザクション数がn(n=0,1,2)である確率を求めよ。 4.系内滞在トランザクション数Nの期待値E(N)を求めよ。 5.トランザクションが呼損(loss)となる確率を求めよ。 状態推移図というのは、状態遷移図ってのとは違うのですかね…?全くと言って良いほど分からないのですが…問題も多くてすいません(><)

  • キャッシュミス率の増大2

    キャッシュミス率の増大によって、プロセッサの計算速度が劇的に低下することを具体的な事例を挙げて説明せよ。 という問題です。 実行する命令やデータがキャッシュメモリに入っているなら(これをヒットと言う)、CPUは高速で動作し続けることができる。必要な命令やデータが キャッシュメモリに入っていないときは(ミスヒット)、CPUは低速なDRAMから命令やデータを読み出さなければならず、CPUは処理を一時停止して待 つことになる。ミスヒットが続くと、CPUの処理速度は信じられないほど低下してしまう。だからヒット率の高いキャッシュシステムを実装することは、 CPU設計の最優先課題の1つである。 という答えに行き着きました。合っていますでしょうか?ご教示お願い致します。

  • CPUの使用率

    今日ビデオカメラで撮った映像を編集してパソコンに保存しているとき、 何となくタスクマネージャのパフォーマンス画面を眺めていて、ふと疑問に思ったのですが、 物理メモリが228KBでコミットチャージの合計が380KBとかなりオーバーしていたのに、CPU使用率がずーっと100%なんですよね……。 何が疑問かって言うと、仮想メモリ使っててかなり速度が落ちてるはずなのに、何でCPUは100%なんだろう?っと思ったんです。 データのやり取りが遅くなってるんだから、CPUの速度に対して処理するデータがなかなか送られないんじゃないかな?だからCPUの使用率は100%になったり、低くなったりするんじゃないかな?と。 できるだけわかりやすく書いたつもりなんですが、何かわからなかったら書いてくれれば、補足するのでお願いします。

  • DELL OPTIPLEX GX520 3D遅い

    DELL OPTIPLEX GX520 を使用しております。 建築3DにてSHADEを使用する際、レンダリングが遅いのですが 処理速度を上げるのはどうすれ ば良いでしょうか? システムメモリ システム最大4GB まで増設はしております。 よく グラフィックカードを取り付けるとかいいますが、それで 処理速度は 早くなるのでしょうか?