私は2つのプロセスを持っていて、それらのメモリを比較し、どのプロセスがより多くのメモリ消費を持っているかを見つけたいと思います(/proc/[pid]/status
Linuxで使用されています)。しかし、いくつかのフィールドを解釈する方法は混乱しています(意味はありません - 各フィールドが何を表すかを知っています)。
- どちらのプロセスも
VmPeak
4505kBです。これは、同じ量のメモリを使用するという意味ですか?仮想メモリにはRAM、スワップ領域などが含まれているので、これが懸念される領域ですか? VmRSS
プロセスAのサイズは704kB、プロセスBのサイズは740kBです。これは、物理RAMにより多くのメモリが割り当てられるため、プロセスBがより集中的であることを意味しますか?さらに、BはRSSAnon
より高いですが(何らかの方法で考慮する場合)RSSFile
は低いです。VmPTE
- Bには200個の自発的なコンテキストスイッチがあり、Aには1083個があります。これはメモリ消費とどのような関係がありますか?
ここで本当の問題は他の何よりも私の記憶知識不足であるようで無知についてお詫び申し上げます。
答え1
「自発的なコンテキスト切り替え」は、プロセスが自発的にCPUを放棄する場合です。これは基本的にシステムコールが行われるたびに行われます。非自発的な移行は、たとえば、プロセスがリソースを待つ必要があり、CPUを奪うページエラーによって引き起こされます。メモリ使用量には関係ありません。
現在の使用量が最高潮に達しています。しかし、プロセスがほとんどの実行時間中に1MiBを使用し、時には短い期間に4MiBで最高値に達するか、3MiBを継続的に使用する場合、状況は明らかに非常に異なります。これは誤解を招く。プログラムは4MiBを割り当てることができますが、残りは実際には1MiBをアクティブにします。その部分はあまり差なく交換が可能です。
正確に何を達成しようとしていますか?分割しようとするよりも、実際に関心のあるパフォーマンスデータを測定して比較する方が良いです。