2016-10-05 4 views
2

私はMacOS上でVagrantをubuntu64 16.04で使用しています。実行中htop、私はvagrant sshプロセスが事実上530G(VIRT列で)を使用できることがわかります。Htopは "Vagrant ssh"の "VIRT"に "530G"と書いています

バゲントの正常な動作ですか?私は慌てるべきですか? 120Gのディスクと16GのRAMを搭載したMacで、530Gを実際に使用するのは「正常」ですか?あるいは、VIRTの意味を理解できなかったのでしょうか?

迷彩ボックスは仮想ボックスで実行され、1GのRAMしか割り当てられません。 githubchrisrobertsによって

答えて

0

回答:

こんにちは!私はこの振る舞いを再現することができましたが、任意の変則的なコマンドを実行しました。 vagrant sshコマンドは、sshセッションが稼働している間だけプロセスが実行されたままになっているため、この動作を簡単に見ることができます。

下記のtl; drバージョンは単純です:それを心配しないでください。 VIRTにはメモリが割り当てられていません。もしそうなら、あなたは膨大なスワップスペースを必要とするか、何も動かないでしょう。

ここでは何が起こっていますか?迷惑メールのインストーラには、現在の環境を必要な場所の適切な場所にセットアップすることが目的の小さな実行可能ファイル(迷惑メール)が含まれています。インストーラのbinディレクトリ、rubyと他のすべての友達のlibディレクトリ、すべての宝石、そして迷路の宝石自体。これがすべて設定されると、実際のRuby迷惑行為プロセスである新しいプロセスが生成されます。

あなたの例では、浮浪者のsshを参照していたので、以前Kernel.execは、Rubyのプロセスが持続しないという意味が起こる(#7296 (comment))が指摘されたとして、私はそれが犯人だったラッパーである必要があります考え出しました。 (主に「VIRT心配しないでください」と言ってStackOverflowのアイテムを見つけるために)検索のビットの後、私はつまずい:

keybase/keybase-issues#1908

を彼らが主張されているVIRTの束について語っgolangに関するFAQを参照してください。大したことではないが、実際にどのくらいの金額が請求されているかは決して絶対的なものではない。 VIRTの巨大なチャンクを起動したときの起動時のgolangの動作に関して、lwnへのリンクがそこにドロップされましたが(keybase/keybase-issues#1908 (comment))、それでもすべてがローカルで見たよりもはるかに少ない量を参照しました。だから私はgolangのランタイムコードを掘り下げて行くことに決めた、とmalloc.go以内に、我々は答えを見つける:

golang src/runtime/malloc.go

ザ・それが起こっている理由理由放浪を開始するために使用し、外出先ラッパーです。あなたが見るVIRTは単なる予約であり、実際には割り当てられていないので、それは問題ではなく、心配すべきではありません。

(このアプローチの賛否両論には、ゴランMLにはいくつか興味深い話があります。

これは単なるコピー/ペースト(太字のTLDR)です。他人を助けてくれることを願っています。

関連する問題