이 질문은 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 낭비입니다.