Linux 운영 체제가 사용하는 메모리 양을 확인하는 방법

Linux 운영 체제가 사용하는 메모리 양을 확인하는 방법

Linux 운영 체제가 얼마나 많은 메모리를 사용하고 있는지 알 수 있는 방법을 찾고 있습니다(다른 응용 프로그램의 메모리 크기는 걱정하지 않습니다).

저는 Ubuntu 배포판(Ubuntu 15.10)을 사용하고 있습니다.

답변1

운영 체제 메모리 v. Ubuntu 메모리 v. 커널 메모리

"Linux 운영 체제"에서 사용하는 메모리 양("응용 프로그램"에서 사용하는 메모리 양이 아님)을 묻습니다. "Linux"는 단지 커널입니다(모놀리식 커널은 아니지만 커널 모듈은 공간을 효율적으로 점유하는 데 도움이 됩니다). 최종 사용자가 "운영 체제"로 간주하는 것 중 대부분은 커널의 일부가 아니라 더 큰 Ubuntu 배포판의 일부입니다. 일반적인 데스크탑 설치에서 여기에는 윈도우 시스템(보통 xorg), 윈도우 관리자 및 데스크탑 환경(기본적으로 Ubuntu의 Unity, 다른 것에는 Gnome 및 KDE가 포함됨) 및 기본 작업을 수행하는 기타 전체 호스트가 포함됩니다. 시스템과 상호 작용할 수 있습니다.

최종 사용자에게 "애플리케이션"이라는 단어는 종종 "웹 브라우저", "스프레드시트" 등을 의미합니다. 나는 이것을 "사용자 애플리케이션"이라고 부릅니다.

이를 수행하는 몇 가지 방법이 있습니다.커널 크기 추정, 그러나 Ubuntu가 사용하는 메모리 양을 추정하려면 모든 관련 프로세스(xorg, init 등)를 식별하고 추가해야 합니다. 또 다른 옵션은 top다른 사용자 응용 프로그램이 실행되지 않을 때 와 같은 것을 사용 하고 top터미널 에뮬레이터와 셸에서 사용하는 메모리를 빼는 것입니다.

총 메모리

Linux 시스템의 메모리 사용량을 보는 방법은 여러 가지가 있으며 그 중 일부는 다른 것보다 더 정확합니다. "사용 중인 메모리"에도 다양한 정의가 있습니다. 즉, 대부분의 비기술적인 목적에서는탑(1)일을 훌륭하게 끝낼 것입니다:

top - 17:23:50 up 7 days, 19:15,  3 users,  load average: 0.00, 0.01, 0.05
Tasks: 172 total,   2 running, 170 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.8 us,  0.1 sy,  0.0 ni, 99.1 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   2049992 total,  1735420 used,   314572 free,   372420 buffers
KiB Swap:  2095100 total,      192 used,  2094908 free.   679116 cached Mem

추가 보너스로 다음 질문은 일반적으로 "무엇메모리가 부족합니까? ”, 다음 줄에는 실행 중인 프로세스와 (무엇보다도) 이들이 사용하는 가상 메모리의 양이 표시됩니다.

Linux에서 "사용 가능한" 메모리는 일반적으로 매우 작은 숫자입니다.좋은 것.여유 메모리는 본질적으로 낭비되는 리소스이므로 Linux는 다양한 캐싱 목적으로 이를 할당합니다. 애플리케이션에 해당 메모리가 필요한 경우 Linux는 이를 최대한 활용합니다.

답변2

기본 커널 vmlinuz은 입니다 /boot. "z"는 "z 라이브러리를 사용하여 압축"을 의미합니다. 안타깝게도 압축을 푼 크기를 보려면 압축을 푸는 방법을 모르겠습니다.

또한 @type_outcast에서 언급했듯이 커널은 모듈을 사용하여 하드웨어에 액세스하고 다른 기능을 처리합니다. 자세한 내용은 아래에서 확인하세요 /lib/modules/<version>. 를 사용하여 어떤 모듈이 로드되는지 확인할 수 있습니다 lsmod. 목록에는 Size각 모듈의 크기가 포함된 열이 포함되어 있습니다.

따라서 커널이 사용하는 크기를 알고 싶다면 이는 비교적 가까운 근사치일 것입니다.

또한 메모리 파일도 있습니다. 노력하다 cat /proc/meminfo. 이렇게 하면 두 개의 추가 매개변수인 KernelStack및 가 제공됩니다 Buffers.

또한 프로세스 1과 같은 개별 프로세스에서도 정보를 얻을 수 있습니다. 이것은 커널의 일부로 간주될 수 있는 init 프로세스입니다. 해당 정보는 아래에서 확인할 수 있습니다 /proc/1. 메모리 사용량에는 몇 가지 숫자가 표시됩니다.아래에 설명되어 있습니다. 이 열을 사용 ps -ef | less하고 보면 그러한 하위 수준 프로세스 목록을 찾을 수 있습니다 CMD. 괄호 "[...name...]" 사이에 나타나는 것은 실제로 하위 수준 항목입니다(모듈과 관련된 항목, 실제로는 모듈에서 생성된 작업일 수 있지만 이에 대해서는 확실하지 않습니다). .)

me $ cat /proc/1
46511 1381 790 348 0 37483 0

이 숫자의 측정 단위는 다음과 같습니다.페이지. 대부분의 경우 이는 바이트 단위의 크기를 얻으려면 해당 숫자에 4096을 곱해야 함을 의미합니다.

   /proc/[pid]/statm
          Provides information about memory usage, measured in pages.
          The columns are:

              size       (1) total program size
                         (same as VmSize in /proc/[pid]/status)
              resident   (2) resident set size
                         (same as VmRSS in /proc/[pid]/status)
              shared     (3) number of resident shared pages (i.e., backed by a file)
                         (same as RssFile+RssShmem in /proc/[pid]/status)
              text       (4) text (code)
              lib        (5) library (unused since Linux 2.6; always 0)
              data       (6) data + stack
              dt         (7) dirty pages (unused since Linux 2.6; always 0)

다양한 다른 프로세스에 관심이 있으시면 모든 데이터가 아래에 제공됩니다 /proc.

관련 정보