커널은 얼마나 많은 RAM을 사용합니까?

커널은 얼마나 많은 RAM을 사용합니까?

이 질문의 동기는Mac OS X 커널이 다음을 사용한다는 것을 발견했을 때750MB기억 용량.

나는 20년 동안 Linux를 사용해 왔으며 커널 RAM 사용량이 X에 비해 낮다는 것을 항상 "알고 있었습니다"(이것이 사실입니까? 사실이던 적이 있습니까?).

그래서 몇번의 구글링 끝에 시도해 보았는데 slabtop결과는 다음과 같습니다.

Active / Total Size (% used)       : 68112.73K / 72009.73K (94.6%)

이것은 내 커널이 현재 ~72MB의 RAM을 사용하고 있다는 뜻입니까?

( top보고된 XorgRSS가 17M인 경우 커널은 이제 그 반대가 아니라 X를 왜소하게 만듭니다.)

랩톱의 "일반적인" 커널 RAM 사용량(범위)은 무엇입니까?

MacOS가 Linux보다 훨씬 더 많은 RAM을 사용하는 이유는 무엇입니까?

추신. 마지막 질문은 여기에 답변되어 있지 않으므로 관련 질문을 참조하세요.

답변1

코어라는 단어는 약간 잘못된 명칭입니다. Linux 커널은 여러 프로세스/스레드 + 모듈( )로 구성되어 있으므로 lsmod완전한 이해를 얻으려면 개별 구성 요소뿐만 아니라 전체 공을 살펴봐야 합니다.

그런데 내 디스플레이 slabtop:

 Active / Total Size (% used)       : 173428.30K / 204497.61K (84.8%)

매뉴얼 페이지에는 slabtop다음과 같이 나와 있습니다.

태블릿 통계 헤더는 실제 메모리를 측정하는 것이 아니라 사용 중인 태블릿 수를 추적합니다. /proc/meminfo 파일의 "Slab" 필드는 사용된 슬래브 물리적 메모리에 대한 정보를 추적합니다.

캐시 삭제

다음으로 내 캐시 삭제@덕로버트 제안귀하의 질문에 대한 의견에서 이것은 나에게 다음을 수행했습니다.

$ sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
$

 Active / Total Size (% used)       : 61858.78K / 90524.77K (68.3%)

Send 3은 다음을 수행합니다. 페이지 캐시, 디렉토리 항목 및 inode를 해제합니다. 나는 U&L Q&A에서 이에 대해 더 자세히 논의합니다.메모리 캐시와 버퍼를 덤프하는 방법이나 도구가 있나요?"그래서 내 110MB는 페이지 캐시, 디렉터리 항목 및 inode에 대한 정보를 유지하는 데만 사용됩니다.

추가 정보

  • 관심이 있으시면 이에 대해 slabtop더 자세히 설명하는 이 블로그 게시물을 찾았습니다. 제목은 다음과 같습니다.오늘의 리눅스 명령어: slabtop.
  • 슬랩 캐싱은 Wikipedia에서 다음 제목으로 더 자세히 논의됩니다.슬래브 분포.

그렇다면 내 커널은 얼마나 많은 RAM을 사용합니까?

사진이 나에게는 약간 흐릿하지만, 여기에 내가 "생각"하는 것이 있습니다.

투수판

이 기술을 사용하여 슬래브 사용에 대한 스냅샷을 얻을 수 있습니다. 본질적으로 우리는 여기에서 이 정보를 추출할 수 있습니다 /proc/meminfo.

$ grep Slab /proc/meminfo
Slab:             100728 kB

기준 치수

또한 다음에서 이러한 값을 추출하여 커널 모듈의 크기 값(디스크 크기인지 RAM 크기인지 확실하지 않음)을 얻을 수도 있습니다 /proc/modules.

$ awk '{print $1 " " $2 }' /proc/modules | head -5
cpufreq_powersave 1154
tcp_lp 2111
aesni_intel 12131
cryptd 7111
aes_x86_64 7758

보드정보

SLAB에 대한 많은 세부 정보는 다음 proc 구조에서 액세스할 수 있습니다 /proc/slabinfo.

$ less /proc/slabinfo | head -5
slabinfo - version: 2.1
# name            <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail>
nf_conntrack_ffff8801f2b30000      0      0    320   25    2 : tunables    0    0    0 : slabdata      0      0      0
fuse_request         100    125    632   25    4 : tunables    0    0    0 : slabdata      5      5      0
fuse_inode            21     21    768   21    4 : tunables    0    0    0 : slabdata      1      1      0

정보

시스템이 부팅되면 Linux 커널이 로드된 후 메모리 사용량을 보고하는 줄이 있습니다.

$ dmesg |grep Memory:
[    0.000000] Memory: 7970012k/9371648k available (4557k kernel code, 1192276k absent, 209360k reserved, 7251k data, 948k init)

인용하다

답변2

이건 어때:

Active / Total Size (% used)       : 4709.24K / 5062.03K

그것은 방금 부팅되어 헤드 없이 실행되는 매우 작은 시스템에 있었습니다.일반 커널. 그래서 많이 걸리지 않습니다.

derobert가 암시했듯이 커널은 캐싱을 위해 사용 가능한 메모리를 활용하며 slabtop이것이 바로 파일 캐싱 외에도 더 이상 사용되지 않는 사용자 공간 프로세스에 대한 공유 가능 메모리와 관련이 있습니다. 커널은 동일한 것이 다시 필요할 때까지 또는 RAM이 적극적으로 필요한 경우 RAM을 잊어버릴 때까지 이를 그대로 둡니다. 비유를 사용하자면, 이는 선반에서 책을 꺼내 테이블 위에 펼쳐서 읽는 것과 같습니다. 읽은 후에 다시 봐야 할 경우를 대비하여 책을 펴서 테이블 위에 올려 놓을 수 있습니다.

답변3

Solaris를 실행하는 이 512GB RAM 서버에서 커널은 25GB를 사용합니다.

Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                    3210102             25078    5%
Anon                     15266226            119267   23%
Exec and libs               41457               323    0%
Page cache                3539331             27651    5%
Free (cachelist)         13799571            107809   21%
Free (freelist)          30093164            235102   46%

Total                    65949851            515233
Physical                 65927406            515057

더 작은 것은 커널이 사용하는 RAM의 절반 이상을 차지합니다.

Page Summary                Pages                MB  %Tot
------------     ----------------  ----------------  ----
Kernel                    2149699             16794   52%
Anon                       517016              4039   13%
Exec and libs               15420               120    0%
Page cache                  21840               170    1%
Free (cachelist)             8768                68    0%
Free (freelist)           1404862             10975   34%

Total                     4117605             32168
Physical                  4096002             32000

걱정하지 마십시오. 사용하지 않는 RAM은 어쨌든 낭비되는 RAM입니다.

관련 정보