アカウント名:
パスワード:
個人ユースの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くらいに積極的にスワップアウトしたほうがよいかもしれない。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie
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くらいに積極的にスワップアウトしたほうがよいかもしれない。