メモリ使用量を少なくする方法

dSPACE FAQ 730
FAQ 730
メモリ使用量を少なくする方法
キーワード
致命的なエラー(多くの場合 F99999)、アクセス違反、セグメンテーション違反
質問例
TargetLinkのメモリ使用量を減らすにはどうすればよいですか。
解決方法
1. メモリ使用量に関する予備情報
dSPACEは、リンク集や役に立つヒントを蓄積しています。ただし、これらがすべてのケースで役に立つとは限り
ませんのでご注意ください。まず、メモリ使用量に関する全般的な情報です。

メモリの問題は、使用するコンピュータに依存します。メモリを多く搭載したコンピュータで問題が発
生したにも関わらず、それよりメモリが少ないコンピュータで同じコード生成が問題なく動作したとい
う事例もあります。

物理メモリの量によって左右されるのはコード生成にかかる時間のみであることにご注意ください。メ
モリ使用量に関連する問題は、仮想メモリが原因です。Microsoft Windowsのバージョンによって異な
りますが、各アプリケーションは最大で2 GB(Windows XP)または4 GB(Windows 7、64-bit)の仮想
メモリを使用することができます。その他のオペレーションシステムについての情報は下記を参照して
ください。仮想メモリの最大サイズをチェックし、お使いのマシンで上記の最大値まで仮想メモリを使
用できるかご確認ください。これを行うには、コントロールパネルを開き([スタート – 設定 – コ
ントロールパネル])、[システム]をダブルクリックします。表示されるダイアログで、[詳細設定]タ
ブをクリックします。[パフォーマンス]ペインで、[設定]ボタンをクリックします。表示されるダイア
ログで、[詳細設定]タブをクリックします。[仮想メモリ]ペインで、[変更]をクリックします。ここで、
仮想メモリの初期サイズおよび最大サイズを調整することができます。初期サイズを物理メモリより若
干少なく(たとえば物理メモリが2 GBであれば2046 MB)、最大サイズを4 GBより若干少なく(たとえ
ば4092 MB)設定するのが適正です。

Windowsタスクマネージャのメモリ使用量の情報は、必ず役に立つとは限りません。使用されていない
全メモリ量が表示されますが、メモリが断片化されているかどうかは考慮されていません。TargetLink
はコード生成中に複数回メモリを割り当てます。割り当てられるメモリは、毎回連続している必要があ
ります。使用されていないメモリ量が十分にあっても、メモリ割り当てによっては連続部分のサイズが
十分ではない、ということがあり得ます。Process Explorerは信頼性がはるかに高いツールです。この
ツールは、Microsoftのウェブサイト(http://technet.microsoft.com/jajp/sysinternals/bb896653)からダウンロード可能です。Process Explorerのメニューから、[View –
Select Columns]を選択します。次に、[Process Memory]タブをクリックします。[Private Bytes]およ
び[Virtual Size]の両方を選択し、[OK]をクリックします。これで、プロセスが必要とするメモリ
(Private Bytes)と、そのプロセスが使用しているメモリの実際のサイズ(Virtual Size)を確認で
きるようになります。両者の差分により、どの程度メモリが断片化されているかが分かります。
2. The MathWorks社が提供するヒント
The MathWorks社のウェブサイトにも、役に立つヒントや説明が掲載されています。例:
http://www.mathworks.co.jp/support/tech-notes/1100/1106.html(『Memory Management Guide』)
http://www.mathworks.co.jp/support/tech-notes/1800/1806.html?s_cid=MLD0906de2TS1(『Simulink
Performance & Memory Management Guide』)
How to decrease memory consumption
FAQ バージョン:3 / 2013-02-12
ページ1
dSPACE FAQ 730
初期のMATLAB R13SP1バージョン向けの特記事項は、次のページに掲載されています。
http://www.mathworks.co.jp/support/solutions/en/data/1-1CBKA/?solution=1-1CBKA
The MathWorks社は、以下を推奨しています。

MATLABを-nojvm(no Java Virtual Machine)オプションで起動します。詳細情報については、MATLAB
Help 『List of Startup Options for Windows Platforms』を参照してください。TargetLink 3.0以降
のバージョンでは、TargetLinkのブロックダイアログがJava仮想マシンを必要とするため、この方法は
使用できません。これより前のバージョンのTargetLinkをお使いの場合は、この方法を最初にお試しく
ださい。

ビルドプロセス開始前にライブラリリンクを無効にします。

開いているブロックライブラリをすべて閉じます。

不要なワークスペース変数をすべて削除します。

MATLABを-memmgr fastオプションで起動します。

メモリを浪費する可能性があるアプリケーションをすべて終了します。

packコマンドを使用し、ワークスペース変数が使用しているメモリをデフラグします。

起動実行ファイルbin/matlab.exeを使用せずに、bin/win32/matlab.exeを直接実行することはできませ
ん。この起動実行ファイルは、Windowsがメモリを断片化させるシステムまたはドライバDLLをロードす
ることを回避する特殊な「シールド」技術を使用しています。win32プラットフォームでメモリ不足の
状態が解消されない場合は、“matlab – shield medium”または“matlab – shield maximum”を試し
てください。これらのオプション設定により、起動実行ファイルが連続する使用されていないアドレス
空間をより積極的に確保するようになります。シールドに関する詳細情報については、
http://www.mathworks.co.jp/support/solutions/en/data/1-AS24MF/?solution=1-AS24MFの、8項およ
び9項を参照してください。
3. オペレーティングシステムに関するヒント

Windows XP(32-bit)SP2/SP3のみ:Microsoft Windowsの/3GB起動スイッチを有効にします。Windows
のデフォルトでは、下位の2 GBはユーザモードのプログラム用に、上位の2 GBはカーネルモードのプロ
グラム用に確保されます。この割合を変更し、MATLAB/TargetLinkで使用可能なメモリ量を増加させる
ことができます。これらのオペレーティングシステムを使用している場合、この方法は最も効果が期待
できます。ほとんどのソフトウエア(TargetLinkを含む)は/3GB起動スイッチの環境ではテストされて
いないため、予期せぬ問題が発生する可能性があることにご注意ください。ただし、TargetLinkとこの
起動オプションに関する問題は報告されていません。

さらに、Windows XP(32-bit)SP2/SP3では/USERVA起動スイッチを使用することができます。このオプ
ションは、/3GB起動スイッチを設定しただけではシステムが起動しない場合に必要となります。このオ
プションは、プロセスがドライバ用メモリ空間の確保に使用できるメモリ量を減らします。たとえば、
/USERVA=2990と設定します。The MathWorks社の『Memory Management Guide』は、Microsoft社の記事
『Windows XPおよびWindows Server 2003のBoot.iniファイルで使用可能なスイッチオプション』
(http://support.microsoft.com/kb/833721)を参考にしています。

同じくWindows XP(32-bit)SP2/SP3のみ:moveDLLs.exeツール
(http://www.mathworks.co.jp/support/tech-notes/1100/1106.html)は、サードパーティのDLLを移
動することで、連続するメモリセグメントを増やし、メモリの断片化を防ぎます。
http://www.mathworks.co.jp/support/solutions/en/data/1-1HE4G5/?solution=1-1HE4G5も参照してく
ださい。

Windows Vista(32-bit)および以降のWindowsの32-bit版では、BCDEditでIncreaseUserVAエレメント
を使用します(詳細情報については、
http://en.wikipedia.org/wiki/Windows_Vista_startup_process#Boot_Configuration_Dataを参照して
ください)。

TargetLinkがサポートする64 bitオペレーティングシステムを使用している場合、TargetLinkを32-bit
版のMATLABと同時に実行すると、OSは各プロセスに対して自動的に最大の4GBを割り当てます。さらに、
How to decrease memory consumption
FAQ バージョン:3 / 2013-02-12
ページ2
dSPACE FAQ 730
当社のテストにより、64 bitのオペレーティングシステムはメモリをより効率的に使用するため、メモ
リの断片化が以前の32-bit版のWindowsのように多くはならないことが分かっています。
4. TargetLinkに関するヒント

TargetLinkサブシステム用のコードを一度に生成する代わりに、インクリメンタルコード生成を使用す
ることができます。この機能により、TargetLinkサブシステム内に存在するネストしたサブシステムご
とにコードを個々に生成することが可能です。詳細情報については、『TargetLink量産コード生成ガイ
ド』 、「シミュレーション用アプリケーションのビルド」、「インクリメンタルコード生成」を参照
してください。

バージョン2.3より前のTargetLinkを使用している場合は、バージョン2.3(またはそれ以降のバージョ
ン)へのアップグレードをお勧めします。TargetLink 2.3では、コード生成プロセス全体が最適化され
ました。ただし、メモリ消費量はモデルによって異なることが多いため、任意のモデルに対してメモリ
消費量がどの程度減少するかを断言することはできません。当社のテストモデルでは、TargetLink 2.3
と前のバージョンであるTargetLink 2.2.1を比較した場合、メモリ消費量が平均で約30%減少しました。
ただし、平均分散が大きいことも確認されました。モデルによっては、差がほとんどありませんでした。
しかし、TargetLink 2.3がTargetLink 2.2.1よりもメモリを多く必要とすることはありませんでした。
また、平均分散が大きいということは、メモリ消費量が30%以上減少する可能性があることも意味しま
す。

TargetLink 3.0の新しいBlocksetを導入することで、モデルファイルのサイズが小さくなります。これ
により、以前のバージョンのTargetLinkよりも未使用のメモリの量が若干増える可能性があります。

TargetLink 3.0からは、Simulinkモデルリファレンス機能がサポートされています。Simulinkは、参照
を含むモデルが更新またはシミュレートされるまで、参照先のモデルをホストPCにロードしません
(“インクリメンタルロード“)。インクリメンタルコード生成と同様に、参照先のモデルに対しても
コードを個々に生成することができます。詳細情報については、『TargetLink量産コード生成ガイド』
のモデルリファレンスを伴うコード生成を説明したセクションを参照してください。
関連する FAQs

-
How to decrease memory consumption
FAQ バージョン:3 / 2013-02-12
ページ3
dSPACE FAQ 730
dSPACE へのお問い合わせ
dSPACE Japan 株式会社
Fax:
03-5798-5464
E-mail:
info@dspace.jp
Web:
http://www.dspace.jp
テクニカルサポート :
support@dspace.jp
dSPACE サポートへのお問い合わせ
dSPACE Support Wizard のご使用をお勧めします。dSPACE Support Wizard は以下の方法で入手
可能です。dSPACE DVD に含まれる DiagToolsdSPACESupportWizard.exe
[スタート] ボタン -[プログラム] - [dSPACE Tools](dSPACE ソフトウエアが既にインストールされている場合)
以下のサイトから、いつでも最新の dSPACE Support Wizard をダウンロードすることができます。

http://www.dspace.jp/goto.cfm/ja_sucontact
ソフトウエアのアップデートとパッチ
既存の dSPACE インストレーションに対して、最新のパッチをダウンロードしてインストールすることを強くお勧めします。ソフト
ウエアのアップデートとパッチについては、以下のサイトをご覧ください。
http://www.dspace.jp/ja/jpn/home/support/patches.cfm
http://www.dspace.jp/ja/jpn/home/support/patches.cfm
FAQ
FAQ ドキュメントについては、以下のサイトをご覧ください。
http://www.dspace.jp/ja/jpn/home/support/kb/faq.cfm
http://www.dspace.jp/ja/jpn/home/support/kb/faq.cfm
重要なお知らせ
本出版物には、著作権法により保護された専有情報が含まれています。すべての権利は留保されています。dSPACE GmbH の書面によ
る事前の許可なく、本出版物またはソフトウエアのすべてもしくは一部を、コピー、複製、翻訳、または電子的媒体もしくは機械可
読形式に変換することを禁じます。All rights are reserved.dSPACE GmbH の書面による事前の許可なく、本出版物またはソフトウエア
のすべてもしくは一部を、コピー、複製、翻訳、または電子的媒体もしくは機械可読形式に変換することを禁じます。
© Copyright 2013 by:
dSPACE GmbH
Rathenaustraße 26
33102 Paderborn
Germany
本出版物と内容は、予告なしで変更されることがあります。
dSPACE 製品の登録商標一覧については、以下のサイトをご覧ください。
http://www.dspace.jp/ja/jpn/home/nutzbed.cfm
How to decrease memory consumption
FAQ バージョン:3 / 2013-02-12
ページ4