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

이 질문은 Mac OS X 커널이 750MB 의 RAM을 사용한다는 사실을 알게되었을 때 충격을 받았습니다 .

저는 20 년 동안 Linux를 사용해 왔으며 커널 RAM 사용이 X에 의해 왜소하다는 것을 항상 “알고 있습니다”(그렇지 않습니까?

그래서, 인터넷 검색 후, 나는 slabtop나에게 말했다 :

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

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

( 의 RSS를 17M으로 top보고 Xorg한 커널은 이제 다른 방법이 아닌 X를 왜소하게 만듭니다).

랩탑의 “일반”커널 RAM 사용량 (범위)은 무엇입니까?

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

추신. 여기에 마지막 질문에 대한 답변이 없으므로 관련 질문을 참조하십시오.



답변

커널은 약간 잘못된 것입니다. Linux 커널은 여러 프로세스 / 스레드 + 모듈 ( lsmod)로 구성되어 있으므로 전체 그림을 보려면 단일 구성 요소가 아닌 전체 볼을 확인해야합니다.

부수적으로 광산 쇼 slabtop:

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

에 대한 맨 페이지 slabtop도 다음과 같이 말했습니다.

슬랩 탑 통계 헤더는 사용중인 슬래브의 바이트 수를 추적하며 실제 메모리의 척도는 아닙니다. / proc / meminfo 파일의 ‘Slab’필드는 사용 된 슬랩 물리적 메모리에 대한 정보를 추적합니다.

캐시 삭제

귀하의 질문에 대한 의견에서 @derobert이 제안한 대로 내 캐시를 삭제 하면 다음과 같이됩니다.

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

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

3을 보내면 무료 pagecache, dentries 및 inode가 수행됩니다. 이 U & L Q & A에서 제목 : 메모리 캐시와 버퍼를 덤프하는 방법이나 도구가 있습니까? “. 따라서 페이지 캐시, 덴 트리 및 inode에 관한 정보를 유지함으로써 110MB의 공간이 사용되었습니다.

추가 정보

  • 관심이 있으시면 slabtop조금 더 자세히 설명하는이 블로그 게시물을 찾았습니다 . 제목 : 오늘의 Linux 명령 : slabtop .
  • 슬랩 캐시는 Wikipedia에서 제목 : 슬랩 할당 에 대해 자세히 설명합니다 .

커널에서 사용하는 RAM 용량은 얼마입니까?

이 사진은 나에게는 조금 안개가 낀 것이지만 여기에 내가 우리가 알고있는 것들이 있습니다.

투수판

이 기술을 사용하여 Slab 사용량의 스냅 샷을 얻을 수 있습니다. 기본적으로 우리는이 정보를 꺼낼 수 있습니다 /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

Dmesg

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

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

참고 문헌


답변

이것은 어떤가요:

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

일반 커널로 헤드리스로 실행되는 새로 부팅 된 매우 작은 시스템에 있습니다. 따라서 많이 필요하지 않습니다.

derobert 힌트에서 알 수 있듯이 커널은 캐싱에 사용 가능한 메모리를 사용하며이 내용은에서 많이 볼 수 있습니다 slabtop. 파일 캐시 외에도 더 이상 사용하지 않는 사용자 공간 프로세스의 공유 가능 메모리와 관련이 있습니다. 커널은 동일한 것들이 다시 필요할 때까지 또는 RAM이 필요할 때까지 그것을 남겨두고 잊어 버립니다. 비유는 책을 선반에서 꺼내 테이블 위에 놓아 두는 것입니다. 책을 다 읽었을 때 책을 다시보아야 할 경우에 대비하여 책을 열어 놓을 수 있습니다.


답변

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 낭비입니다.


답변