top - 10:43:31 up 8 days, 1:28, 4 users, load average: 0.72, 0.57, 0.44
Tasks: 180 total, 1 running, 177 sleeping, 0 stopped, 2 zombie
%Cpu(s): 8.9 us, 2.1 sy, 0.0 ni, 88.9 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
KiB Mem: 8078124 total, 3815444 used, 4262680 free, 108300 buffers
KiB Swap: 9437180 total, 2448032 used, 6989148 free, 446248 cached
PID USER PR NI VIRT SWAP RES CODE DATA SHR S %CPU %MEM TIME+ COMMAND
3274 root 20 0 160m 4392 6808 2400 80m 1684 S 13.2 0.1 245:09.29 wicd
3451 root 20 0 79684 4900 2328 2400 6124 764 S 7.9 0.0 150:21.43 wicd-monitor
2804 messageb 20 0 30200 232 856 392 756 408 S 6.6 0.0 128:20.46 dbus-daemon
3856 cifer 20 0 411m 7524 28m 2400 150m 5904 S 1.3 0.4 20:34.23 wicd-client
4226 cifer 20 0 1499m 197m 52m 86m 1.0g 6504 S 1.3 0.7 227:24.62 chromium
1087 cifer 20 0 1556m 458m 166m 86m 1.2g 9980 D 2.3 2.1 4:27.35 chromium
ご覧のとおり、物理メモリは8Gですが、3.8Gしか使用していないため、8G空間を超えたことはないと確信していますが、2.4Gスワップ空間を使用するのは休止状態のためです。
ここで、最上位コマンドのVIRT列とSWAP列は、すべてのプロセスがスワップ領域を使用していることを示しています。すべてのプロセスにSWAP列を追加しましたが、2.4Gより少し小さく見えます。
私は正しいですか?休止状態のためにスワップが使用されますか?
また、質問があります。両方のChromeプロセスのVIRT DATA列が高すぎるようですが、これは可能ですか?
答え1
top
マニュアルページを見てください。
o: VIRT -- Virtual Image (kb)
The total amount of virtual memory used by the task. It includes all code,
data and shared libraries plus pages that have been swapped out. (Note: you
can define the STATSIZE=1 environment variable and the VIRT will be
calculated from the /proc/#/state VmSize field.)
VIRT = SWAP + RES.
p: SWAP -- Swapped size (kb)
The swapped out portion of a task's total virtual memory image.
また、以下はArchLinux Wikiの説明です。一時停止と休止状態。
抜粋
- RAMの一時停止方法は、システム状態を復元するのに必要なRAMを除いて、システムのほとんどの部分への電力を除去する。大きなスリープ効果のため、コンピュータがバッテリーで動作していてカバーが閉じているとき(またはユーザーが一定期間活動していない場合)、ラップトップは自動的にこのモードに入ることをお勧めします。
- ディスクの一時停止方法は、システム状態を保存してスペースを交換し、システムの電源を完全にオフにします。本機の電源を入れると状態が回復します。以前は、消費電力はゼロでした。
この意見に基づいて、あなたの論理は正しいと思います。私は通常、休止状態を使用せず、RAMの一時停止方法のみを使用することを選択しているため、スワップ使用量が急増したことを見たことはありません。これは上記を考慮すると意味があります。
はい
$ top
top - 23:40:12 up 15:33, 5 users, load average: 2.49, 2.62, 2.70
Tasks: 307 total, 3 running, 304 sleeping, 0 stopped, 0 zombie
Cpu(s): 47.6%us, 4.6%sy, 0.0%ni, 47.8%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 7987492k total, 7528920k used, 458572k free, 161664k buffers
Swap: 5963772k total, 40156k used, 5923616k free, 1100816k cached
答え2
私はそうは思わない。休止状態は、スワップ空間をデータ記憶領域として使用する以外に、スワップとは無関係です。スワップを無効にして(すべてのスワップパーティション/ファイルのマウント解除)、システムが休止状態になっている場合(小さなウィンドウを使用)、再マウントすることもできます。コース条件の競争)。
つまり、休止状態の前のある時点で、カーネルは、現在実行されていないプログラムの特定のコードページ(または実行されていない部分)を置き換えることがパフォーマンスの面でより合理的であると判断する可能性が高いと思います。最近使用されていない)一部のメモリをデータに使用できるようにします(メモリを割り当てるか、malloc()
ファイルmemmap()
システムのキャッシュのみを使用)。これはあなたの使用パターンによって異なり、交換トレンドを調整することによって制御できます/proc/sys/vm/swappiness
。
答え3
VIRTは、プロセスによって割り当てられた仮想メモリのサイズです。これには、RAMのページ、スワップのページ、他のプロセスと共有されるページ、メモリマップされたファイル、その他のいくつかの種類など、プロセスマップされたすべてが含まれます。
休止状態モードは、すべてのプロセスデータをスワップ空間に書き込むことで動作します。休止状態メカニズム(Linuxでは一部のプロセスを経る)によっては、再開時にデータの一部またはほとんどがスワップ領域に残ることがあります。ページは必要なときにのみ読み込まれるため、回復速度が速くなります。
プロセスがRAM全体を使用しない場合でも、スワッピングが発生する可能性があります。 RAMは、プロセスメモリだけでなく、ディスクキャッシュやバッファにも使用されます。使用可能なRAMの量がワークロードに必要な量にほぼ似ている一般的なシステムでは、RAMの約半分をプロセスで一度に使用し、残りの半分をキャッシュで使用する必要があります。ここではちょうど復元したので、キャッシュはほとんど空になり、すぐにいっぱいになります。