特定アプリにメモリを割り当てるには

OSXになって、アプリのメモリの割り当てはOSが行うようになりましたが、特定アプリに対してメモリをXX以上割り当てる方法やユーティリティはないでしょうか。OSXはRAMに割り当てている分で足りなければ、仮想メモリを使うと思いますが、なるべくRAMのメモリを多く割り当ててやって、swapによるオーバーヘッドを減らして、動きを良くしたいと思っています。どなたかご存知の方がいましたら、よろしくお願いします。過去ログのココを見ろでも結構です。(ちなみにメモリで検索しても出てきませんでした)できるできない情報でも構いません。
マシン:PM G3 B&W (新G5発表されたら購入予定ですが、アプリがG5未対応です)
RAM: 1GB
OS: 10.3.3

投稿日 2004/04/01 11:59

返信: 16

2004/04/01 12:22 Community User への返信

基本的に全自動と考えてください。割り当てを変更できるのは極一部の
アプリケーション(Photoshop 7 とか)だけです。
参考トピック:
アプリケーションのメモリ割り当て (2003/08/18 2:38pm)

↑で、
>それでも「メモリが足りません」とメッセージが出てしまいました。
とありますが、このメッセージが出た場合は下記のようにアプリケーション側の問題
と考えた方がよさそうです。
http://www.adobe.co.jp/support/downloads/2115.html

2004/04/01 12:38 Community User への返信

個人的には出来てもやらない方が良いと思います。貴重な物理メモリを特定のプログラムで占有してしまうと、他のプログラムに使える物理メモリが少なくなってしまうので、そのプログラムの特性を理解した上で、よほどうまく設定しない事には逆にスワップの頻度が増える事になるかも知れません。
一つのプログラムでも、よく使われる部分とあんまり使われない部分というのがあります。あんまり使われない部分まで物理メモリに乗っかっていても無駄なだけです。ユーザがそこまでうまく設定出来るかというと現実的には無理だと思います。
物理メモリはキャッシュの様な扱いです。よく使うメモリブロックは物理メモリに残ります。残らないのなら、それはメモリの搭載量が少ないのだと思います。
ーーー
特殊な/特別な(カーネルレベルとかドライバレベルとかの)プログラムなどはスワップアウトしない様にしたり出来ると思いますが、それはそう言う作り方をしているからだと思うし。そこまで踏み込んだプログラムを作った事が無いので詳しくは知りませんけど。
ーーー
カスタムアイコンなどでメモリを食いまくっている事があるので、たまにFinderを再起動してあげるのも結構効果がありますよ。Finderを終了させるAppleScriptをメニューバーに登録しておくとか、TinkerToolなんかでcmd+Qを設定しておくとか。

2004/04/03 21:39 Community User への返信

レス遅くなってすみません。
基本的にできないのは十分承知の上で、できたらやりたいということなのです。
まぁ、ほとんど難しいとは思っていました。
ところで、Photoshop7の設定を見たら、最大使用メモリの設定がありました。これのことですね。本当はこれの逆、最小使用メモリの設定が欲しいのです。
でも、この設定、知りませんでした。それを知っただけでも、この質問をして有効でした。

2004/04/03 21:54 Community User への返信

レスおそくなってすみません。
ある特定プログラムに物理メモリを占有させたいのです。もちろん、その場合は、他のアプリ、システム関連のタスクも影響を受けるのは承知の上です。それで、効果がないのなら、あきらめてG5買って、アプリの対応を待ちます。
たしかに、RAM上にあるスレッドすべてが有効でなく、あまり使われないものは、仮想記憶にスワップされるのは分かりますし、そこまでいじる気はありません。カーネル自体が仮想記憶を使っていますから、相当難しいメモリ管理をやっているのだと思います。
もうちょっと、大まかにメモリの割当ができたらなと思っただけです。
メモリ管理で分からないのは、ユーティリティ等で未使用と表示されている部分の内訳が、インアクティブと空きになっているところです。インアクティブはどうゆう状態なのでしょうか。何かの時のためにリザーブされているのでしょうか。300MBも食っています。
特定アプリにメモリを割り当てる方法がないなら、G5を買って、RAMを2GB積んだ状態で、どうなるのか見てみます。ありがとうございました。

2004/04/03 23:57 Community User への返信

>ある特定プログラムに物理メモリを占有させたいのです。
スワップが気になっているという事は、そもそもメモリが足りてないという事なので、物理メモリに固定した所で、悪化はすれど改善するとは思えません。ある局所的な作業をするのに十分な(固定するのに必要な)物理メモリが存在するなら、わざわざユーザがやらなくてもOSが勝手にやってくれます。より賢く。
#mlockとかmulockとかのシステムコールはあるようですが、
#使用するにはroot権限が必要みたいですね。ま、当然か。
>インアクティブはどうゆう状態なのでしょうか。
使われなくなって、解放待ちの領域です。実際に空きメモリが必要とされるまでほったらかしです。アプリケーションの実行コードなどは、(2回目以降の起動時に)再利用される場合もあるらしいです。
詳しくは、Memory Monitorのヘルプをみてください。日本語で解説されてます。

2004/04/05 01:56 Community User への返信

で、現在1GBのメモリーを既に積んでいらっしゃる、と。仰る特定プログラムが
何なのか書かれておりませんから、正確には言えませんが、よほど大きなファイル
を扱うので無く、その「特定プログラム」しか動かさなければ1GBもあれば
物理メモリーは適切に使われている様な気がします。言い換えれば物理メモリーを
固定したところで「動きをよくしたい」は改善しない気がします。大体、
> その場合は、他のアプリ、システム関連のタスクも影響を受けるのは承知の上です
そんなレベルじゃありませんよ(^^; システムがメモリーを管理してナンボですから
固定で占有させたらそりゃOS Xぢゃないですってば(^^;
で、OS 9の頃の感覚でメモリー固定割当ればとお考えになったのかも知れませんが
多分目的のを事を達成するには、メモリー固定ではなくて、それによってスワップ
ファイルがいっぱい出来るならメモリー増設ですし、そうでも無いのならマシン
自体の(CPUだけでは無い全体的な)パワーアップが必要でしょう。
# G5未対応でメモリーをいっぱい食う重い「ある特定プログラム」とは一体???
# それを書かれた方が話が早いのではないかと・・・ (^^;

2004/04/05 14:05 Community User への返信

>固定で占有させたらそりゃOS Xぢゃないですってば
リアルタイム性を要求される物など、プログラムによってはスワップアウトされるとマズい(スワップのオーバーヘッドが致命的な)物もありますので、肝心な部分を(そう言う作り方をして)意図的に固定させる事はあります。
オーディオ周りとかは多分そうでしょうね。CoreAudioはレイテンシ(最大応答遅延時間)が10msでしたっけか。なので、キモの部分はスワップしない様になってるんじゃないですかね。

2004/04/05 19:17 Community User への返信

もださん、突っ込みありがとうございます。
システムがメモリーを管理してナンボですから、ユーザーが自由に(勝手に)個別
の、しかもアプリケーションレベルで、システム全体のバランス無視して、気軽に
固定で占有させたいという発想では、そりゃOS Xを使う意味が無い(恩恵が得られ
ない)っていうかCPUもメモリーも占有させられるOS 9をつかった方が幸せでは
ないかと。言い換えれば、きびきび動かない→(OS 9の様に)手動でメモリー割当
を増やす、ってぇ発想は一般的にはOS Xでは捨てた方が良いのでは、と。
という意味でした。すみません、はしょり過ぎでしたm(__)m

2004/04/05 19:56 Community User への返信

1.もしもメモリが問題ならば、ほかのアプリを終了させてはどうですか? 同時に起動しておかなくてはならないものなのでしょうか? OS X はアプリを複数立ち上げておいてもいい設計になっていますが、立ち上がっているアプリが多ければ多いほど、メモリはそっちにも割り振られますよね。まぁ、当たり前のアドバイスなので、これで問題が解決しないからご相談なさっているのでしょうが。しかし、1GB もメモリが積んであって、メモリ不足なアプリって何でしょう? G5 未対応でヘビーなアプリってことで、勝手に Virtual PC かと推測しましたが。
2.該当アプリの CPU 占有率を変更するのはいかがでしょう? Process Wizard (http://www.lachoseinteractive.net/en/products/processwizard/) というユーティリティがあります。ほかのアプリの占有率を限りなく下げて、Virtual PC 5 に優先的に CPU を割り振ったら、結構速くなりました。
3.高速な HDD と交換なさってはどうですか? スワップファイルの生成が避けられないのであれば、せめてその取り扱いを高速化する、という作戦です。
4.おまけ。もし本当にご使用のアプリが Virtual PC だとすれば、ゲスト OS 毎にメモリを割り振ることができますよね。Windows 2000 に 384MB、とか。これが物理メモリのみを割り振っているのか、スワップも含めているのかは存じませんが。どこかの掲示板で、Win 2000 ならば(VPC 上で XP は速度上現実的な組み合わせではない、とのこと)メモリを割り振れば割り振っただけ速くなるという発言を見たことがあります。その発言者は 512MB 割り振っていましたが。VPC は HDD 周りが遅いし、Win はスワップを多用する OS なので、メモリが少ないと遅い HDD に頻繁にアクセスするようになってしまうらしく、そこを解消してやると、かなりの効果がある、ということらしいです。

2004/04/07 07:23 Community User への返信

みなさん色々ありがとうございます。
G5未対応のソフトとは、Akishigeさんご指摘の通り、Virtual PCです。次バージョンのアナウンスがされているので、もう少ししたら対応すると思います。
VPCでゲストOSが使用するメモリは512MBにしてあります。それでもOSXでのRAMの割り当てが512に到底満たないので、もし強制的に割り当てることができたら、多少は早くなるかと期待したのでした。ただ、できても弊害も多いでしょうから、お試しで終わる可能性大です。
皆さんも書いている通り、メモリ管理はOS9に比べてはるかに良くなっていますし、それをユーザが整合性と持っていじるのは難しいのはわかります。だから、お試しでも試せて、良くなる可能性があるなら、G5でメモリを沢山積めばいいかなと思います。
もださんにインアクティブの説明をしてもらって、メモリの使われ方がわかり、大いに参考になりました。インアクティブはある意味キャッシュのような使い方なんですね。でも、もう少し小さくしてくれると他に回せるでいいような気がします。どちらにしても、OSXはメモリ食いということを再認識したので、G5買ったら最低2GBは積みますが、それでも少ないでしょうね。
皆さんのご指摘で、メモリをいじるのはやはり無理かということなので、スピードアップはG5に期待します。(本当はVPC使わなくてよいように使いたいアプリがMac対応してくれるといいのですが)
いろいろありがとうございました。

2004/04/07 10:59 Community User への返信

>それでもOSXでのRAMの割り当てが512に到底満たないので、
(どこを見てそう判断されたのか解りませんが)それは実際にはそれだけ使われていないからでは?
machカーネルの場合、メモリを要求してもアドレス空間として確保されるだけで、実際にそこにデータを書き込みに行くまでは割り当てがされません。(実際に使う分しか割り当てられない)
#そのマシン、必要になったら声かけるから空けてね。それまでは他の事に
#使っててもいいから。という感じでしょうか。(喩えが古いですけど)
その為、アプリケーションは最初にガバッと要求して、あとは必要なだけ使うという様な富豪的な作り方がされてます。ActivityMonitorやtopコマンドなどで見れば解りますが、VSIZEのところでFinderで300MB、Dockでも200MBほどになってます。Classic環境などでは1GBなんてのもあります。でも実際には(うちの場合)Finderで40MBぐらい、Dockでも20MBぐらいしか使ってないです。(RSIZE)
じゃあ、Finderの結局使わなかった260MBは無駄なのか?と言うとそう言う訳ではないです。実際にはメモリは割り当てられなかったので、最初から無かったのと同じ事です。
>でも、もう少し小さくしてくれると他に回せるでいいような気がします。
他所で必要になれば、そこが解放されて再割り当てされます。一昔前に比べれば有り余る、でも有限の資源(例えばメモリ)を遊ばせておいても無駄なだけです。というのが最近のOSの基本的な考え方です。

2004/04/08 02:37 Community User への返信

あぁ、やっぱりVirtual PCでしたか! それならばキビキビ動かないのを改善
するのは(既に512MB割り当てていらっしゃる事ですし)、メモリーでは無い
と思います。
G5を持ってないのでG5とG3でどれだけ違うかは私には比較出来ませんが、既に
何度もこの件に関してはトピックが立っており、個人的にはVirtual PCのVirtual
な部分自体がパワーアップしないとどうしようもないなぁという風に感じています。
本物のPCもそうなのですが、CPUとメモリーはある一定のモノがあれば普通に
動きます。それ以上に快適に動かすにはシステム全体の速さ(システムバス)と
HDDアクセス、そしてさくさく感に一番効果的なGPUのパワーアップが必要です。
VPCの場合はそのGPUが何世代も前のエミュレーションのままなので尚更遅く、
荷が重い感じがしてならないのだと感じています。HDDへのアクセスも同様。
CPUとメモリーだけが上がったところで他が陳腐なら結果は目に見えてます(^^;
先日Pentium 266MHz, Memory 256MBのNotePCにWinodws2000を入れる
作業を行いましたが、PBG4 1.25GHzのVPC6よりも快適でした(^^; VPC7も
発表された様ですが、Windows XP同梱のパッケージングの様です。ただでさえ
重いWindows XPでは、G5と言えどもどうでしょうか・・・Celeron 500MHz
のPCと同等かそれ以下ぐらいでは無いかなぁと個人的には想像しています。
MSがよほどチューニングしてくれば別ですが。 #戦略的にはしなさそうな・・・
という事で、探せば500MHz以下のNotePCの中古ならかなり安く入手可能です。
使い方にもよりますが、メモリー固定やG5に買い替える事をお考えになるほど
深刻ならば、G4_Cubieさんの仰るようにPCを買っちゃうのもアリではないか
なぁとも思います。
> 本当はVPC使わなくてよいように使いたいアプリがMac対応してくれるといい
> のですが
私もOS Xが出た当初はそういうモノが多かったのですが、今ではよほど特殊な
モノで無い限りそういうモノは無くなりました。探すと意外と目から鱗の代替
ソフトがあるかも・・・。
# 私が知る限りでは「使える」低価格なCADが無いですね、未だに。JW CADの
# 様なのとか。あ、MS Accessも無いか。FileMakerで開発しなおす訳にも行か
# ないしね、MS Accessの場合(^^;

2004/04/08 07:24 Community User への返信

OSXになって、CPUのプロテクトモード(だったけな?忘れました)を使うようになって、各アプリケーションにそれぞれメモリ空間を別々に割り当てられるようなったと記憶しています。つまり、アプリAとBを立ち上げているとき、Aに400M、Bに500Mとか割り当てられると思いました。それをMMUが実メモリに再配置して管理していることになると思います。足りないときは、スワップするのでしょう。
でも、実際はメモリの要求だけで、実際に使っているのは少ないということですか。確かに、今メモリの使用状況を見るユーティリティを入れていますが、実使用は、1つのアプリで数10Mくらいですね。
>machカーネルの場合、...(実際に使う分しか割り当てられない)
実際に使用する分だけメモリを割り当てているとすると、アプリが要求しているメモリが少ないということですね。だとすると、アプリに対するメモリ割り当て(ができたとして)を多くしても、アプリがメモリを使ってくれないので、処理は速くなることはないということでしょうか。アプリの作り方を変えないと変わらないということですね。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

特定アプリにメモリを割り当てるには

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。