アカウント名:
パスワード:
個人ユースのPCで,趣味で分子軌道計算とかやってますが,メモリ256GBとかあっても足りない時はありますね.
それはそうと,実メモリが増えてくると,Swap領域確保とかに問題が生じてきますよね...メモリ容量*2確保しなさい,とは言わなくとも,最近だとどれ位とっておくのがいいのかしら?//swapに512GBとかちょっとシンドイ
商用サーバーなどでは大容量メモリ搭載時におけるスワップ領域をどのくらい取るべきかの話が10年くらい前からはじまってますが用途次第の部分があるのではっきりした指標はないですね
RHELだと
メモリ2GBまでは、メモリ搭載量の2倍(メモリ2GBに対しては、スワップ4GB)そこから増えた分は、増えた分のメモリ量と同じだけスワップを追加(=メモリ搭載量+2GBのスワップということになる)32GBよりもメモリ搭載量が多い場合、メモリ同容量よりも下回っても問題なく動く場合が多い
くらいの書き方で、用途や採用するソフトウェア群の挙動を勘案してインフラ設計のときに決めるケースが多いと思います
性能優先でオンメモリ動作をなるべく維持するために大量メモリを搭載+SSDの構成などでは、(ピークメモリ負荷でも溢れないことは事前確認したうえで)上記よりも少ないスワップにする場合もあります
スワップ領域は結局のところストレージとのI/Oが発生するということを考えると、メモリダンプに必要な最低限の量があればいいということになる。スワップが発生した揚げ句にOOM-Killerが発動すること自体システム設計の失敗だからな。
スワップとか無くてもいいんだけど、いちおう推奨値をって感じですね。発生するようならもう負けですよ。性能問題に発展して、設計が悪いとかになる。
> RHELだと>> メモリ2GBまでは、メモリ搭載量の2倍(メモリ2GBに対しては、スワップ4GB)> そこから増えた分は、増えた分のメモリ量と同じだけスワップを追加(=メモリ搭載量+2GBのスワップということになる)> 2GBよりもメモリ搭載量が多い場合、メモリ同容量よりも下回っても問題なく動く場合が多い
それ古くないですか? RHEL7 でハイバネートを使わない場合だと https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux... [redhat.com] によればメモリ2GBまで: メモリ搭載量の2倍(メモリ2GBに対しては、スワップ4GB)メモリ2GB~8G
某社のHPC用サーバ/WSにインストールしてるLinux、メモリ256GBとかなのにスワップ16GBってアホなんじゃねぇのと思ってる今日この頃。
HPC用でメモリをごりごり使いまくるから積んでるんだから、16GBなんて何かの間違いですぐあふれるじゃんよと。実際「OOMKillerが発動したぞ!」という問い合わせが来たりして目も当てられん。# 中の人なのでAC
って全然ACじゃなーい!
ワロタ。
でもそれって、大きなスワップを作ったとして、遅すぎて困るとかになるんではないですか?延々何時間もディスクアクセスした挙句にOOMKillerとかになったりして。とんでもなく遅くても、結果が出力された方がいいケースって事でしょうか。
それよりも早めにOOMKiller発動させて、「メモリー積んでね」じゃ駄目なんでしょうか。
インターリーブアクセスでメモリ帯域を稼ぐために、モジュール当たりの容量はそれなりでもスロットは全部埋めてるので、基本的に「積んでね」は無いんですよ。
「増設」=「全メモリモジュールを大容量の物に交換」です。しかも、現状でもそこそこ大容量な、お高いRegisterd ECCメモリを、です。さすがにそこまで気合の入ったお客様はなかなか居ませんねぇ。
ボケつっこみ という新しいジャンルが誕生した瞬間!
スワップなんてカーネルダンプに必要な最低限の量があれば十分なんです。何十GBもあっても、ただの無駄です。
swap領域が何に使われるのかを考えればいいのでは。
メモリ不足に対応するなら、システムがクラッシュして止まらない程度にあればいい。スラッシングが発生すれば処理がほぼ停止してしまうので、スワップを際限なく食いつぶす事はない(出来ない)。
メモリマップドファイルのような使い方をするならそれに応じて大量に。
「実メモリと同等かそれ以上」というのはクラッシュ時にフルダンプを出力する事を想定した設定じゃないでしょうか。イマドキの数十GBのメモリのフルダンプを残しても解析のコストが大きいので、通常であればクラッシュ時のフルダンプは残さない事が多いのではないかな、と思います。FreeBSDは既定で dumpdev = off だったような...。
なので、ディスク性能が高ければそれなりに、低ければ、例えば SATA SSD なら 4GBとかページアウトしたら、現実的な時間軸で動いていない状態なんじゃないかなーと思います。
いかがでしょう。
サーバーなら貴コメントの通りでいいのでしょうが、ワークステーションの場合は「現在ユーザーが積極的に使ってないアプリをディスクに追いやって、前面のアプリに潤沢にメモリを供給する」という用途もあると思うのです。
以前のWindows Vistaや7あたりだとスワップアウトのアルゴリズムがアグレッシブすぎて、アプリ切り替え時にディスクが回りまくってストレスがたまることがしょっちゅうでした。その点、Linuxはもっと粘り強くスワップを使わず我慢してくれる感じがありました。あくまで体感ですけど。
今も16GBのMac miniでPhotoshop、Lightroom、Safari、メール、その他を立ち上げっぱなしの状態でParallelsのVMも動かすということをしょっちゅうやってますが、ページアウトなんて日常茶飯事ですよ。でも体感パフォーマンスはほとんど問題なし。
Windows XPまでは、ウィンドウの最小化でワーキングメモリをスワップアウトさせていたそうです。http://d.hatena.ne.jp/odz/20060804/1154669206 [hatena.ne.jp]
アルゴリズムが見直されたのはVistaからのはず。もちろん、その後もいろいろ変わっているのでしょうが。
SSDの普及した今となって、むしろXPくらいに積極的にスワップアウトしたほうがよいかもしれない。
「個人ユース」に分子軌道計算を含めるべきかどうかと言う議論
不毛だな…
趣味なんだから個人ユースだろ
ソフトによってはGPU使わないものもあるのでは?
swapを実メモリの2倍とか言ってたのは、swap容量=Virtualメモリ容量だったからですよ。実メモリというのはVirtual空間のキャッシュとして動作してた。余談ですが、25年くらいまえ、2GBの実メモリを積んだSunOS 4 (まだSolaris2にしないでねばってた)に1GBのswapを設定してたマシンを見たことがあります……
ふつうのページングをつかった仮想記憶では、実メモリ+swap容量がVirtualメモリ容量です。必要なだけswapを取ってください。必要なければ0でもいいんです。(ハイバネーションとかカーネルダンプとかがなければ)
もちろん、ワーキングセット以上に実メモリが必要です。実メモリが不足しだすと(閾値はチューニングパラメータによると思う)、同期的にページアウトするので、実用にはなりません。そのぶんの余裕を見てください。
> 余談ですが、25年くらいまえ、2GBの実メモリを積んだSunOS 4 (まだSolaris2にしない> でねばってた)に1GBのswapを設定してたマシンを見たことがあります……
SunOS 4が動くハードってCPUクロック40MHzとかそんな時代なので実メモリ2GBとか設定間違えてないかと思ったが、SPARCserver 600番代辺りは該当するのか。化物だな。
メモリ256GB載せられる財力があれば、SSD512GBぐらいスワップに取られても楽勝じゃないのか・・・。
私は仮想化のために64GBにしました。dockerもメジャーじゃない頃で8x8ぐらいがPCでは限界でした。
128GBあれば、検証用のOSとか重いIDEとかを丸々RAMディスクに放り込めるのになと思ったことはあります。何度も複数OSのクリーンインストール環境作りたい時に速くていいんですよね。あとは大量トランザクションのパフォーマンス見たい時とか(相対的にザックリと)
今は手持ちのSSDをpcieにして大分速くしたのとRAMディスク作るの面倒でほとんど使ってないです。
弊害の話だとWinでは休止モード用のファイルがメモリ量に応じて勝手に作られる(スワップはそこまでいかない)ので、システムドライブが圧迫されますね。オフにすれば消えます。
Linuxのスワップはメモリが充分なら2倍もいらなかった気はします。用途によるでしょうけど、いつだか読んだ記事では1.5倍とかも見かけましたし。
最近メモリ2TB(Windows10の現時点での上限)積んだPCの稟議書いてました。
そーいや、以前 swapd というパッケージを使っていたのですが、どこ行っちゃったのでしょうかね。わざわざ swap パーティションを作らなくてもいいというのが便利でした。Windows でも似たような仕組みを実装しているように思えるので、いいと思うのです。が、自分じゃ作れないので他力本願ですけど。
科学技術用途でなくてもメモリ不足は結構ありますね。仮想ホストでメモリ景気よく割り当てるとあっという間に128GB位使い切るし。
ちなみにRHEL6.4以降はSWAPはハイバネーションを使わないなら実メモリ8GB以上の場合4GBもあれば十分 [redhat.com]だそうで。
家のマシンはSWAP用にUSB3.0のフラッシュメモリをつけてます。家のマシンはあんまりSWAPまで書き込みに行かないので十分ですね。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「科学者は100%安全だと保証できないものは動かしてはならない」、科学者「えっ」、プログラマ「えっ」
128GBでも足りない (スコア:2, 興味深い)
個人ユースのPCで,趣味で分子軌道計算とかやってますが,メモリ256GBとかあっても足りない時はありますね.
それはそうと,実メモリが増えてくると,Swap領域確保とかに問題が生じてきますよね...
メモリ容量*2確保しなさい,とは言わなくとも,最近だとどれ位とっておくのがいいのかしら?
//swapに512GBとかちょっとシンドイ
Re:128GBでも足りない (スコア:4, 興味深い)
商用サーバーなどでは大容量メモリ搭載時におけるスワップ領域をどのくらい取るべきかの話が10年くらい前からはじまってますが
用途次第の部分があるのではっきりした指標はないですね
RHELだと
メモリ2GBまでは、メモリ搭載量の2倍(メモリ2GBに対しては、スワップ4GB)
そこから増えた分は、増えた分のメモリ量と同じだけスワップを追加(=メモリ搭載量+2GBのスワップということになる)
32GBよりもメモリ搭載量が多い場合、メモリ同容量よりも下回っても問題なく動く場合が多い
くらいの書き方で、用途や採用するソフトウェア群の挙動を勘案してインフラ設計のときに決めるケースが多いと思います
性能優先でオンメモリ動作をなるべく維持するために大量メモリを搭載+SSDの構成などでは、
(ピークメモリ負荷でも溢れないことは事前確認したうえで)
上記よりも少ないスワップにする場合もあります
Re: (スコア:0)
スワップ領域は結局のところストレージとのI/Oが発生するということを考えると、メモリダンプに必要な最低限の量があればいいということになる。スワップが発生した揚げ句にOOM-Killerが発動すること自体システム設計の失敗だからな。
Re: (スコア:0)
スワップとか無くてもいいんだけど、いちおう推奨値をって感じですね。
発生するようならもう負けですよ。性能問題に発展して、設計が悪いとかになる。
Re: (スコア:0)
> RHELだと
>
> メモリ2GBまでは、メモリ搭載量の2倍(メモリ2GBに対しては、スワップ4GB)
> そこから増えた分は、増えた分のメモリ量と同じだけスワップを追加(=メモリ搭載量+2GBのスワップということになる)
> 2GBよりもメモリ搭載量が多い場合、メモリ同容量よりも下回っても問題なく動く場合が多い
それ古くないですか? RHEL7 でハイバネートを使わない場合だと
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux... [redhat.com]
によれば
メモリ2GBまで: メモリ搭載量の2倍(メモリ2GBに対しては、スワップ4GB)
メモリ2GB~8G
Re:128GBでも足りない (スコア:1)
某社のHPC用サーバ/WSにインストールしてるLinux、メモリ256GBとかなのにスワップ16GBってアホなんじゃねぇのと思ってる今日この頃。
HPC用でメモリをごりごり使いまくるから積んでるんだから、16GBなんて何かの間違いですぐあふれるじゃんよと。実際「OOMKillerが発動したぞ!」という問い合わせが来たりして目も当てられん。
# 中の人なのでAC
Re:128GBでも足りない (スコア:1)
って全然ACじゃなーい!
Re: (スコア:0)
ワロタ。
でもそれって、大きなスワップを作ったとして、
遅すぎて困るとかになるんではないですか?
延々何時間もディスクアクセスした挙句にOOMKillerとかになったりして。
とんでもなく遅くても、結果が出力された方がいいケースって事でしょうか。
それよりも早めにOOMKiller発動させて、「メモリー積んでね」じゃ駄目なんでしょうか。
Re:128GBでも足りない (スコア:1)
インターリーブアクセスでメモリ帯域を稼ぐために、モジュール当たりの容量はそれなりでもスロットは全部埋めてるので、基本的に「積んでね」は無いんですよ。
「増設」=「全メモリモジュールを大容量の物に交換」です。しかも、現状でもそこそこ大容量な、お高いRegisterd ECCメモリを、です。さすがにそこまで気合の入ったお客様はなかなか居ませんねぇ。
Re: (スコア:0)
ボケつっこみ という新しいジャンルが誕生した瞬間!
Re: (スコア:0)
スワップなんてカーネルダンプに必要な最低限の量があれば十分なんです。何十GBもあっても、ただの無駄です。
Re: (スコア:0)
swap領域が何に使われるのかを考えればいいのでは。
メモリ不足に対応するなら、システムがクラッシュして止まらない程度にあればいい。
スラッシングが発生すれば処理がほぼ停止してしまうので、スワップを際限なく食いつぶす事はない(出来ない)。
メモリマップドファイルのような使い方をするならそれに応じて大量に。
「実メモリと同等かそれ以上」というのはクラッシュ時にフルダンプを出力する事を想定した設定じゃないでしょうか。
イマドキの数十GBのメモリのフルダンプを残しても解析のコストが大きいので、通常であればクラッシュ時のフルダンプは残さない事が多いのではないかな、と思います。FreeBSDは既定で dumpdev = off だったような...。
なので、ディスク性能が高ければそれなりに、低ければ、例えば SATA SSD なら 4GBとかページアウトしたら、現実的な時間軸で動いていない状態なんじゃないかなーと思います。
いかがでしょう。
Re: (スコア:0)
サーバーなら貴コメントの通りでいいのでしょうが、ワークステーションの場合は「現在ユーザーが積極的に使ってないアプリをディスクに追いやって、前面のアプリに潤沢にメモリを供給する」という用途もあると思うのです。
以前のWindows Vistaや7あたりだとスワップアウトのアルゴリズムがアグレッシブすぎて、アプリ切り替え時にディスクが回りまくってストレスがたまることがしょっちゅうでした。その点、Linuxはもっと粘り強くスワップを使わず我慢してくれる感じがありました。あくまで体感ですけど。
今も16GBのMac miniでPhotoshop、Lightroom、Safari、メール、その他を立ち上げっぱなしの状態でParallelsのVMも動かすということをしょっちゅうやってますが、ページアウトなんて日常茶飯事ですよ。でも体感パフォーマンスはほとんど問題なし。
Re: (スコア:0)
Windows XPまでは、ウィンドウの最小化でワーキングメモリをスワップアウトさせていたそうです。
http://d.hatena.ne.jp/odz/20060804/1154669206 [hatena.ne.jp]
アルゴリズムが見直されたのはVistaからのはず。もちろん、その後もいろいろ変わっているのでしょうが。
SSDの普及した今となって、むしろXPくらいに積極的にスワップアウトしたほうがよいかもしれない。
Re:128GBでも足りない (スコア:1)
「個人ユース」に分子軌道計算を含めるべきかどうかと言う議論
不毛だな…
Re: (スコア:0)
趣味なんだから個人ユースだろ
Re: (スコア:0)
足りないのはGPUのメモリでは?
Re: (スコア:0)
ソフトによってはGPU使わないものもあるのでは?
Re: (スコア:0)
swapを実メモリの2倍とか言ってたのは、
swap容量=Virtualメモリ容量だったからですよ。
実メモリというのはVirtual空間のキャッシュとして動作してた。
余談ですが、25年くらいまえ、2GBの実メモリを積んだSunOS 4 (まだSolaris2にしない
でねばってた)に1GBのswapを設定してたマシンを見たことがあります……
ふつうのページングをつかった仮想記憶では、実メモリ+swap容量が
Virtualメモリ容量です。必要なだけswapを取ってください。
必要なければ0でもいいんです。(ハイバネーションとかカーネル
ダンプとかがなければ)
もちろん、ワーキングセット以上に実メモリが必要です。
実メモリが不足しだすと(閾値はチューニングパラメータによると思う)、
同期的にページアウトするので、実用にはなりません。
そのぶんの余裕を見てください。
Re: (スコア:0)
> 余談ですが、25年くらいまえ、2GBの実メモリを積んだSunOS 4 (まだSolaris2にしない
> でねばってた)に1GBのswapを設定してたマシンを見たことがあります……
SunOS 4が動くハードってCPUクロック40MHzとかそんな時代なので実メモリ2GBとか設定間違えてないかと思ったが、SPARCserver 600番代辺りは該当するのか。
化物だな。
Re: (スコア:0)
メモリ256GB載せられる財力があれば、SSD512GBぐらいスワップに取られても楽勝じゃないのか・・・。
Re: (スコア:0)
私は仮想化のために64GBにしました。
dockerもメジャーじゃない頃で8x8ぐらいがPCでは限界でした。
128GBあれば、検証用のOSとか重いIDEとかを丸々RAMディスクに放り込めるのになと思ったことはあります。
何度も複数OSのクリーンインストール環境作りたい時に速くていいんですよね。
あとは大量トランザクションのパフォーマンス見たい時とか(相対的にザックリと)
今は手持ちのSSDをpcieにして大分速くしたのとRAMディスク作るの面倒で
ほとんど使ってないです。
弊害の話だとWinでは休止モード用のファイルがメモリ量に応じて勝手に作られる(スワップはそこまでいかない)
ので、システムドライブが圧迫されますね。オフにすれば消えます。
Linuxのスワップはメモリが充分なら2倍もいらなかった気はします。用途によるでしょうけど、いつだか読んだ記事では1.5倍とかも見かけましたし。
Re: (スコア:0)
最近メモリ2TB(Windows10の現時点での上限)積んだPCの稟議書いてました。
Re: (スコア:0)
そーいや、以前 swapd というパッケージを使っていたのですが、どこ行っちゃったのでしょうかね。
わざわざ swap パーティションを作らなくてもいいというのが便利でした。
Windows でも似たような仕組みを実装しているように思えるので、いいと思うのです。
が、自分じゃ作れないので他力本願ですけど。
Re: (スコア:0)
科学技術用途でなくてもメモリ不足は結構ありますね。
仮想ホストでメモリ景気よく割り当てるとあっという間に128GB位使い切るし。
ちなみにRHEL6.4以降はSWAPはハイバネーションを使わないなら実メモリ8GB以上の場合4GBもあれば十分 [redhat.com]だそうで。
家のマシンはSWAP用にUSB3.0のフラッシュメモリをつけてます。家のマシンはあんまりSWAPまで書き込みに行かないので十分ですね。