프로세스의 실제 메모리 사용량을 얻는 방법(스왑 영역의 데이터 포함)

프로세스의 실제 메모리 사용량을 얻는 방법(스왑 영역의 데이터 포함)

プロセスが実際にシステムにどれだけのメモリ圧力を加えているかを確認しようとしています。しかし、ps友達topは3つの統計だけを報告するので、これはほとんど役に立ちません。

  • RES- 常駐メモリセットには、物理​​メモリのデータページ(スワップアウトページを除く)のみが含まれますが、ロードされた共有ライブラリも含まれます。
  • VIRT- 置換ページ、メモリマップファイル、共有ライブラリなど、カーネルによってメモリにマップされたすべてのページを含みます。
  • SHR- おそらく最も役に立たないでしょう。共有できるライブラリで使用されるメモリのみが含まれていますが、私が理解したところでは、実際にプロセスが使用するメモリを考慮せずに、むしろライブラリの合計サイズを計算します。そのうちのいくつかは実際に住んでいます。

다중 프로세스 컴퓨팅 소프트웨어에서 기존 프로세스와 유사하거나 동일한 공유 메모리/라이브러리를 사용하여 다른 프로세스를 실행하거나 종료함으로써 얼마나 많은 메모리가 사용/해제되는지 알고 싶습니다. 즉, 데이터 세트의 크기를 알아야 합니다. 프로세스에서 사용됨 - 스왑 아웃된 모든 데이터 페이지를 포함하지만 공유 라이브러리, 공유 메모리 페이지, 메모리 매핑 파일 등과 같은 모든 비데이터 페이지는 포함하지 않습니다.

top특정 인코딩은 두렵지 않지만, 해당 정보를 보여주는 내가 몰랐던 대안이 이미 있었다면 좋을 것입니다.

ベストアンサー1

이 스크립트를 살펴보세요https://github.com/pixelb/scripts/commits/master/scripts/ps_mem.py우리는 애플리케이션을 디버깅하기 위해 자주 사용합니다. 이는 간단한 작업이 아니며 때로는 방법이 커널마다 다릅니다.

스크립트 설명에서 다음을 읽을 수 있습니다.

# Try to determine how much RAM is currently being used per program.
# Note per _program_, not per process. So for example this script
# will report RAM used by all httpd process together. In detail it reports:
# sum(private RAM for program processes) + sum(Shared RAM for program processes)
# The shared RAM is problematic to calculate, and this script automatically
# selects the most accurate method available for your kernel.

おすすめ記事