이 질문의 동기는Mac OS X 커널이 다음을 사용한다는 것을 발견했을 때750MB기억 용량.
나는 20년 동안 Linux를 사용해 왔으며 커널 RAM 사용량이 X에 비해 낮다는 것을 항상 "알고 있었습니다"(이것이 사실입니까? 사실이던 적이 있습니까?).
그래서 몇번의 구글링 끝에 시도해 보았는데 slabtop
결과는 다음과 같습니다.
Active / Total Size (% used) : 68112.73K / 72009.73K (94.6%)
이것은 내 커널이 현재 ~72MB의 RAM을 사용하고 있다는 뜻입니까?
( top
보고된 Xorg
RSS가 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입니다.